Read MAVLink — with a verified CRC.
MAVLink runs between flight controller, telemetry radio and companion computer. Trace listens on the serial telemetry line, recognises v1 and v2 frames, verifies the CRC including CRC_EXTRA for the decoded messages and splits the most important messages into their fields.
No mail app set up? Write directly to support@trace-analyzer.net.
Access is currently free and granted on request.
- ✓ v1 (0xFE) and v2 (0xFD)
- ✓ CRC with CRC_EXTRA verified
- ✓ 4 messages field by field
- ✓ 10 message IDs named
From the wire to the telegram.
A HEARTBEAT and a GPS position, both MAVLink v1 — exactly as Trace decodes them on the telemetry line.
Trace currently shows latitude, longitude and altitude as raw hex values: 0x1DCD6500 = 500000000 × 1e-7° = 50.0°, 0x000186A0 = 100000 mm = 100 m.
MAVLink as it is on the wire.
CRC including CRC_EXTRA
For every message, MAVLink folds a byte into the CRC that never appears on the wire. Trace knows it for the decoded messages and verifies the full checksum — a frame with a mismatched field layout stands out.
v1 and v2 in one stream
The definition tells both versions apart by their start byte, reads the v2 flags and skips an attached signature correctly.
Messages field by field
HEARTBEAT, SYS_STATUS, GPS_RAW_INT and ATTITUDE are split into their fields, with plain text for vehicle type, autopilot, system status and GPS fix. You add further messages in the definition.
- SearchFull-text search across all telegrams, even in the live stream.
- RecordingRaw bytes and the finished interpretation in one .msf file.
- Multiple portsSeveral interfaces in one session, on a shared timeline.
- RemoteProbe at the machine, analysis in the browser — no inbound port.
What is still missing.
So you don't have to find the limits by trying:
- Four messages in full. Ten message IDs are named; all others appear as a payload block, and their CRC is shown but not verified.
- No floating-point or signed values. Angles, latitude and longitude are shown raw (hex or unsigned). Field names and boundaries are correct.
- v2 edge cases. Messages with an ID of 256 or higher are not split into fields. Truncated v2 payloads (trailing zero bytes omitted) can shorten the last fields. The signature is read but not verified.
- Serial lines only. Trace does not capture MAVLink over UDP or TCP — from SITL or a ground station, for example.
One CRC check for every message.
The CRC calculation appears once in the definition. Each message only supplies its CRC_EXTRA — so a new message takes just a few lines.
<struct name="crc_check"> <calc name="Crc" type="CRC" width="16" poly="0x1021" init="0xFFFF" reflectIn="true" reflectOut="true" xorOut="0x0000" byteOrder="little" resultType="word" appendValueRef="CrcExtra" from="1" to="-1" /> <const ref="Crc" validate="true" name="CRC" /> </struct> <struct name="msg_heartbeat"> <struct sizeRef="LEN" name="HEARTBEAT"> <dword name="custom_mode" /> <byte name="type" valuedescriptor="mav-type" /> <!-- … --> </struct> <var value="50" name="CrcExtra" /> <struct ref="crc_check" /> </struct>
Frequently asked questions
What is CRC_EXTRA, and why does it matter?
A byte derived from a message's definition that enters the CRC without being sent. If sender and receiver use different message layouts, the CRC does not match — the error becomes visible instead of producing wrong values. HEARTBEAT, for example, has CRC_EXTRA 50.
Where do I connect Trace?
To the serial telemetry line, for instance between flight controller and radio or companion computer. A USB serial adapter listens with its receive input on one transmit line. For both directions you use two ports — Trace shows them on one timeline.
Do I need hardware to try it?
No. To try it, an excerpt from an existing hex capture is enough. For live use, the Trace probe runs on the computer the interface adapter is plugged into.
Try MAVLink with Trace.
Tell us briefly what you are measuring. We will enable your access — and whatever you find missing goes straight into development.
No mail app set up? Write directly to support@trace-analyzer.net.