BMM350 reports very high compensated magnetic field magnitude (~300–350 µT) on one PCB but normal Earth field on another identical PCB

Hello,

I am working with the Bosch BMM350 magnetometer and observing unusually high magnetic field readings on one PCB, while another PCB with the same schematic and firmware behaves normally.

Observed behavior

  • Output values are assumed to be in µT

  • Raw compensated readings (example):

    mx ≈ +246 µT

    my ≈ +236 µT

    mz ≈ −27 µT

  • Magnitude:

    ∣B∣=mx2+my2+mz2≈340μT

  • On a second PCB:

    • |B| ≈ 40–60 µT, as expected for Earth’s magnetic field

  • What has been checked

    • Same firmware, same API usage, same environment

    • Communication verified, no obvious I2C issues

    • Temperature compensation working

    • Nearby power inductor was removed, but readings did not change

    • No strong dynamic current-related variation observed

    • Calibration attempts fail or are unstable (ellipsoid fit issues on both pcbs)

  • Questions

    1. Can bmm350_hal_read_compensated()output be confirmed as µT?

    2. Can the BMM350 retain a persistent magnetic offset after exposure to a strong field, even if the source is removed?

    3. Is calling BMM350_magnetic_reset_and_wait()recommended after assembly or suspected magnetic shock?

    4. Besides inductors, are ferrite beads, shield cans, connectors, or PCB assembly effects known to cause offsets of ~300 µT?

    5. Is such a large static offset realistically recoverable via calibration, or should the PCB be considered magnetically unsuitable?

    Any guidance would be appreciated.

Sensor
BMM350
Application
Wearables
Use case
Compass / heading estimation as part of an IMU-based sensor fusion system (orientation + heading).
Development Platform
STM32 (CubeIDE + HAL)
Project Phase
EVT
Label
Hardware
Volume
50
5 replies
BMM350