Particle Boron i2c Bus dead

Purchased particle Boron and Argon in march this year, been using both in the exact same way and have both been flawless.

In the last two weeks, i noticed the i2c LCD connected to my Boron no longer shows anything on the display. I have spent 2 weeks testing, factory resetting, reflashing, trying example sketches, all to no avail. Device would receive flash OTA ok and via USB however the i2c bus seems to be unresponsive. As a last-ditch effort I have tried factory resetting the device but now it will not reconnect to the cloud dashboard. The sim shows as active but the device does not appear in my devices.

I am happy to try and get it connected to my account using CLI over serial but my main concern is that the i2c bus is in fact dead.

Have you had the chance to probe the I2C lines with an oscilloscope or a digital logic analyzer? It could offer some more insight as to what’s going on with I2C at the hardware level.

Is it possible that you exposed the I2C pins to 5V logic? AFAIK the pins on the Gen 3 boards only work with 3V3 and can be damaged by 5V.

Also, does the LCD still work with other boards?

I presume you have tried the I2C scanner application:

https://github.com/rickkas7/particle-i2c-tutorial/blob/master/i2c-scanner/i2c-scanner.cpp

If you have (or get) a digital logic analyzer I’d recommend probing while the scanner is running to see if you get any communication from the boron or the LCD.

Additionally, do you know which deviceOS version is running on your Boron?

Also, mentioning this in hindsight to help future readers, unclaiming a device from your account will often introduce more issues and headaches instead of bringing you closer to a solution. While you should reclaim the Boron back into your account, cellular or mesh connectivity is not required for testing I2C communications. If you are using Workbench or the CLI, you can flash firmware locally over USB, and use SYSTEM_MODE(MANUAL); in your firmware to not have the Boron attempt to establish a cloud connection.

EDIT:
You could also use SYSTEM_THREAD(ENABLED); to separate your application from the thread responsible for managing the cloud connection and Particle communication, meaning that your setup() and loop() code will still run if your Boron isn’t connected to the cloud.

Optimally, I would use a digital logic analyzer if possible to verify if I2C is even functional still and to weed out any potential software related problems.

Additionally, if you file a support ticket you may be able to get a replacement:
https://docs.particle.io/support/menu-base/

2 Likes