Here are a few suggestions that you can try:
- Recalibrate compass: This works for me, regardless of firmware version.
- Enable compass:
COMPASS_USE = 1
. - Perform compass calibration again .
- Try to arm with compass enabled and then disabled
COMPASS_USE = 0
.
- Use the dev firmware:
If you are familiar with how to build and upload the ArduPilot code, now you can bypass compass healthy check to arm when vision data is available, which should solve this issue. But you need to use the master code for now.
You can read this thread, which discusses the same issue that you are facing, for more info.