PX4 Autopilot Software
How PX4, MAVLink, and QGroundControl Fit Together
An architectural guide explaining how PX4 firmware, MAVLink telemetry protocol, and QGroundControl ground station interact across networks.
architecture Reviewed 8/12/2026
Problem definition
Engineers integrating a UAV software stack need to understand how firmware state, communication protocols, and ground stations exchange telemetry, parameter configurations, and mission commands across physical and simulated network boundaries.
Steps
- Map the Firmware Protocol Interface
Inspect the PX4 mavlink module configuration. PX4 internal state operates on the uORB publish-subscribe bus. The mavlink module subscribes to uORB topics (such as vehicle_attitude or vehicle_global_position) and serializes them into standardized MAVLink packets.
- Configure Transport and UDP/Serial Port Bindings
Confirm transport endpoints. By default in SITL: UDP 14550 is reserved for ground control stations (QGroundControl), UDP 14540 for offboard APIs (MAVSDK/DroneKit), and UART/Serial for hardware telemetry radios.
- Inspect Protocol Dialect and Version Framing
Verify protocol version negotiation. PX4 defaults to MAVLink v2.0 framing. Ensure intermediate telemetry links and ground stations do not downgrade packets to MAVLink v1.0, which lacks packet signatures and extended IDs.
- Establish Bidirectional Session with Ground Control
Launch QGroundControl. QGroundControl listens on port 14550. Once it receives the first HEARTBEAT packet (Message ID #0), it emits a request to fetch the firmware parameter list (PARAM_REQUEST_LIST) and mission protocol items.
Guide
Architectural Overview
PX4 firmware exposes internal uORB topics to the MAVLink module, which packages telemetry and parameter streams over UDP/serial links to QGroundControl.
Judgment criteria
- QGroundControl displays active connection telemetry and completes parameter download within 5 seconds of boot.
- Bidirectional MAVLink 2 frames pass without framing errors or dropped packet warnings in the console.
Common risks
- Running multiple SDK instances or ground control sessions simultaneously on port 14550 causes socket binding failures.
- Overloading a low-bandwidth serial telemetry link (57600 bps) with high-frequency MAVLink streams leads to buffer overflow.
- Adding a custom uORB topic in PX4 firmware without wiring it into mavlink_messages.cpp prevents over-the-air transmission.
Checklist
Related technical resources
Marshalling / communication library for drones.
Cross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)