IOError on any attempt to use buttonShim


On any attempt to use the buttonShim, I get an IOError: [Errno 121] Remote I/O error

Even a super-trivial application like this:

#!/usr/bin/env python

import buttonshim

buttonshim.set_pixel(0xFF, 0x00, 0xFF


Traceback (most recent call last):
File “”, line 12, in
buttonshim.set_pixel(0xFF, 0x00, 0xFF)
File “/usr/lib/python2.7/dist-packages/buttonshim/”, line 376, in set_pixel
File “/usr/lib/python2.7/dist-packages/buttonshim/”, line 188, in setup
_bus.write_byte_data(ADDR, REG_CONFIG, 0b00011111)
IOError: [Errno 121] Remote I/O error

What am I missing?


Sounds like it’s not making a good electrical connection- what Pi are you using? How’s it fit to the header?


The shim is sandwiched between a Pi Zero and a Scroll Phat HD. I have male headers soldered to the Pi Zero and female headers on the ScrollPhatHD. The ScrollPhatHD works perfectly but the Button Shim does nothing. See the photo below.


Is the shim soldered to the male GPIO header? I think it needs to be soldered?


I hadn’t soldered it; I had hoped to preserve flexibility to move it to another Pi later. But if it requires soldering, I guess I will solder it.

Addendum: I soldered it. No luck until I also tamped the ScrollPhatHD on as well. I must have had some marginal connected in there that the extra pressure solved.

Summary: yes, solder it.


The Ledshim is as far as I know the only one that is designed to work without having to be soldered. I have two and soldered them anyway.
This won’t help you this time but you could have soldered a stacking header on it and it would then be transferable. What ever pHat or Hat you put on top of it will sit much higher though so its a tradeoff.
Or just a female header if its the only thing plugged into the GPIO.