ArduPlane, ArduCopter, ArduRover, ArduSub source
How ArduPilot, MAVLink, and Ground Control Stations Fit Together
A practical guide for routing ArduPilot MAVLink telemetry to primary GCS applications and MAVProxy companion nodes.
architecture Reviewed 8/12/2026
Problem definition
How do I route MAVLink packets from an ArduPilot vehicle to both a primary GCS (Mission Planner or QGroundControl) and an external companion computer or secondary link using MAVProxy?
Steps
- Set Serial Port Protocol Parameters
Configure SERIAL1_PROTOCOL=2 (MAVLink2) and SERIAL1_BAUD=57 for physical telemetry, or SERIAL2_PROTOCOL=2 for companion computer connections.
- Launch MAVProxy for Packet Routing
Run MAVProxy to multiplex telemetry streams: mavproxy.py --master=/dev/ttyUSB0,57600 --out=127.0.0.1:14550 --out=127.0.0.1:14551 to serve both GCS and companion APIs simultaneously.
- Connect Ground Control Station
Open QGroundControl or Mission Planner and bind to UDP 14550. Confirm stream rates using MAVLink SRx_* parameters.
Guide
ArduPilot MAVLink Architecture
ArduPilot generates MAVLink messages across internal threads and routes them through configurable SERIALx_PROTOCOL parameters to radios or software bridges like MAVProxy.
Judgment criteria
- MAVProxy routes clean telemetry streams to multiple target UDP ports without message collision.
- ArduPilot parameter download succeeds on all attached ground stations.
Common risks
- Setting SERIALx_PROTOCOL to 1 (MAVLink1) restricts bandwidth efficiency and disables extended message IDs.
- Misconfiguring baud rates between flight controller hardware serial ports and telemetry radios.
Checklist
Related technical resources
Marshalling / communication library for drones.
Cross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)
Show 7 more keywords
MAVLink proxy and command line ground station