You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The cause is what was suspected above: the BMI270 code in this library uses the outdated (legacy) ESP-IDF I2C driver.
src/BMI270.cpp calls i2c_master_write_to_device() / i2c_master_write_read_device() directly, and both belong to the legacy driver (driver/i2c.h). Since Arduino core 3.2.0, Wire is built on the new i2c_master driver. When both drivers are linked into the same firmware, the legacy driver's startup check (check_i2c_driver_conflict()) aborts before setup() runs:
E (1057) i2c: CONFLICT! driver_ng is not allowed to be used with this old driver
abort() was called at PC 0x4204ef83 on core 0
This is also why 3.1.3 worked: there, Wire still used the legacy driver.
firmware.map confirms that this library is what pulls the legacy driver in:
#8 ports the BMI270 I2C access to Wire, so the legacy driver is no longer linked. Existing sketches that call bmi270.init(I2C_NUM_0, addr) keep compiling, and new code can use bmi270.init(Wire, addr).
Activity
Onzeisnottwice commentedon May 2, 2026
Same problem, €48 for this device. I have the feeling that it is related to the usage of outdated driver?
devilSatou commentedon Oct 15, 2026
The cause is what was suspected above: the BMI270 code in this library uses the outdated (legacy) ESP-IDF I2C driver.
src/BMI270.cppcallsi2c_master_write_to_device()/i2c_master_write_read_device()directly, and both belong to the legacy driver (driver/i2c.h). Since Arduino core 3.2.0,Wireis built on the newi2c_masterdriver. When both drivers are linked into the same firmware, the legacy driver's startup check (check_i2c_driver_conflict()) aborts beforesetup()runs:This is also why 3.1.3 worked: there,
Wirestill used the legacy driver.firmware.mapconfirms that this library is what pulls the legacy driver in:#8 ports the BMI270 I2C access to
Wire, so the legacy driver is no longer linked. Existing sketches that callbmi270.init(I2C_NUM_0, addr)keep compiling, and new code can usebmi270.init(Wire, addr).