Bad (zombie) mcp23017 gpio board has resulted in three trashed shields and sadly the i2c pins on my RPI

Everything I hooked up to a 16 pin gpio board (mcp23017) I bought in Oct 17 is now trashed.
This includes three shields and sadly the I2c pins of my RPI (that I hooked up without the shield).

Ordered these back in October put just getting around to trying it out.

Super sad :-(.

What do you mean exactly? All the boards are bad? Did you have anything connected to the GPIO lines of the MCP23017 board? Was it left powered up?

Hi Travis,

Daivd Kebler here,

I mean all the i2c shields I hooked to that board ceased to function (i2cdetect no longer worked). I then removed the last now defunct one and hooked the RPI (pin 2,3) directly to another i2c mcp board it worked fine then to the board in question and subsequently those pins ceased to function definitely taking out the i2c bus pins but probably trashing the entire gpio bus.

That said I did modify the board by adding a logic level converter to the mcp interrupt pins but I have done that on six other mcp23017 and mcp23008 boards without issue as you saw in the lighting system I developed. Obviously I messed up there somewhere (shorting or apply a bad voltage). I did check the i2c pins on the board in question and there was not short to ground although I don’t have an oscilloscope to see what might be coming out of those pins (sda/scl) that created the destruction. At this point I really don’t want to mess with that board.

So at this point the board is a “zombie” eating any i2c master device connected to it.

BTW your design should really build in a logic level converter to 3.3v for those interrupt pins so one doesn’t have to modify the board and I have asked several times for that small addition. I also suggested several times that the pass through pins on the shield that are for i2c should be clipped (2,3) so that it’s not possible to connect anything to those pins. Those two changes would have likely avoided my situation.

It’s not a huge lost. I can use the RPI elsewhere where I don’t need the gpio bus and the three shields and gpio board is like $45.

FYI I have written version 2 of my node software and it’s all socket and mqtt driven. I can now controll all you mcp based boards via mqtt and have done so via home assistant. It now allows one to custom configure each pin of the mcp chip so which means is especially good for that little mcp23008 board with the two relays and 6 i/o pins.

Hi David,

Good to hear from you again. I didn’t recognize your username.

I’m sorry to hear about those boards, I’m not sure what could have caused what you’re describing there. Maybe a static discharge on one of the GPIOs that fried the 3.3 -> 5 level shifter on the Pi. I don’t really know.

Glad to hear your library development is going well. We are actually doing a whole bunch of development on Node-Red now. We have a MCP23008 library up on npm now (ncd-red-mcp23008). We’ve got some articles and videos up for the Node-Red stuff on our learn site here:
@Trey and I would be happy to hear any feedback you have. I think you were using Node Red as well if memory serves me correctly.

In my version 2 I’ve written stand alone ES6 Classes including a base class which can be set to multiple socket client/server/both and also supports MQTT. From it I have extended an i2c-device class and from that an mcp class (and any other i2c-device). I also have a separate i2c-bus class that works on any sbc which can run nodejs. The beauty of what I have written is that if you write a simple i2c bus write module with a tcp socket listener on whatever sbc in whatever language then the whole rest of my library including the mcp class can be run on nodejs capable machine and send json has “commands” to that sbc for the i2c devices attached to it.

I also wrote websocket server and client classes and using quasar/vue it’s now trivial to make an interface to manipulate any pin the way you want on an mcp chip including using it as a switch interrupt. Also using sockets means it’s easy to connect to a database (like lowdb) or a backend CRUD like feathersjs which can hold/save setup information

Because the base class supports MQTT it’s now trivial to use Home Assistant (or any MQTT home automation software) to control MCP pins.

BTW The MCP class now supports pin by pin configuration which is especially useful for the 6-2 gpio/relay board using the 23008 that you sell.

Still it’s quite ready to share and I need to get it all running on my brother’s lighting system but when done I’ll make a post and push it all to my github account. I’ll likely do some kinda documention/blog/video on using it as well. I am sure one could use node-red but I since I was trying to develop something a bit more robust and flexible, support unix/named pipes and with logging etc node-red was just not going to cut it.

What is the likelyhood that the capacitor on the I2c shield was what was taken out??
That’s an easy replacement I can do if it might fix the shield.

I see the price of those jumped to $12 from $5 :-(.

Hi David,

If you’d like to send that shield in I’d be happy to take a look at it for you. I would not think a bad cap would cause this problem, but stranger things in electronics have happened.

We had to raise that price because people were ordering the Pi shields in bulk without ordering any of our other products. We were actually taking a loss selling those modules at $5 which we were fine with if users were purchasing additional products as well which we had a profit margin on. The old one sour apple analogy comes to mind.


I’m about to start a project using a number of the 16xDigital input boards and the relay boards. It sounds like your new libs might be very useful. I’m planning to use Raspi and Home Assistant.

I’m also very interested in the interrupt lines, which it sounds like you have some experience with…

Can I see your v2 libs on github somewhere?


Anthony, @avpavp

I am putting the final touches on V2 of my libraries to manipulate i2c devices and in particular mcp230xx chips. They will replace V1 currently on my bother’s home lighting system so they will be stress tested on a real working system. Still I’d be super happy if you would attempt to use them and give me some feedback. I fully intend to share all my code.

V2 is improved in that now now you can configure individual pins of the mcp230xx. The other improvement is that all the modules use some kind of socket (or mqtt) for bi-directional communication with JSON packets which means you can control from Home Assistant (I already has a little test system doing that). This means that one can the mcp230xx code run on any machine and it can talk to the i2c-bus module on the SBC that is attached to the NCD (or any i2c device). This means too one could write an i2c-bus controller for any SBC that can’t run nodejs as long as it uses a tcp socket and could parse the JSON payload and read/write to i2c bus accordingly.

Further I have a web based front end that uses feathersjs backend database and websockets that allows one to easier configure a more complicated arrangement of i2c (and thus NCD) devices.

The libraries include a RPI interrupt module that will send out a socket message to any listening socket when the MCP interrupt is fired. WIth that I have code that then talks backto the same MCP and determines which pin fired. From there I do a lookup in the featherjs created database to determine which relays to fire on what over board/RPI. It is a very flexible and and robust system (V1 has been working for 7 months just fine)

Currently all the modules are in in private repos. I didn’t want to publish to github until they are ready to be used by others.

What is your intended use? What is your timetable? (i.e. can you wait a couple weeks for me to finish this up and publish to github)

Send me a private message if you want to exchange emails for further correspondence. Otherwise it might be better to start a new topic at and/or home assistant so others will find it.


Travis, I have three of the trashed shields so I think I will send them back. I am reluctant to try them on another RPI. I’ll send back the DIO board as well as I definitely won’t hook that up to anything (being the Zombie board). Maybe you have better tools to determine what went wrong. I know it’s probably not worth the trouble but I hate just throwing hardware out.

Again I give NCD my feedback on the shields and dio board

  1. Clip the pins on the shield that are for I2C bus so there is NO way a user could do the bonehead thing of trying to use those pins

  2. Modify the PCB deisgn for the DIO board to include LLC to 3.3 for port A/B interrupts. Actually include the pins when building. In this way the board would have two pairs of interrupt pins (A,B) one for 5V and one for 3.3V. The DIO board is more than likely to be used as switches which need the interrupt pins accessible. It’s a bummer to pay for a nice board and immediately have to modify it for something that could be included in the PCB design for little extra cost. BTW For the 2relay/4IO board there wasn’t even a pin out. I had to solder a wire directly to the MCP interrupt pin.

Send to what address? Your attention?

Hi @rkebler,

Just ship the boards to:

National Control Devices
430 Market St
Osceola Mo 64776

In the shipment include a description of the problem, your return shipping address, and your contact information. We’ll get them repaired/replaced and back to you ASAP. Repairs generally only take 2-3 business days depending on current work load.

@Travis, shipped them today should be there within a week. No rush to repair/replace/return. Thx

@rkebler I think maybe I don’t have enough status to send PMs - or I can’t figure out how with this forum sw…

pls pop me an email at anthonypaul AT gmail and we can get a conversation started.



We’ll get those back to you ASAP. I got the tracking status email for the shipment.

Also @Trey granted you permissions for PM on the forum here so you can open a private discussion with another user if you like and have a private conversation with them even if they do not have permissions yet.

@travis - just a thx on board replacements we received them. NCD should really consider my suggestions above :-).

I like the quality of the NCD stuff and that it’s USA made and supported so even the additional $$ is justified. Still NCD should listen to their user’s design suggestions as it’s getting ever easier and cheaper to design/make your own boards. The dio board is not complicated, basically pinouts for an mcp chip, so there is motivation for NCD to make a more “useful” version. $2 more on a $30 board is nothing.

1 Like

Hi…as per my observation you have to raise that price because people were ordering the Pi shields in bulk without ordering any of our other products. We were actually taking a loss selling those modules which we were fine with if users were purchasing additional products as well which we had a profit margin on.

circuit board assembly