No measurements provided by magnetometer

Hello everyone,

I am facing difficulties with using the measurements by the magnetometer. When the Navio2 module boots, for the first time I try to read the magnetometer, everything works but after the first time, usually, it is not possible to get any more measurements. The magnetometer only returns 0 values for al 3 axes. I have read another topic, where it is stated that this is probably caused by a driver issue and it was not supported back then.

Since some time has passed, I am wondering if there is a fix around this issue because everything I tried doesn’t seem to work. I have to reboot Navio2 to get the magnetometer to function properly again, yet this is not a solution to the problem.

Looking forward to receiving any feedback!


Do you mean this post?

Reach module and Navio 2 have different components and images so it could be a different issue.

  • Can you provide me with a screenshot of how the issue looks to you? Do you use our scripts for data stream?
  • Do you use the MPU9250 or LSM9DS1?
  • How do you calibrate the magnetometers?

Yes, I mean this post. Regarding the screenshot, I do not have anything to provide since I call the function to read the magnetometer data and a 3x1 vector is returned containing zeros values, i.e., m9m = [0.0, 0.0, 0.0]. This happens when I use your scripts to obtain measurements but also scripts that I have written but entirely based on the your scripts use the magnetometer.

I am using the MPU9250 magnetometer since you do not provide the Python drivers for the LSM9DS1. I hope this changes soon since I can’t really understand why you provide your customers only with the Python drivers for MPU9250 and not for both IMUs as it is the case for C++.

In terms of the magnetometer calibration. I have tried and calculated the two matrices corresponding to the hard- and iron-distortion but the issue continues to exist. I don’t think that this is a calibration issue because zero values are returned when the registers are “read”.


  • Does the unit behave the same way outside?
  • What happens with the accelerometer and gyroscope data?
  • Do I understand correctly that the magnetometer returns correct data only once? Or does it stop after some time?
  • I have not tested the unit outside. Will do and provide the results.
  • Accelerometer and gyroscope data are entirely fine. There is not any problem with these sensors.
  • The magnetometer returns correct data only the first time I execute some code and for the entire execution. As soon as the first execution is finished, then the second time I execute the same script, a zero vector is returned as the magnetometer measurement.


Have you tried to run Ardupilot? Do you see any errors when connecting to the GCS? Please share a screenshot if you do.