Onboard Mag Calibration doesn't work

According to online reference, with the new versions of MP, Onboard Mag Calibration should take care of non-standard compass orientation.

" A big advantage of using Onboard Calibration is that the orientation of external compasses is automatically determined during the process, as well as verification of the orientation of onboard compasses." " If your external compass is in a non-standard orientation, you can manually select the orientation in the combo box. However, ArduPilot 4.0 and later firmware versions will automatically determine orientation when the Onboard Mag Calibration routine is run."

In my case, the external compass is pointing to the tail and right. (who knows how many degree exactly). I need to set the compass orientation from ‘none’ to ‘Yaw 135 degree’ in order for Onboard Mag Calibration to complete. If I left it in ‘none’, it never complete. Please assist.

I just finished struggling with this in my thread “Compasses are completely useless”. ArduPilot really doesn’t like unspecified rotations of the external compass. I believe after it finds that the compass is rotated, it has to put it in to one of the standard bins for rotation and then try to calibrate from there. If you don’t know how many degrees, it might be off by too much.

It can only detect rotation of that external compass if it can assume the internal one is properly aimed. If it’s offset as well, everything will be offset. You can try COMPASS_LEARN = 3 which will try to compare the compasses with the GPS in flight - I was about to try it until I successfully calibrated it on the ground.

If you can, remount your compass puck pointing flat, level and with an offset that is clearly definable like straight ahead, yaw 90 or yaw 180.

My compass still would not calibrate at yaw 180 and had to be pointed straight ahead.

I had dramas calibrating an external compass in an earlier version of mp where you had to choose the orientation manually, in the end i had to use qgc and the associated firmware to give me enough detail to discover that the cheap chinese ulbox 8 that i have HAS THE SENSOR MOUNTED UPSIDE DOWN INTERNALLY. And just opening the case didnt reveal this, the arrow on the chip/module was pointing forward but the data coming out indicated that it was rolled 180deg.
And so once i knew that, i was able to use mp again and choose the correct orientation setting and bam. It calibrated successfully with normal fit.