# QGroundControl: A Cross-Platform Ground Station for MAVLink Drones

> QGroundControl is an Apache-2.0 ground control station for PX4, ArduPilot and other MAVLink vehicles, shipped for Windows, macOS, Linux, Android and iOS. It is the default choice for PX4 users and a weaker fit for teams that need a Windows-only workflow or a custom operator interface.

**mavlink/qgroundcontrol** — Cross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows).

- Repository: https://github.com/mavlink/qgroundcontrol
- Website: http://qgroundcontrol.io
- Stars: 4,982 · Forks: 5,074
- Language: C++
- License: Apache-2.0
- Published: 2026-08-04 · Updated: 2026-08-18 · Language: en
- Canonical page: https://hysenlabs.com/projects/mavlink-qgroundcontrol

## What QGroundControl Is and Who It Serves

QGroundControl, usually shortened to QGC, is a ground control station for UAVs. The README describes it as providing "full flight control and mission planning for any MAVLink-enabled drone, including PX4 and ArduPilot platforms." That sentence defines both the scope and the audience. If your vehicle speaks MAVLink, QGC is designed to talk to it; if it does not, QGC has nothing to offer.

The practical user is someone who owns or operates a drone built on PX4 or ArduPilot and needs more than a transmitter. Mission planning, sensor calibration, parameter editing, log download and live telemetry all live in the same application. The cross-platform claim is not marketing filler: the same codebase produces Windows, macOS, Linux, Android and iOS builds, and the README lists prebuilt installers for each of the first four. That matters for field work, where the operator may be holding an Android tablet while the developer is on a Linux workstation.

The second audience is developers. The repository carries a developer guide, build instructions, CODING_STYLE.md, a justfile with build commands, and an AGENTS.md file describing build, test and lint conventions. QGC is not only an application you download; it is also a Qt/QML codebase you can compile and extend.

## Mission Planning, the Fact System and MAVLink Tooling

The feature list in the README maps closely onto what the application actually exposes. Mission planning covers waypoint, survey and structure-scan missions, which are three different planning problems sharing one editor. The Fly View is the live display: map, instruments and vehicle telemetry in real time. Vehicle setup is a set of guided wizards for sensor calibration, radio, flight modes and power.

The most interesting mechanism named in the README is the Fact System. Parameter tuning is described as inspecting and editing "every vehicle parameter through the Fact System." This is the layer that makes QGC more than a telemetry viewer. Vehicle parameters are exposed as facts that the interface can bind to, which is why the same application can present parameter editors for different autopilot families without a separate screen for each. The README does not document the Fact System's internals, so treat that as a design hint rather than a specification.

MAVLink tooling is the third pillar: a MAVLink Inspector, a console, and log download and analysis. For anyone debugging a link or a misbehaving autopilot, the inspector is the reason to keep QGC open next to the flight view. Multi-vehicle support and GStreamer-based UDP RTP or RTSP video with recording round out the list. Video is worth flagging: the README names GStreamer specifically, which tells you the pipeline is not a generic webcam capture path.

## Installing QGroundControl on Windows, macOS, Linux and Android

For ordinary use, installation is a download. The README points at the releases page and lists four assets: an installer for Windows, a .dmg for macOS, an x86_64 AppImage for Linux, and an .apk for Android. There is no package repository step described in the README, so the AppImage is the Linux path it documents, not a distro package.

```bash
# Linux: the README points to the AppImage asset on the releases page
chmod +x QGroundControl-x86_64.AppImage
./QGroundControl-x86_64.AppImage
```

After launching, the first real task is connecting a vehicle. QGC connects over the MAVLink link your autopilot exposes; the README does not enumerate ports or baud rates, so use the connection dialog the application presents rather than a value copied from here. Once connected, the Fly View should show telemetry and the map should follow the vehicle. If nothing appears, the MAVLink Inspector is the place to look, because it shows whether frames are arriving at all.

Building from source is a different exercise. The justfile states that `apt install just` on Ubuntu ships version 1.21, which it calls too old, and recommends `python tools/setup/install_python.py dev` or installing just via brew or cargo. The build commands read configuration through `tools/setup/read_config.py`, including the Qt version and the minimum CMake version.

```bash
python tools/setup/install_python.py dev
just
```

The first command pulls rust-just into tools/.venv according to the justfile comment; the second lists available commands rather than building, since the default recipe is `just --list --unsorted`. Build output goes to a `build` directory with per-configuration subdirectories, and the executable path differs per host: `build/Debug/QGroundControl.exe` on Windows, an `.app` bundle on macOS, and `build/Debug/QGroundControl` elsewhere.

## Where QGroundControl Is the Wrong Tool

The README's own framing sets the first boundary: QGC is for MAVLink-enabled drones. A vehicle with a proprietary, non-MAVLink telemetry protocol is out of scope, and no amount of configuration changes that.

The second limitation is subtler and comes from the cross-platform promise. A single codebase covering Windows, macOS, Linux, Android and iOS has to make compromises somewhere. The justfile shows the build is Qt-based and version-pinned through a configuration file, and the repository carries separate .clang-format, .clang-tidy, .clangd, .qmllint.ini and .qmlformat.ini files. That is a substantial toolchain to satisfy before you can produce a build. If your goal is a small custom operator interface, adopting QGC as a framework means adopting that toolchain and its Qt dependency, which is a large commitment for a narrow need.

