← All tools

Message & Error Explainer

What an ArduPilot message means and what to do about it

Українська

A compass that is in use has no calibration

Stops itCompass

What ArduPilot says:

For every compass switched on for heading (COMPASS_USE, COMPASS_USE2, COMPASS_USE3), ArduPilot looks for a saved calibration: offsets that are not all zero, and a saved device ID equal to the compass it found at start-up. One of the compasses fails that test. A new board, a firmware change that erased the parameters, or a different compass in the same place all end here.

What to do, most likely first

  1. The compass has never been calibrated on this aircraft, or the parameters were reset.

    CheckCOMPASS_OFS_X, COMPASS_OFS_Y and COMPASS_OFS_Z are all 0.

    FixCalibrate the compass outdoors, away from cars and steel, turning the aircraft through every orientation until the bar is full. Then reboot the flight controller: after a calibration arming stays refused until it restarts.

  2. The compass was replaced, or moved to another port: its device ID is no longer the one the calibration was saved for.

    CheckA calibration belongs to one sensor on one bus. A new GPS/compass module, or the same one on another I2C or CAN port, has another ID than the saved COMPASS_DEV_ID.

    FixCalibrate again with the new compass connected, then reboot.

  3. A second or third compass you do not mean to use is switched on and uncalibrated.

    CheckThe ground station's compass screen lists every compass found; the one on the flight controller itself counts too.

    FixCalibrate all of them in one run, or set COMPASS_USE2 or COMPASS_USE3 to 0 for the one you do not want and reboot.

Flying without a compass is a setup of its own, described by parameters: COMPASS_ENABLE 0 (or COMPASS_USE, COMPASS_USE2 and COMPASS_USE3 all 0) together with EK3_SRC1_YAW 8 (GSF), which works the heading out from GPS movement. It needs a good GPS, and the heading is unknown until the copter has moved.

Parameters to look at

ParameterWhat it is
COMPASS_OFS_XCompass offsets in milligauss on the X axis
COMPASS_OFS_YCompass offsets in milligauss on the Y axis
COMPASS_OFS_ZCompass offsets in milligauss on the Z axis
COMPASS_DEV_IDCompass device id
COMPASS_USEUse compass for yaw
COMPASS_USE2Compass2 used for yaw
COMPASS_USE3Compass3 used for yaw
COMPASS_ENABLEEnable Compass
The code that sends it

Compass not calibrated

libraries/AP_Compass/AP_Compass.cpp Compass::configured() · Open in ArduPilot Copter-4.7.1

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