The compass order was changed: reboot before going on
What ArduPilot says:
- Compass cal requires reboot after priority change
- Compass order change requires reboot
The order in which ArduPilot prefers its compasses (COMPASS_PRIO1_ID, COMPASS_PRIO2_ID, COMPASS_PRIO3_ID) was changed after start-up. Compasses are given their places only while starting, so until a reboot the order in use and the saved one differ. Arming is refused (“Compass order change requires reboot”), and so is a calibration (“Compass cal requires reboot after priority change”).
What to do, most likely first
You moved a compass up or down, or removed one, in the ground station's compass screen.
FixReboot the flight controller, then calibrate if the screen asks for it.
A parameter file from another aircraft was loaded: it carries that aircraft's compass IDs.
CheckParameter Compare & Migrate shows what the file changed; look at
COMPASS_PRIO1_IDand the other two.FixReboot. If a compass is then reported as not found, set the foreign ID to 0, reboot again and calibrate.
Parameters to look at
| Parameter | What it is |
|---|---|
COMPASS_PRIO1_ID | Compass device id with 1st order priority |
COMPASS_PRIO2_ID | Compass device id with 2nd order priority |
COMPASS_PRIO3_ID | Compass device id with 3rd order priority |
Where to do it:Parameter Compare & Migrate
The code that sends it
Compass cal requires reboot after priority change
libraries/AP_Compass/AP_Compass_Calibration.cpp Compass::_start_calibration() · Open in ArduPilot Copter-4.7.1
Compass order change requires reboot
libraries/AP_Compass/AP_Compass.cpp Compass::configured() · Open in ArduPilot Copter-4.7.1