[READ-ONLY] Mirror of https://github.com/jmrplens/kleidos. Kleidos — Hardware BLE password manager for ESP32-S3 (M5StickC Plus2, StickS3, M5Stack Gray, T-Deck, Cardputer) jmrplens.github.io/kleidos/
0

Configure Feed

Select the types of activity you want to include in your feed.

fix(cardputer): enable the Cardputer ADV BMI270 IMU at 0x69

Web research (docs.m5stack.com/en/core/Cardputer-Adv, the store/CNX spec tables)
+ an on-device I2C scan confirm the M5Cardputer ADV carries a BMI270 6-axis IMU;
the original Cardputer and v1.1 have none. The variant gated it off ('keep
disabled until the ADV BMI270 path is migrated and smoke-tested') — the createImu
probe factory is that migration. Enable HAS_IMU/IMU_TYPE_BMI270. The chip answers
at 0x69 (SDO strapped high), NOT the 0x68 default — IMU_TYPE_ADDR 0x69 — on the
shared SDA=G8/SCL=G9 bus alongside the TCA8418 keyboard (0x34) and ES8311 codec
(0x18), all coexisting without contention. HIL-validated: IMURW self-test PASSes
(BMI270 chipid=0x24, write-readback restored, gravity 1.02g), keyboard intact.

José M. Requena Plens (Jul 13, 2026, 11:01 AM +0200) a20d6cd5 d1d5dc8e

+12 -5
+12 -5
variants/cardputer/variant.h
··· 117 117 #define KEYBOARD_I2C_ADDR 0x34 118 118 119 119 // ============================================================================ 120 - // IMU — Hardware has a BMI270 on the shared I2C bus; keep Kleidos IMU 121 - // disabled until the ADV BMI270 path is migrated and smoke-tested. 120 + // IMU — the Cardputer ADV carries a BMI270 at 0x68 on the shared I2C bus 121 + // (SDA=G8/SCL=G9, alongside the TCA8418 keyboard and ES8311 codec). The 122 + // "migration" this was gated on is now the createImu WHO_AM_I probe factory 123 + // (drivers/imu/imu_factory) — it resolves the BMI270 with no board_*.cpp code, 124 + // and falls back to NullImu if the chip does not answer, so enabling it is safe. 125 + // Interrupt left off (poll-only). HIL smoke-tested on the ADV: an on-device I2C 126 + // scan (I2CALL?/I2CRD) found the BMI270 answering at 0x69 (SDO strapped high) — 127 + // 0x68 NACKs — alongside the TCA8418 keyboard (0x34) and ES8311 codec (0x18) on 128 + // the shared SDA=G8/SCL=G9 bus, all coexisting without contention. 122 129 // ============================================================================ 123 - #define HAS_IMU 0 130 + #define HAS_IMU 1 124 131 #define IMU_TYPE_QMI8658 0 125 - #define IMU_TYPE_BMI270 0 132 + #define IMU_TYPE_BMI270 1 126 133 #define HAS_IMU_INTERRUPT 0 127 - #define IMU_I2C_ADDR 0x68 134 + #define IMU_I2C_ADDR 0x69 128 135 129 136 // ============================================================================ 130 137 // Audio — ES8311 metadata is kept for the later audio-driver cut, but not