[SOLVED] COMPASS_EXTERNAL not saved on reboot (AC3.4-rc5, PixRacer)

After my initial AC3.4-rc4 build skyrocketed and crashed, new parts arrived and the S500 build is again finished. Now, I am running AC3.4-rc5 on my AUAV.co PixRacer and also using MP 1.3.41 build 1.1.6110.31287 (the latest) and noticed that although the COMPASS_EXTERNAL=1 is saved successfully, upon rebooting the board (both via USB and battery), is is again COMPASS_EXTERNAL=0.

The GPS used is a uBlox Neo m8n with built-in compass (ROTATION_NONE) which works fine acquiring constantly 3D fix outside.

I am attaching my saved configuration for your reference. All pre-arm checks are off because the aircraft is not ready to fly as I am tuning things.

Many thanks in advance.S500_AC34rc5.param (10.0 KB)

This parameter is determine automatically and can not be set. If it changes to 0 then it’s not external, IE not connected by I2C interface.


That’s the whole point: it is external and it is connected via I2C.
Nothing - hardware-wise - changed since AC3.4-rc4 where it was detected and worked fine.

I had a quick look at the parameter file and I see two compasses are connected. The first (primary) compass is external, the 2nd is internal. Not sure if it’s clear but when a new external compass is added, it will normally become the first compass in the list (the existing internal compass gets pushed along one position).

Anyway, maybe I’m misunderstanding … in this parameter file though it appears like the first compass is set to external. Maybe the parameter file was saved after you’d changed it manually? or maybe it’s all working as it should?

Thanks very much for testing and reporting back!

@rmackay9: Thank you very much for taking the time to look at my case.

I’ll try something else to demonstrate my issue.

Powered my S500 Pixracer AC3.4-rc5 quadcopter, connected MP, gone to the compass calibration screen, selected PixHawk/PX4 and performed compass calibration (compass1 is on uBlox Neo m8n GPS+Combo, compass2 is Pixracer internal):

Went to Flight modes and clicked on Save (just to be sure that everything is saved).
Disconnected, removed power.

Reconnect power, connected to MP, gone to compass calibration screen and nothing is saved (notice that “Externally mounted” is no longer checked as it should be):

I am attaching the parameter file after connecting the second time. I do not know what I am doing wrong.
The same setup worked on rc2 and rc4, I’ll try to revert back to it (I have to find the .hex that I’ve kept).

Again, thank you very much for your help.
S500_AC34rc5.param (10.0 KB)

Update: Out of nowhere, I had the epiphany to change the MicroSD card I had on my Pixracer. After the crash, I replaced a 4GB cheap no-name card I used with a SanDisk Class 10 8GB card (it was the smaller one I could buy locally). After removing the SanDisk card and replacing it with the cheap 4GB one (both are formatted using FAT32 filesystem with a 32kB sector size), the compass is now detected as external everytime.

Apologies for reporting it as a bug, I had no idea that the type of MicroSD card used could “upset” the compass detection.

I have an issue where my compass is not being detected at all? My parameters are just like the one listed above but the two compass device ids are the same? Aren’t these both internal compasses? I have scoured the web and forums trying to solve my issue but everyone with a pixracer has these same two device ids for their compasses with a third listed as external? I tried a different sd card as well. Didn’t work.