diff --git a/src/main/drivers/compass/compass_qmc5883l.c b/src/main/drivers/compass/compass_qmc5883l.c index 116f45f268..0f463e63ef 100644 --- a/src/main/drivers/compass/compass_qmc5883l.c +++ b/src/main/drivers/compass/compass_qmc5883l.c @@ -135,6 +135,12 @@ bool qmc5883lDetect(magDev_t *magDev) uint8_t sig = 0; bool ack = busReadRegisterBuffer(busdev, QMC5883L_REG_ID, &sig, 1); if (ack && sig == QMC5883_ID_VAL) { + // Should be in standby mode after soft reset and sensor is really present + // Reading ChipID of 0xFF alone is not sufficient to be sure the QMC is present + ack = busReadRegisterBuffer(busdev, QMC5883L_REG_CONF1, &sig, 1); + if (ack && sig != QMC5883L_MODE_STANDBY) { + return false; + } magDev->init = qmc5883lInit; magDev->read = qmc5883lRead; return true;