This is the case, I've got an MCP23017 IC to expand the outputs on the Raspberry Pi 2 as the others are going to be used (A0 A1 and A2 connected to 0V and RESET pin connected to 5V). Here are the problems:

When I first tested my IC today, it didn't work anymore, but 30 seconds later when I tried again, it worked correctly. This was strange and I saw that only 3.8V was delivered in total to the IC, which should be 5V. And while it was still working, 2minutes later, it changed again to 5V.

From a specific moment, everything stopped working, I tried 2 other MCP23017 ICs which also didn't work. It wouldn't show up the expander when doing:

i2cdetect -y 1

Almost an hour later, after testing everything in parts, nothing changed actually, tested it and didn't work again, then I tried again and it strangely enough worked again (again it only gave 3.8V!), one thing I noticed now is that the IC became hot so I shut down the RPi 2 correctly and turned the power of.

Other notes: when it didn't work, it also sometimes gave 3.8V and sometimes gave 5V, and the IC also became hot. And when it did work, it's exactly the same story.

This is a picture of the situation, (might the wood be giving the problem?? idk):

I hope you can help me out, as I really don't want to be struggling with this. Any hints/tips/possible explanations are very welcome!

  • Btw, by "the IC is getting hot", i mean really hot, it shouldn't be that way.
    – JonasAnon
    Commented May 4, 2016 at 20:00
  • If it gets hot you have wired it incorrectly. That probably accounts for the voltage changes as well. Not much we can do to help unless you declutter your breadboard to give a clear view of the connections between the Pi and the chip.
    – joan
    Commented May 4, 2016 at 20:03
  • @joan i64.tinypic.com/316nr42.jpg The SCL and SDA pins are connected to the correct pins on the raspberry pi2b+, and the black (+) is connected to pin 2 on the RPi2, the grey (-) is connected to the ground at pin 39
    – JonasAnon
    Commented May 4, 2016 at 20:12
  • I'd remove all but the minimum number of wires. If it gets hot it is wired wrong. Here is a pretty minimal set-up. raspberrypi.org/forums/viewtopic.php?p=954792#p954792. The resistors are SDA/SCL pull-ups to 3V3 (I2C bus 0 doesn't have pull-ups).
    – joan
    Commented May 4, 2016 at 20:36
  • the pull-ups are internal on the RPi 2 i have right? and the outputs needs to be 5V, the MCP23017 accepts 1.7 - 5.5 V, i guess it sends to the output what i give it right? or not?
    – JonasAnon
    Commented May 4, 2016 at 20:47

1 Answer 1


I encountered the same issue with this chip, despite wiring it correctly.

The issue appears to be that when one of the banks is set as an input and connected to a high source (i.e., 5v), about 20mv can sink into the chip. Not much individually, but considering you can have 16 inputs, it can heat up pretty fast.

This is resolved by enabling the pull-up resistors on the inputs. The process for doing so is simple: send the register bit to identify the appropriate register (0x16, 0x0C, 0x06, or 0x0D depending on the mode and bank you are using) and set it to 0xFF. Detailed instructions below, and lots of other useful details on the datasheet.


  • Thank you for answering, but the pins were only used as output (lighting up LEDs), so I'm not sure if this would help. I solved it back then by connecting the source to 3.3V instead of 5V, the LEDs still light up but not as much as it should, which is too bad. Should have said this in the original question probably
    – JonasAnon
    Commented Sep 20, 2017 at 15:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.