XRP RP2350 board: internal IMU conflicts with Qwiic OTOS IMU

I’m running into an issue on the XRP (final) control board (RP2350). I also have a beta board, which works fine with the same setup.

Here’s the problem:

  • The built-in IMU works normally by itself.

  • The SparkFun Qwiic OTOS IMU (0x17) also works by itself.

  • When both are connected on the same I²C bus, the built-in IMU stops responding.

Since the two devices are on different addresses (0x6B for the internal LSM6DSO, 0x17 for OTOS), I expected them to coexist. But as soon as OTOS is connected to the Qwiic port, calls to the internal IMU fail with [Errno 5] EIO.

Has anyone seen this kind of behavior with the RP2350 board? Any ideas on how to get both sensors working simultaneously (timing tweaks, bus speed changes, pull-up issues, etc.)?

Thanks in advance!

We have not tried this, but my guess would be that the drivers for the QWIIC OTOS are setting up the I2C in a different way than the XRPLib libraries do for the built in IMU. You may need to modify the QWIIC drivers to not re-initialize the i2c ports.

Hi there! Sorry for not responding sooner, I’ve been out for a bit!

Which Qwiic connector are you using? The XRP’s internal IMU is on the Qwiic 1 bus, so I’d recommend connecting the OTOS to Qwiic 0 to ensure not bus conflicts.

Also, our I2C driver will assume Qwiic 0 by default, so if you put it on the Qwiic 1 bus but do not explicitly specify that in your code, you’ll get that error.

Hope this helps!