Why BetaFlight Configurator couldn't see the ICM-45686

Why BetaFlight Configurator couldn't see the ICM-45686

A deep dive into a sensor display bug caused by a race between firmware and configurator sensor lists

The symptom

The TFC1’s ICM-45686 IMU was detected correctly by the BetaFlight firmware and worked perfectly for flight control. But the BetaFlight Configurator application refused to display the sensor ID in the Sensors tab. When the same board was flashed with MPU9250 firmware, the sensor showed up normally.

This disconnect — firmware detecting the sensor but the configurator not displaying it — pointed to a communication mismatch rather than a hardware issue.

The root cause

BetaFlight and BetaFlight Configurator historically maintained separate, parallel lists of supported sensors. The firmware had a sensor enumeration in accgyro.h, and the Configurator app had its own matching list in sensor_types.js.

The problem: these lists are frequently updated as sensors are added and removed from support. When a new sensor like the ICM-45686 was added to the firmware’s list but not yet to the Configurator’s list, the enumeration IDs would diverge. The firmware would report sensor ID 0x07 (ICM-45686), but the Configurator didn’t know what 0x07 meant.

A fix was submitted to BetaFlight (PR #15009) and merged on March 20, 2026. Instead of relying on hardcoded sensor lists, the Configurator now dynamically queries the flight controller for its supported sensor names via CLI. This eliminates the synchronization problem entirely.

The timing issue

Our firmware branch was created on March 15, 2026 — five days before the fix was merged. This meant any firmware built from this branch would exhibit the ICM-45686 display bug. Updating to a firmware built from the main branch (after the PR merge) resolved the issue immediately.

After updating, the Configurator displayed the ICM-42688 (and by extension, the ICM-45686) sensor name correctly in the Sensors tab.

A universal sensor test firmware

To simplify testing across the three TFC1 hardware variants (ICM-45686, ICM-42688, MPU-6000), a single firmware image was built that auto-detects whichever IMU is present on the board. This image was tested on both ICM-45686 and ICM-42688 variants with successful detection. The MPU-6000 version worked on the Waveshare RP2350B-CORE board, though testing on the actual TFC1 hardware was pending due to USB enumeration issues preventing flash mode entry.

The auto-detect firmware eliminates the need to build and flash different firmware for each hardware revision — a quality-of-life improvement for development and field troubleshooting.

Questions? Requests? Suggestions?

We are looking forward to hearing from you!

Are you looking for
Consulting Services,
Support Plans or
Training & Workshops?