Here RTK magnetometer

I have a decent amount of Here RTK gps’s. And I suspect I have a few bad ones. Bad ones w.r.t. magnetometer.

I have a batch with the HMC5883 (devid 466441 in ardupilot) :

  • works fine, no issues found yet.

Nicely shows values ranging from -30 to 30 uT (for Z mag)

I have a batch with the ICM20948 (devid 723977 in ardupilot).

  • here there are some issues.

I noticed in ardupilot some of these GPS need larger offset for the magnetometer. And I started to investigate. Eventually I remove the GPS fully from the frame to make sure there are no other interferences (magnetic). And I break the I2C out to an arduino and read the ICM20948 there and I get (while rotating the gps around the X or Y axis):

>  ], Mag (uT) [ -00024.15 uT,  00032.55 uT, -00020.55 uT ], Tmp (C) [  00025.50 ]
>  ], Mag (uT) [ -00026.55 uT,  00032.10 uT, -00020.25 uT ], Tmp (C) [  00025.79 ]
>  ], Mag (uT) [ -00026.10 uT,  00033.30 uT, -00021.00 uT ], Tmp (C) [  00025.84 ]
>  ], Mag (uT) [ -00025.20 uT,  00032.25 uT, -00020.40 uT ], Tmp (C) [  00026.03 ]
>  ], Mag (uT) [ -00021.75 uT,  00034.35 uT, -00019.50 uT ], Tmp (C) [  00026.18 ]
>  ], Mag (uT) [ -00016.80 uT,  00035.55 uT, -00021.60 uT ], Tmp (C) [  00026.03 ]
>  ], Mag (uT) [ -00016.05 uT,  00036.00 uT, -00021.60 uT ], Tmp (C) [  00026.18 ]
>  ], Mag (uT) [ -00013.65 uT,  00035.55 uT, -00022.65 uT ], Tmp (C) [  00026.18 ]
>  ], Mag (uT) [ -00010.95 uT,  00035.25 uT, -00023.40 uT ], Tmp (C) [  00026.27 ]
>  ], Mag (uT) [ -00007.65 uT,  00033.60 uT, -00026.55 uT ], Tmp (C) [  00026.32 ]
>  ], Mag (uT) [ -00004.05 uT,  00034.65 uT, -00028.80 uT ], Tmp (C) [  00026.32 ]
>  ], Mag (uT) [ -00002.25 uT,  00033.00 uT, -00027.45 uT ], Tmp (C) [  00026.37 ]
>  ], Mag (uT) [  00000.75 uT,  00032.70 uT, -00030.90 uT ], Tmp (C) [  00026.37 ]
>  ], Mag (uT) [  00005.25 uT,  00028.80 uT, -00032.10 uT ], Tmp (C) [  00026.46 ]
>  ], Mag (uT) [  00011.70 uT,  00027.15 uT, -00034.20 uT ], Tmp (C) [  00026.51 ]
>  ], Mag (uT) [  00013.50 uT,  00025.50 uT, -00034.05 uT ], Tmp (C) [  00026.32 ]
>  ], Mag (uT) [  00012.15 uT,  00024.90 uT, -00040.95 uT ], Tmp (C) [  00026.37 ]
>  ], Mag (uT) [  00014.70 uT,  00020.40 uT, -00044.40 uT ], Tmp (C) [  00026.18 ]
>  ], Mag (uT) [  00014.25 uT,  00020.70 uT, -00047.85 uT ], Tmp (C) [  00026.13 ]
>  ], Mag (uT) [  00007.80 uT,  00015.45 uT, -00056.55 uT ], Tmp (C) [  00026.18 ]
>  ], Mag (uT) [  00007.05 uT,  00013.95 uT, -00058.80 uT ], Tmp (C) [  00026.51 ]
>  ], Mag (uT) [ -00000.45 uT,  00009.30 uT, -00063.15 uT ], Tmp (C) [  00026.65 ]
>  ], Mag (uT) [ -00007.65 uT,  00007.80 uT, -00064.95 uT ], Tmp (C) [  00026.51 ]
>  ], Mag (uT) [ -00015.30 uT,  00006.90 uT, -00065.85 uT ], Tmp (C) [  00026.46 ]
>  ], Mag (uT) [ -00021.45 uT,  00004.20 uT, -00064.65 uT ], Tmp (C) [  00026.51 ]
>  ], Mag (uT) [ -00029.10 uT,  00001.80 uT, -00062.55 uT ], Tmp (C) [  00026.70 ]
>  ], Mag (uT) [ -00034.05 uT,  00001.65 uT, -00061.65 uT ], Tmp (C) [  00026.37 ]
>  ], Mag (uT) [ -00042.90 uT, -00000.30 uT, -00054.00 uT ], Tmp (C) [  00026.27 ]
>  ], Mag (uT) [ -00047.40 uT, -00000.90 uT, -00049.35 uT ], Tmp (C) [  00026.80 ]
>  ], Mag (uT) [ -00050.55 uT,  00000.90 uT, -00041.85 uT ], Tmp (C) [  00026.56 ]
>  ], Mag (uT) [ -00051.90 uT,  00005.10 uT, -00034.65 uT ], Tmp (C) [  00026.56 ]
>  ], Mag (uT) [ -00053.55 uT,  00007.65 uT, -00029.40 uT ], Tmp (C) [  00026.70 ]
>  ], Mag (uT) [ -00054.00 uT,  00001.65 uT, -00026.25 uT ], Tmp (C) [  00026.65 ]
>  ], Mag (uT) [ -00052.95 uT, -00000.90 uT, -00022.80 uT ], Tmp (C) [  00026.65 ]
>  ], Mag (uT) [ -00054.30 uT,  00001.05 uT, -00021.60 uT ], Tmp (C) [  00026.65 ]
>  ], Mag (uT) [ -00050.10 uT, -00001.20 uT, -00012.75 uT ], Tmp (C) [  00026.37 ]
>  ], Mag (uT) [ -00044.85 uT,  00000.00 uT, -00004.35 uT ], Tmp (C) [  00026.51 ]
>  ], Mag (uT) [ -00037.50 uT,  00000.90 uT,  00001.65 uT ], Tmp (C) [  00026.51 ]
>  ], Mag (uT) [ -00032.55 uT,  00001.80 uT,  00005.55 uT ], Tmp (C) [  00026.56 ]
>  ], Mag (uT) [ -00019.35 uT,  00004.50 uT,  00009.75 uT ], Tmp (C) [  00026.80 ]
>  ], Mag (uT) [ -00010.35 uT,  00006.00 uT,  00009.75 uT ], Tmp (C) [  00026.65 ]
>  ], Mag (uT) [ -00002.25 uT,  00007.65 uT,  00006.30 uT ], Tmp (C) [  00026.56 ]
>  ], Mag (uT) [  00006.75 uT,  00009.75 uT,  00003.15 uT ], Tmp (C) [  00026.51 ]
>  ], Mag (uT) [  00012.30 uT,  00012.30 uT, -00003.45 uT ], Tmp (C) [  00026.56 ]
>  ], Mag (uT) [  00016.80 uT,  00013.20 uT, -00008.55 uT ], Tmp (C) [  00026.65 ]

You’ll see that the Zmag goes only from +10uT to -65uT
Not sure why. But here it is not “mostly” centered around “0”.

I have another Here RTK with ICM20948 there I see +25uT to -35uT. So that looks mostly good.

How come that first ICM20948 is not centered around 0 ? And I have 15+ devices where I see this behavior. Are those devices bad? And if not. What can I do to have them work correctly again?

(FYI: HR31A8500710 is bad, HR31A8500734 is good. I can give other numbers too, if that helps.)

Any comment on this? Am I too paranoid? Is this indeed a potential issue? Is more information required before concluding anything? I have 15 drones grounded due to this issue and would like to know how to get them into the air again.