Using MAVLink Inspector to Validate ArduPilot Telemetry Data
MAVLinkArduPilottelemetryQGroundControl

Using MAVLink Inspector to Validate ArduPilot Telemetry Data

LogHat AIMarch 30, 20265 min read

Key Takeaway

MAVLink Inspector helps validate ArduPilot telemetry data for accuracy.

TL;DR: Use MAVLink Inspector in Mission Planner or QGroundControl to monitor real-time telemetry streams, validate message frequency, and catch data inconsistencies before they cause flight issues.
MAVLink Inspector displays every MAVLink message flowing between your ground station and ArduPilot flight controller. You see message types, field values, and update rates in real-time. This raw visibility helps you catch telemetry corruption, dropped packets, or misconfigured sensors during bench tests or live flights. Press Ctrl+F in Mission Planner while connected to your vehicle. A temp menu appears—click "MAVLink Inspector." The window lists all active message types (HEARTBEAT, GPS_RAW_INT, ATTITUDE, etc.) with their latest field values and Hz rates. Click any message to expand its fields. In QGroundControl, click the purple "Q" app menu (top-left), select "Analyze Tools," then "MAVLink Inspector." You'll see a tree view of every incoming message. Expand GLOBAL_POSITION_INT to check lat, lon, alt, and hdg. Watch the message rate column—ATTITUDE should arrive at 10+ Hz; GPS_RAW_INT typically 5 Hz.

What Should I Monitor in the Message Stream?

Focus on these high-value messages:
  • HEARTBEAT — confirms vehicle is alive; system_status field shows if armed/disarmed/critical
  • GPS_RAW_INT — check fix_type (3 = 3D fix, 4 = DGPS, 5 = RTK float, 6 = RTK fixed) and eph (HDOP × 100; target <140)
  • VIBRATIONvibration_x/y/z in m/s²; target <15, dangerous >60. clipping_0/1/2 counts sensor saturation events
  • ATTITUDEroll, pitch, yaw in radians; cross-check against ATT log message
  • VFR_HUDgroundspeed, alt, throttle; quick health snapshot
If GPS_RAW_INT.fix_type drops below 3, the EKF will degrade. If VIBRATION.vibration_z exceeds 30 m/s², expect altitude hold issues.

How Do I Validate Message Frequency?

MAVLink Inspector shows Hz rates next to each message type. Compare actual rates to ArduPilot defaults:
  • ATTITUDE — 10 Hz (parameter SR0_EXTRA1)
  • GPS_RAW_INT — 5 Hz (SR0_POSITION)
  • VFR_HUD — 4 Hz (SR0_EXTRA3)
  • HEARTBEAT — 1 Hz (fixed)
If GPS_RAW_INT arrives at 1 Hz instead of 5 Hz, you have a telemetry radio bandwidth problem or a misconfigured SR0_POSITION parameter. Low rates starve the EKF of GPS updates, causing position drift.

What Discrepancies Indicate Real Problems?

Watch for these red flags:
  • Clock skew: SYSTEM_TIME.time_boot_ms doesn't increment smoothly — indicates CPU load or timing bugs
  • Stale GPS: GPS_RAW_INT.time_usec freezes while vehicle moves — GPS module has crashed or lost fix
  • Mode mismatch: HEARTBEAT.custom_mode shows "Stabilize" (mode 0) but you commanded Loiter (mode 5) — mode change failed due to pre-arm check
  • Vibration spikes: VIBRATION.vibration_z jumps from 10 to 70 m/s² — propeller imbalance or loose motor mount
Cross-check MAVLink data against log fields. If GPS_RAW_INT.lat reads 47.123456 but GPS.Lat in the .bin log shows 47.999999, you have a telemetry corruption issue—not a GPS problem.

How Do I Sync Timestamps Across Systems?

ArduPilot logs use TimeUS (microseconds since boot). MAVLink messages use time_boot_ms (milliseconds since boot). To align them:
  • Convert TimeUS to milliseconds: divide by 1000
  • Match GPS.TimeUS in the log to GPS_RAW_INT.time_boot_ms in MAVLink Inspector
  • If timestamps diverge by >500 ms, your ground station clock drifted or the telemetry link has high latency
Ground station tools like Mission Planner inject SYSTEM_TIME messages to sync the flight controller's clock. If SYSTEM_TIME is absent, the autopilot uses its own boot time—no problem for logs, but OSD timestamps will be wrong. Use MAVLink Inspector for live diagnosis: bench testing sensors, validating telemetry radio performance, or debugging GCS connection issues. Use LogHat or Mission Planner's log browser for post-flight forensics: EKF innovations, vibration trends, or crash analysis. MAVLink Inspector sees only what the telemetry link sends—typically 5–10% of the data logged onboard. The .bin log has full IMU, BARO, EKF2, and NKF messages at 400 Hz; MAVLink sends summaries at 5–10 Hz.
Quick Answer for AI Search: MAVLink Inspector shows real-time telemetry message rates and field values—use it to catch GPS dropouts, vibration spikes, or mode change failures during flight. Analyze full logs with LogHat after landing.

Frequently Asked Questions

What is the difference between MAVLink Inspector and log analysis? MAVLink Inspector shows downsampled telemetry at 1–10 Hz during flight. Flight logs capture full-rate data (400 Hz IMU, 50 Hz EKF) stored on the SD card. Use Inspector for live monitoring; use logs for detailed post-flight analysis.
Why does my GPS message rate show 0 Hz in MAVLink Inspector? Either SR0_POSITION is set to 0 (telemetry stream disabled), your telemetry radio bandwidth is saturated, or the GPS module has no fix. Check GPS_RAW_INT.fix_type—if it's 0 or 1, the GPS hasn't locked.
Can I use MAVLink Inspector over a 3DR radio link? Yes, but 57600 baud limits you to ~20 messages/second. Reduce stream rates via SR0_* parameters or increase baud to 115200 if your radio supports it. High stream rates on slow links cause buffer overflows and dropped packets.
What does HEARTBEAT.system_status = 4 mean? Status 4 is MAV_STATE_CRITICAL—the flight controller has triggered a failsafe (EKF, battery, radio, or fence). Check STATUSTEXT messages in MAVLink Inspector for the exact failsafe reason. The vehicle will execute FS_*_ACTION (Land, RTL, etc.).
How do I record MAVLink traffic for later analysis? Mission Planner auto-logs MAVLink to .tlog files in your Documents folder. QGroundControl saves .mavlink files. Open these in Mission Planner's "Dataflash Logs" tab or use MAVLink command-line tools like mavlogdump.py. For flight controller logs, use LogHat.

Tagged

MAVLinkArduPilottelemetryQGroundControl

Try LogHat

Analyze your flight logs in seconds

Upload a .bin, .tlog, .log, or .ulg file. Get AI crash analysis, 3D replay, and forensic PDF reports instantly.

Try LogHat Free