What is the benefit of running multiple compasses on Pixhawk?

Hello - Am wondering if someone could help me understand the benefits of running 2 or 3 concurrent compasses on a Pixhawk (running 3.3.3)??

I am having some issues with the calibration of the internal compass and was thinking of switching it off and relying solely on the external compass (which has more than reasonable offsets). My search for something to suggest I should indeed run more than one compass has come up empty.

Your thoughts would be greatly appreciated


When flying it relies on only one compass and only uses the two compasses on startup as a sanity check that everything is working ok. If you have an external compass that is what it uses when flying.

the “internal” compass typically gets a bunch of interference from nearby ESCs, nearby battery/power wiring, nearby servo rails, big spinny magnets in the motors, etc etc… the further it is from all of this, the better. so out in the GPS housing ( which is further from this stuff for a similar reason) is the best place for it. the internal one is really just in-case you don’t have anything else.

+1 disconnect the internal if you have troubles.

Thanks for the replies. I have turned it off and gone from there but am still interested as to WHY it would be recommended to run more than one compass.

Apart from the APM start up “sanity check” is there any further cross checking of compasses during flight?? If too far out, do they trigger a failsafe?? Do they back each other up - ie if the primary fails during navigation does the Pixhawk switch to the secondary??

In addition under what circumstances would you run 3 compasses (as this is provided for on the compass screen)

Thanks for the thoughts

Yes, they do back each other up. Say for example your compass was on a mast and the mast falls over or off. The flight controller will see this and take action.


By default It’s land if the compass fail and is flying with compass modes

Basically one compass is useless , especially the internal one on the Pixhawk board (or on whatever other board) because it gets false readings as a result of magnetic fields of nearby electrical and electronics components and wires.
So if you want to avoid flyaways you need a precise compass reading. That can only happen with a compass chip that is the most faraway as possible from all currents flowing and all magnetized parts (be careful, a magnetized component could even be a metal screw in your compass mount or nearby, causing problems).
Then we can add a second external compass (that makes thus a total already of three compasses counting the internal one) to add precision and relliability thanks to the extended Kalman filters (fuses data from multiple sensors to reject false readings). Then you could add even more…no limits.

Sorry for reviving an old thread, but I was curious about the same thing. Is there any documentation on how exactly are multiple (external) compasses handled in the code? For example:

  1. Does EKF2 use both measurements and determine the error co-variance of each separately, which would enable it to discount a compass if its drifting off? (I doubt multiple simultaneous measurements are used in EKF, but don’t know the code well enough to say that definitevely).

  2. What happens when the primary compass fails (falls off a mast, say)? Does it trigger LAND, or does the autopilot simply shift to the secondary compass?

My basic question is, am I really introducing meaningful redundancy by connecting multiple external compasses?