Compass issues, again and again and again

I see in the last months a dev run to support as many boards as possible and a bunch of new features, this is all great and welcome but i think there is still a major flaw in Ardupilot compass setup that is always overlooked.

Just take a look at the posts, compass issues is by far number one problem that keeps on popping out over and over.

I think (just my little opinion) that some dev power should go into fixing compasses setup issues and make it easier once and for all. I think this is by far more important than supporting each new board that hits the market …

Just to make things clear, it would be great for the system to pickup all the compasses in the system and on a page of Mission Planner or any other ground station tell the user: “look, i have found this 3-4-5-6-whatever number of compasses attached to your system, please ceck the ones you want to be used”

I think it would be a MAJOR step forward, sure better than supporting the last boards from the smallest producer …

Just my opinion…



1 Like

You can check what compass you want to use at mission planner, compass calibration, I always disable the internal one if I don,t have triple redundance and never again an issue. N 2 is the internal one.

This is a big step forward:

I have 2 external uavcan and i want to disable the internal and use the 2 external uavcan. There is no easy way in doing it.

Now why couldn’t it just be “i found these 4 magnetometers, please check the ones you want to use”???

Now is kind of blind choice.

Anyway if you think it is good as it is maybe there are to many dumb people using arducopter (me included) because magnetometer threads are by far at the top of the list.

The logic of how and wich magnetometers are picked up and wich not is obscure and difficult to understand, it is a fact, if it wasn’t than there wouldn’t be tons of threads about magnetometer problems.

Just to repeat myself, why in the world there can’t be a nice list of magnetometers seen by the system and let the user with a checkbox decide wich one to use (for a maximum of 3 as it is now)?

Compass calibration i think it is not the main problem with compass. The problem i think is in the way the system uses compasses and wich are the compasses used. As said before i use a Cube 2.1 (2 internal compasses) and 2 uavcan external compasses. If i want to use only the 2 external ones there is no easy way in doing it.

The recent chibios support and supporting popular, low-cost f4/f7 boards could well be one of the most significant drivers of new users to ardupilot for years, as well as moving forward related support for new technologies such as blheli32, dshot, esc telemetry etc. What’s important to one person is less important to another. Actually during the development of the new boards, it has driven several improvements in the compass support and setup.

It does - this is screenshot of QGC connected to SITL so only 2 compasses, but it picks the external and gives an option to disable the internal. Mission Planner does the same doesn’t it? In any case, this is a desktop software issue, not ArduPilot.

I am not saying supporting new stuff isn’t important, i am just saying that if compass problems keeps on showing up there are 2 options:

1 - we are a bunch of dumbs (me included)
2 - there is something to correct in the magnetometer setup

In my understanding there is no point in supporting new stuff unless what is there is consolidated and works good, in my opinion magnetometer stuff is not at the moment. As said it is just my opinion.

Keep on saying that magnetometer stuff is ok as it is and negletting difficulties in it, ignoring all the threads about the subject is just turning head away in my opinion. But, as said, i am glad everything in magnetometer setup is nice and easy and works excellent, it is just me and some other hundreds people too dumb for the system.



no, this is NOT just your opinion. Definitely not. And it’s not the first time it was mentioned or good proposals were made. You have analyzed the situation quite correctly, IMHO. But you also have seen what the standard response is: It’s all perfect and cool.

and the “funny” thing is, all that multi magnetometers (and in conclusion all the hazzles with them) are not really useful for anything (except to check your primary mag is calibrated) … once it decides for one at start up it sticks with it, whatever what

and you have not yet tried to have two uavcan barometers … if you want real fun you do that :wink:

Nobody is saying that. I’m a dumb user as well - I hate setting up the hardware and I’m not very good at it, and I often make mistakes. I hate the compass dance, hence why the link above is relevant to this - it will be a major improvement to new users not to have to do the dance to calibrate the compasses. I’m personally saying that I’ve never had any problems selecting which compasses to use, and I’ve shown a screenshot from QGC to show that it looks easy enough to me. Why don’t you show a screenshot to show an example of where it isn’t good enough? Perhaps then the GCS developers can improve it. Ranting and raving here doesn’t do any good at all - specific examples either raised as github issues or in the correct section (I don’t think this has anything to do with Ardupilot so far, rather the GCS software) will do good.