Third, the README documents the application's capabilities but not its operational limits. There is no statement about maximum vehicle count, link latency, or the conditions under which video recording degrades. Anyone planning a high-vehicle-count operation should verify those numbers against the user manual rather than assume the multi-vehicle feature scales without bound. The README is silent here, and silence is not a guarantee.

Finally, if you already run a working Windows-only ground station and never leave Windows, QGC's main differentiator is wasted on you. You would be trading a known setup for a new one to gain portability you do not use.

## QGroundControl vs Mission Planner: Different Autopilot Roots

The most common comparison is QGroundControl against Mission Planner. The honest difference is lineage. QGC is built around MAVLink as a general protocol and lists PX4 and ArduPilot together; Mission Planner grew out of the ArduPilot ecosystem. In practice this shows up in defaults: which autopilot's conventions the setup wizards assume, which parameters get surfaced first, and which community you will find when something breaks.

The second difference is platform reach. QGC ships for Windows, macOS, Linux, Android and iOS from one codebase, with the README listing installer, dmg, AppImage and apk assets. A Windows-only ground station does not follow you onto a tablet in the field. If your workflow involves an Android device at the flight line, that is a concrete reason to pick QGC regardless of autopilot preference.

The third difference is extensibility. QGC is a Qt/QML application with a documented developer guide, a justfile, coding style documents and a contribution workflow, and it is licensed Apache-2.0. If you plan to fork and modify the ground station, the licence and the build documentation are part of the comparison, not an afterthought. Mission Planner is not discussed in this repository's README, so nothing here should be read as a claim about its internals.

## Licensing, Releases and What Upgrades Cost

QGroundControl is licensed Apache-2.0, and the repository also carries a LICENSE-GPL file alongside LICENSE-APACHE. The README links to a COPYING.md for the licence text. Apache-2.0 is permissive and includes a patent grant; the presence of a second licence file in the tree is worth reading before you redistribute a modified build, because it signals that not every part of the repository is necessarily under the same terms. That is a question for your own legal review, not something this article can settle.

The documentation site is a separate concern: package.json names the project `qgc_vitepress_docs` and declares its licence as CC-BY-4.0. Documentation and application code are therefore under different licences, which matters if you intend to reuse the docs.

Release cadence is visible from the tags. v5.1.0 was tagged as a release candidate, v5.1.2 as release candidate 2, and v5.1.3 as the stable V5.1 build, with the last push to the repository on 2026-08-20. The gap between the first candidate and the stable tag is roughly three weeks, which suggests a short stabilisation window rather than a long beta. Upgrading means replacing an installer or AppImage; the README does not document a migration path for settings or parameters between major versions, so back up anything you cannot re-enter before jumping a major version. The README also does not document rollback, which is a real gap if you deploy QGC to a fleet of operator machines.

## Conclusion

QGroundControl suits PX4 and ArduPilot operators who want mission planning, calibration wizards and MAVLink inspection in one cross-platform application, and teams that need a ground station on a tablet as well as a laptop. It is a poor fit if you only fly one autopilot family and already have a working Windows-only setup, or if you need an operator interface that you control down to the widget. Before committing, confirm two things: that the release asset for your platform is the one you expect, and that your video pipeline matches the GStreamer-based UDP RTP or RTSP path the README describes. If you intend to modify QGC rather than use it, read the build instructions and AGENTS.md first, because the justfile expects a recent just and a specific Qt version.

## FAQ

### What is QGroundControl used for?

It is a ground control station for MAVLink-enabled drones, providing flight control and mission planning for platforms including PX4 and ArduPilot. Its features include mission planning, a live Fly View, vehicle setup wizards, parameter tuning, video streaming and MAVLink tooling.

### Is QGroundControl free and open source?

Yes. The repository is licensed Apache-2.0, and the README states that QGC is open source and welcomes contributions. The documentation site in the same repository is declared CC-BY-4.0 in package.json.

### What is the difference between Mission Planner and QGroundControl?

QGroundControl is built around MAVLink and lists both PX4 and ArduPilot support, while Mission Planner comes from the ArduPilot ecosystem. QGC also ships for Windows, macOS, Linux, Android and iOS from a single codebase, which a Windows-only ground station does not.

### How do I install QGroundControl on Linux?

The README points to the releases page, where the Linux asset is an x86_64 AppImage. Make it executable and run it directly; the README does not describe a distribution package for Linux.

### How do I connect my drone to QGroundControl?

QGC connects over the MAVLink link your vehicle exposes. The README does not list ports or baud rates, so use the connection dialog in the application, and check the built-in MAVLink Inspector if no telemetry appears.

## Sources

- [Official documentation](http://qgroundcontrol.io)
- [Official README](https://github.com/mavlink/qgroundcontrol#readme)
- [Project repository](https://github.com/mavlink/qgroundcontrol)
- [Release notes](https://github.com/mavlink/qgroundcontrol/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/mavlink-qgroundcontrol
