From 7f48c0ae52923bda8742fd2f2bb49a154541e0a7 Mon Sep 17 00:00:00 2001 From: Ray Morris Date: Mon, 31 Aug 2026 09:31:47 -0500 Subject: [PATCH] fix(ORBITH743v2): register ICM40609D under its own hardware type and slot The second IMU was registered with DEVHW_ICM42605 and descriptor tag 0, so icm40609dGyroDetect/AccDetect could never match it: the ICM42605 driver rejects the ICM40609D WHO_AM_I (0x3B vs 0x42/0x47), and tag 0 collides with the first gyro while gyro_to_use=1 requests tag 1. Register it as DEVHW_ICM40609D with tag 1 and enable USE_IMU_ICM40609D so the dual-gyro selection can actually find the second IMU. --- src/main/target/ORBITH743v2/target.c | 2 +- src/main/target/ORBITH743v2/target.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/target/ORBITH743v2/target.c b/src/main/target/ORBITH743v2/target.c index 1f99c809da7..c4cd2640fdd 100644 --- a/src/main/target/ORBITH743v2/target.c +++ b/src/main/target/ORBITH743v2/target.c @@ -28,7 +28,7 @@ BUSDEV_REGISTER_SPI_TAG(busdev_lsm6dxx, DEVHW_LSM6D, LSM6DXX_SPI_BUS, LSM6DXX_CS_PIN, NONE, 0, DEVFLAGS_NONE, IMU_LSM6DXX_ALIGN); BUSDEV_REGISTER_SPI_TAG(busdev_icm42688_1, DEVHW_ICM42605, ICM42688_SPI_BUS_1, ICM42688_CS_PIN_1, NONE, 0, DEVFLAGS_NONE, IMU_ICM42688_ALIGN_1); -BUSDEV_REGISTER_SPI_TAG(busdev_icm40609, DEVHW_ICM42605, ICM40609_SPI_BUS, ICM40609_CS_PIN, NONE, 0, DEVFLAGS_NONE, IMU_ICM40609_ALIGN); +BUSDEV_REGISTER_SPI_TAG(busdev_icm40609, DEVHW_ICM40609D, ICM40609_SPI_BUS, ICM40609_CS_PIN, NONE, 1, DEVFLAGS_NONE, IMU_ICM40609_ALIGN); timerHardware_t timerHardware[] = { diff --git a/src/main/target/ORBITH743v2/target.h b/src/main/target/ORBITH743v2/target.h index 89df27ed6c8..31d5b3b7db7 100644 --- a/src/main/target/ORBITH743v2/target.h +++ b/src/main/target/ORBITH743v2/target.h @@ -117,6 +117,7 @@ #define USE_TARGET_IMU_HARDWARE_DESCRIPTORS #define USE_IMU_ICM42605 +#define USE_IMU_ICM40609D #define IMU_ICM42688_ALIGN_1 CW270_DEG #define ICM42688_CS_PIN_1 PE11