MAVLink 1 uses a fixed 8-byte header with a maximum payload of 255 bytes. It supports message IDs 0–255 and has no signing or extension fields. The start byte (magic) is 0xFE.
MAVLink 2 extends the protocol with a 14-byte header (plus optional 13-byte signature). It supports 24-bit message IDs (over 16 million), payload truncation of trailing zero bytes, and incompatibility / compatibility flags for negotiation. The start byte is 0xFD.
text
MAVLink 1 overhead: 8 bytes (header) + 2 bytes (checksum) = 10 bytes
MAVLink 2 overhead: 10 bytes (header) + 2 bytes (checksum) + 2 unused = 14 bytes
+ optional 13 bytes (signature)Backward compatibility
MAVLink 2 implementations can parse v1 packets. During connection setup, systems send v1 heartbeats and upgrade to v2 once both sides confirm support. The incompat_flags field lets a receiver know if it cannot safely decode the packet.
The most impactful v2 addition is message signing, which appends a SHA-256-based signature to prevent spoofing. Combined with timestamp replay protection, this makes MAVLink suitable for security-sensitive deployments.