Trilobot and Breakout

I’ve had a Trilobot for a while now and it’s been working absolutely fine for the experiments I’ve tried on it. This weekend I decided to solder on the breakout headers I purchased about 3 months ago and try some extra functionality.

I have a few breakout laying around. If I connect them to the breakout connectors, install the required libraries and run some examples, they work absolutely fine. I can display text on the 11x7 matrix, I can get positional data from the LSM303D and so on.

But now the Trilobot doesn’t work. Anything that addresses a Trilobot function returns

Traceback (most recent call last):
  File "/home/pi/Pimoroni/trilobot/examples/", line 4, in <module>
    from trilobot import Trilobot, BUTTON_A
  File "/home/pi/.local/lib/python3.9/site-packages/trilobot/", line 4, in <module>
    import sn3218
  File "/home/pi/.local/lib/python3.9/site-packages/", line 114, in <module>
  File "/home/pi/.local/lib/python3.9/site-packages/", line 61, in enable_leds
    i2c.write_i2c_block_data(I2C_ADDRESS, CMD_ENABLE_LEDS,
OSError: [Errno 121] Remote I/O error

If I shut down Trilobot, remove the breakout and power it back up again, everything works fine.

Can anyone help me get this working? I’m assuming there’s a conflict somewhere but since all the breakouts I have tried have different addresses I don’t know what they’re conflicting with.


If you had an i2c address conflict, the breakout with the conflicting address wouldn’t work either. Thats the way it normally works, the two devices with the same address “both” don’t work.
Running sudo i2c detect y -1 will scan i2c and show the addresses for what’s connected to the bus. The breakout garden stuff usually has the address it uses printed on the back side. When there’s room anyway.
I’d do a scan with no breakouts plugged in to see what addresses the trilobot uses.