I2C bus - connecting multiple devices and pull-up resistors

I have multiple NCD I2C devices connected together on a single I2C bus connected to the NCD Arduino MKR I2C interface shield.

I am having intermittent communications to the devices and am wondering if I have the I2C pull-up jumpers set correctly.

Each of the NCD modules has a pair of pull-ups. The documentation for some of the modules indicates to place the jumpers on if the master I2C controller does not have them. The documentation for the MKR board does not indicate that it has the pull-up resistors or not.

Do I enable the pull-up resistors on the last connected module on the bus, for each module or none of them?

Appreciate your assistance, thank you!

Would you mind posing a photo of how you have everything connected?


The twisted red-black pair is 12VDC to each module that needs it.

Ignore the disconnected I2C cable, it is an extra cable and is not connected at either end.

The I2C connections is as follws:
From Arduino MKR I2C shield to OLED Display I2COLED at address 0x3C
Then to Current Sensor PR28-17 at address 0x2A
Then to GPIO PR33-20 at address 0x41
Then to Light Sensor ISL25003 at address 0x44
Then to Relay board MCP23000 at address 0x20

Currently all I2C pull-ups are installed on all boards

Thank you @terryz,

One thing is to immediately power everything down and take it off the antistatic bag. Anti Static bags are actually conductive and can damage the components. It is perfectly fine to power them up sitting on a desk.

@Bhaskar could you take a look at this setup and advise if anything should be done differently?

I took it off the anti-static bag, still no go. I think my issue has to do with the pull-up jumpers - see beginning post.

Try connecting just one device and see if you’re still getting intermittent communication with that one device.

The Arduino shield has pullups. You dont need pullups on other boards.

Originally started with one device, no issues

Thanks Bhaskar, that was how I originally set up the system, no pull-up jumpers installed.

I will go back to that configuration. If that still does not work then I will check each board, one at a time to verify that all hardware is ok. The OLED module is acting up, even when by itself now - I’ll pull that one out (it worked fine by itself previously).