MAVLINK INTERNALS
Understanding the data stream. Message definitions, stream rate optimization, and ELRS bandwidth management.
Core Architecture
MAVLink FTP
MAVLink FTP ([File Transfer Protocol](/field-manual/mavlink-interface/file-transfer-protocol.html)) allows a Ground Control Station to interact wit...
MAVLink Flow Control & Throttling
ArduPilot uses a "Pull-Based" flow control system. Instead of blindly pushing messages into a buffer and hoping for the best, the scheduler explici...
MAVLink Routing
ArduPilot does not just consume MAVLink data; it acts as a **Packet Switch** (Router). If you connect a telemetry [radio](/field-manual/mavlink-int...
MAVLink Scheduler & Stream Rates
You set `SR1_POSITION` to 50Hz, but your telemetry log shows only 10Hz. Why? The answer lies in the **MAVLink Scheduler**. ArduPilot uses a sophist...
MAVLink Serialization Architecture
MAVLink is designed for a specific hostile environment: **Low-Bandwidth, High-Latency, Unreliable Serial Links** (e.g., 57600 baud telemetry radios...
MAVLink2 Signing & Security
Standard [MAVLink](/field-manual/mavlink-internals/mavlink-routing.html) is unencrypted and unauthenticated. Anyone with a [radio](/field-manual/ma...
On-Demand Streaming (MAVLink)
Modern Ground Control Stations (like QGroundControl) and custom apps (like MAVLink HUD) don't rely on the static `SRx_` parameters. Instead, they u...
The Mission Item Protocol
Uploading a mission (Waypoints) is a critical operation that requires 100% data integrity. Unlike telemetry (where dropping a packet is fine), drop...
The Parameter Protocol
Downloading parameters is often the slowest part of connecting a Ground Control Station (GCS). ArduPilot manages over 1000 parameters. Dumping them...