Change in compasses in Here GNSS or compass not detected?

I’m using the Here GNSS on my drones and noticed a few changed throughout the years.

In the beginning there were 2 external compass devices listed. As far as I know the “HMC5883” was the actual device where the “AK09916” was fused into. But the data was made available on the I2C of both. But in practice “HMC5883” would be better.

Batch 1

  • COMPASS_DEV 466441
    bus_type:I2C(1) bus:1 address:30(0x1e) devtype:7(0x7) DEVTYPE_HMC5883 (some say HMC5983)
  • COMPASS_DEV2 592905
    bus_type:I2C(1) bus:1 address:12(0xc) devtype:9(0x9) DEVTYPE_AK09916

After some time it changed. From what I understand the “HMC5883” was retired. As a result the “ICM20948” was now used and the “AK09916” is not available on the I2C anymore, but still used to fuse with the “AK09916”.
(Not sure about the “AK09916”, that could be hearsay.

Batch 2

  • COMPASS_DEV 723977
    bus_type:I2C(1) bus:1 address:12(0xc) devtype:11(0xb) DEVTYPE_ICM20948

Now my most recent batch only lists the following compass. I think this is a Here GNSS v2, not sure how I can see. (It has bigger leds in the casing).

Batch 3

  • COMPASS_DEV 592905
    bus_type:I2C(1) bus:1 address:12(0xc) devtype:9(0x9) DEVTYPE_AK09916

Now that seems interesting. Do they now only use AK09916? Or did ardupilot not recognize the actual compass present in the drone? Does anybody knows?

I assume this is related or what I’m talking about:

That link is for PX4.
My Here GNSS is recognized by Ardurover as the ICM20948. I’m not sure which “Batch” it is. I suppose this doesn’t help you…

Yeah, mpu9250 & HMC5883 are EOL and the former has been replaced by ICM20948

If you follow PX4 thread, you can read:
I’ve also tried flashing Ardupilot firmware and there it’s working.
AP_I2C_12 on I2C bus 1 at 0x0c (bus: 100 KHz, max: 100 KHz)
Found a AK09916 on 0xc09 as compass 0

So I guess you have just the AK09916 working now…

duplicate …

The “Here V1 GNSS” (second generation) gives me ICM20948.

The “Here V2 GNSS” gives me only AK09916. And I assume this is not the full compass. I noticed because I have 3 of the same drones and I had a fly away with one of them. After inspection that was the only one with the V2 of the “Here GNSS”. And the only one reporting just the “AK09916”.

The ICM-20948 is a multi-chip module (MCM) consisting of two dies integrated into a single QFN package. One die houses a 3-axis gyroscope, a 3-axis accelerometer, and a Digital Motion Processor™ (DMP). The other die houses the AK09916 3-axis magnetometer from Asahi Kasei Microdevices Corporation. The ICM-20948 is a 9-axis MotionTracking

I.e. the ICM-20948 is much better and I wouldn’t trust the “AK09916”-only.

Okay, on the chat Oxinarf explained I have nothing to worry about.

The ardupilot only uses the magnetometer from the ICM20948. I.e. the AK09916. Now instead of going through the ICM20948 we get it directly without a pass through ICM20948. So it should give the same results.

On the ardupilot (definitely on the pixhawk) the internal gyroscope and internal accelerometer are always used. I don’t think it is even possible to use the external ones. (Something about not fast enough or not enough Hz to use the external ones).