diff --git a/src/drivers/magnetometer/isentek/ist8310/IST8310.cpp b/src/drivers/magnetometer/isentek/ist8310/IST8310.cpp index b7d8512ce9..d48321d148 100644 --- a/src/drivers/magnetometer/isentek/ist8310/IST8310.cpp +++ b/src/drivers/magnetometer/isentek/ist8310/IST8310.cpp @@ -85,6 +85,15 @@ void IST8310::print_status() int IST8310::probe() { + // Apparently, the IST8310's WHOAMI register is writeable. Presumably, + // this can get corrupted by bus noise. It is only reset if powered off + // for 30s or by a reset. + // + // Therefore, we do a reset before doing the WHOAMI. + RegisterWrite(Register::CNTL2, CNTL2_BIT::SRST); + + px4_usleep(10000); + const uint8_t WAI = RegisterRead(Register::WAI); if (WAI != Device_ID) {