← All tools

Message & Error Explainer

What an ArduPilot message means and what to do about it

Українська

A health flag, put into words for the transmitter's screen

WarningBoard, internal errors, CAN, scripting

What ArduPilot says:

Also explained here: 6 more
  • Bad Compass Health
  • Bad Baro Health
  • Bad Gyro Health
  • Bad Logging
  • Geofence Breach
  • Bad OptFlow Health

These short lines are not sent by a sensor. The code that feeds telemetry to the transmitter (the Yaapu script over FrSky or CRSF/ELRS, Spektrum) looks at the health flags a ground station gets in SYS_STATUS and, at most once every 5 seconds, turns the first unhealthy one into words. Only one is shown at a time, in this order: GPS, gyro, accelerometer, compass, barometer, rangefinder (“LiDAR”), optical flow, terrain, fence, AHRS, receiver, logging. Unhealthy means present, switched on and not working right.

What to do, most likely first

  1. “Bad GPS Health”: a GPS was found, and its data now comes late or not at all.

    CheckOn a ground station, look at the GPS status and the pre-arm messages about the GPS.

    FixCheck the GPS cable and its port; a GPS that drops out on the ground will drop out in the air.

  2. “Bad AHRS”, “Bad Gyro Health”, “Bad Accel Health”: the attitude estimate is not ready, or a calibration is missing or failed.

    CheckNormal for the first half minute after power-on. Later, look for pre-arm messages about the EKF, the gyros or the accelerometers.

    FixKeep the aircraft still while it starts, so the gyros can calibrate; calibrate the accelerometers if that was never done.

  3. “Bad Compass Health”, “Bad Baro Health”, “Bad LiDAR Health”, “Bad OptFlow Health”: that sensor is switched on and gives no good data.

    CheckThe pre-arm message for the same sensor says more: read it on a ground station.

    FixFollow that message. For a rangefinder or optical-flow sensor: wiring, port and type parameters.

  4. “No RC Receiver”: the receiver was seen earlier and is in failsafe now. “Bad Logging”: logging is on and has failed.

    CheckReading “No RC Receiver” on the transmitter means telemetry still gets down while the sticks do not get up. For “Bad Logging” see “Logging failed”.

    FixTreat a lost uplink as a radio failsafe: range, antennas, the receiver's wiring. For logging, check the card.

  5. “Geofence Breach”: the aircraft is outside its fence. “Bad or No Terrain Data”: terrain following is in use and there is no terrain data for this place.

    FixFor the fence, fly back inside or let the fence action do it. For terrain, let the ground station load the data before take-off, or put the terrain files on the card.

The transmitter shows only the first flag on the list, and never the reason. Connect a ground station and read the pre-arm messages before deciding anything.

The code that sends it

Bad GPS Health

libraries/AP_RCTelemetry/AP_RCTelemetry.cpp AP_RCTelemetry::check_sensor_status_flags() · Open in ArduPilot Copter-4.7.1

Bad or No Terrain Data

libraries/AP_RCTelemetry/AP_RCTelemetry.cpp AP_RCTelemetry::check_sensor_status_flags() · Open in ArduPilot Copter-4.7.1

Bad LiDAR Health

libraries/AP_RCTelemetry/AP_RCTelemetry.cpp AP_RCTelemetry::check_sensor_status_flags() · Open in ArduPilot Copter-4.7.1

Bad Accel Health

libraries/AP_RCTelemetry/AP_RCTelemetry.cpp AP_RCTelemetry::check_sensor_status_flags() · Open in ArduPilot Copter-4.7.1

And 8 more messages, sent from the same places.

Written here for Copter 4.6. In the tool you choose your vehicle and version, see your own parameter values beside the ones named here, and drop a flight log to have every message in it explained.

Open it in the Message & Error Explainer