Guys I have SpeedyBee F405 Wing mini and would like to test Copter firmware on it but have issue with compass calibration. I attached I2C HMC5883 external compass to it but when start in MissionPlanner compass calibration process then nothing is changing.
When I upload to the same board ArduPlane FW then the compass calibration process
has no problem.
Have somebody idea how to finish compass calibration even with Copter firmware ?
Does the SpeedyBee F405 ArduCopter firmware support the HMC5883 compass?
Probably not. Use the custom.ardupilot.org to compile a SpeedyBee F405 firmware that supports the HMC5883 compass chip.
In fact I have custom build ArduCopter with support for HMC5883. But callibration can’t be started even with this custom build.
Is the compass detected? does it appear on the device list?
Yes compass is detected as external HMC5883 - it appears as only item for compasses since SpeedyBee F405 wing mini itself doesn’t contain compass. But when calibration starts it gets stuck and no percent values are shown and progress bar don’t move neither a bit in MP window for compass despite I move with copter.
As I wrote before the same board loaded with ArduPlane FW don’t have problem with calibration.
I tried to copy calibrated values of compass from ArduPlane to ArduCopter but it didn’t help me with auto-modes when flying. I guess there is some internal variable indicating whether compass is calibrated or not and this can’t be set by user only by calibration process itself.
I remember in ancient times when APM was in course there were possibility to start console from APM and run some command to show real time compass readings or even baro-sensor readings. Now I guess it is gone…
Yet one remark to this issue - when board is connected to MissionPlanner on settings page “Compass” I can see HMC5883 is connected.
But when configuring custom build (copter 4.6.3) for this board (or even another boards) there is not such possibility:
To me nearest seems to be
- QMC5883L/P compasses,
- HMC5843 compasses and
- MMC5XX3 compasses.
So what the detected compass really is when in build options is not possibility for HMC5883?
My compass is I guess really HMC5883, bought from already not existing 3DR shop:
From what I’v read about differences between original chip HMC5883 and clones like QMC5883 there are quite different internal registers addresses and the I2C address as well. But if there would be mess in driver for this compass configuration on board Speedybee F405 Wing then how it is possible the ArduPlane firmware has no problem with it on the same board?
And another remark:
I can start compas callibration even with Copter Firmware but only with default parameters.
When I set params according to my needs (BL Heli, DShot for all four ESCs, servo functions, etc…) compass callibration is no more possible. When started calibration I got this message among others messages:
CompassCallibrator: cannot start compass thread.
Could it be the STM32F405 processor doesn’t handle this load in case of Copter FW?
And why it candle handle it in case of Plane FW?
Try this. LOG_BACKEND_TYPE,0 reboot and see if the Compass calibrates. If it does re-enable logging and move on with that resource limited flight controller.
Thanks a lot, it works ![]()