ps - as a general comment, IMHO, there are a lot of things wrong with setting up Ardupilot, and from a new user perspective that could be improved (just try setting up a plane as a newbie - I’m about 4 years into Ardupilot and I still can’t get a plane flying without smashing it to bits). But the core developers around here have their own priorities which are generally working on the core aspects of the code or whatever companies/sponsors pay them to add. You can’t fault them for what they decide to do - it’s their life, their choice and they have to make livings as well. If you don’t like something, step up and fix it, or pay someone to fix it, or raise constructive user requests/issues/threads to discuss it. A lot of the problems that get dragged up again and again tend to be user error, often stemming from unclear or missing documentation.

Anyone - including you - can contribute to and improve the documentation. If the documentation and guides around setting up compasses aren’t clear enough for a new users to follow, then help to improve them. If you feel the software needs to be improved to stop the same thing being brought up again and again by new users, then either improve the software yourself with a PR, or if you don’t have the skillset then raise a specific issue in github against the software, and try and nicely point the relevant developer towards it. I still don’t understand what your particular problem is from reading this thread.


Ok everything is perfect, my bad in trying to say what i think it should look like to be easier and better. Much better to implement the latest load of pixracer clones.



You obviously haven’t read or understood what I’ve written - I’m trying to help you. If you can’t have a sensible discussion, you’re in the wrong place.

No need for a discussion, magnetometer setup sucks big time in my opinion, i wrote here what i think it should look like. Nothing is going to change about it? Than great, as i said i’ll be happy with the new, super, duper, latest implementation of chibios on a 20 dollars puxracer clone and be done with it


As @fnoop say I think QGC does this already, mission planner also but is is less intuitive. You can find the device ID of each of your attached compasses in the parameters here.

I think the improvement your suggesting would be to display the device ID from the parameters on the compass setup page in the ground control software?

1 Like

If you attach 2 external compasses and have 2 internal (cube 2.1), there is no way to have the second external picked up, no matter what (uavcan). Worst thing is that you don’t even know if the system sees it or not.

There is really no point in continuing telling me it is fine as it is. If it was there wouldn’t be tons of mag problem on the forum again and again.



p.s. In the end as said 100 times is my only opinion, if it is ok as it is than fine with me.

Just my two cents, there are other flight boards out there, maybe give them a try. The one downside I see to that is that there is not nearly as much support out there if you do decide to switch to another flight controller. Agreed it could be a bit easier to setup compasses in MP but still not bad, I haven’t had many compass issues as of late after moving mine around to find the best spot on the airframe for it, each person’s setup is going to be different and some investigating is needed to find the best location.

I’m trying to understand your problem so we can fix it.

I have had a look at the code, the DEV ID parameter seems to be a number that denotes the compasses type and the protocol its connected over. So if we published a key, or better yet coded this into ground control software you would be able to tell which compass it which.

Alternatively we could do a message on boot as for GPS, probably just for external compasses. That provided the compass type and number. This would probably the easier solution and would, I think, solve your issue?

In this case the external compasses are detected first (compass 1 and 2) so you will be left with only one internal (compass 3) as Ardupilot supports a maximum of three.

1 Like

As already said, if you don’t see the problem than is probably me too dumb for arducopter and barely smart enough for dji



Did you try to connect 2 uavcan external compasses? Try to have the system recognize them as 1st and 2nd, good luck…you’ll be really lucky if you understand wich one of the two was picked up by the system…best thing is that it doesn’t pick up the same one each time and guess what, normal user with no phd in programming is stuck, but as said it is wonderful as it is and we have all the leds working on the latest 20 dollars pixracer, isn’t that wonderful??
And do not give me the bs that dev do their work and we do nothong, because we risk our machines daily to give feedback as best as we can on any new release.

1 Like

Some time ago Randy posted a link to a Python script that decodes the device ID. It might be helpful. Attached and used as follows:
“ -C xxxx” where the xxxx is the device ID. (990 Bytes)