Some PiOLEDs Start Failing

EL Wire/Tape/Panels, LEDs, pixels and strips, LCDs and TFTs, etc products from Adafruit

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
User avatar
mwolske
 
Posts: 8
Joined: Tue Aug 20, 2013 2:42 pm

Some PiOLEDs Start Failing

Post by mwolske »

I have students work through an exercise in which they add a PiOLED to a Raspberry Pi (see: https://iopn.library.illinois.edu/press ... -section-4). A modified stats.py program run at boot through rc.local is used to display the IP address to inform VNC and SSH connectivity across different LANs once the Raspberry Pi is used headless as part of later exercises.
I've had several PiOLEDs begin failing at seemingly random times and have not been able to identify the cause.
The problem seems to be specific to a given PiOLED that had worked previously.
* They stop working even when tested on other Raspberry Pi's or on the same Raspberry Pi with a different microSD card.
* Other PiOLEDs will work on the original Raspberry Pi using the original microSD card.
* All PiOLEDs list I2C 0x3c on the back side. However, the Traceback report when using the failed PiOLED lists:
Traceback (most recent call last):
File "/usr/local/lib/python3.9/dist-packages/adafruit_bus_device/i2c_device.py", line 176, in __probe_for_device
self.i2c.writeto(self.device_address, b"")
File "/usr/local/lib/python3.9/dist-packages/busio.py", line 169, in writeto
return self._i2c.writeto(address, buffer, stop=stop)
File "/usr/local/lib/python3.9/dist-packages/adafruit_blinka/microcontroller/generic_linux/i2c.py", line 52, in writeto
self._i2c_bus.write_bytes(address, buffer[start:end])
File "/usr/local/lib/python3.9/dist-packages/Adafruit_PureIO/smbus.py", line 314, in write_bytes
self._device.write(buf)
OSError: [Errno 121] Remote I/O error

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/local/lib/python3.9/dist-packages/adafruit_bus_device/i2c_device.py", line 182, in __probe_for_device
self.i2c.readfrom_into(self.device_address, result)
File "/usr/local/lib/python3.9/dist-packages/busio.py", line 159, in readfrom_into
return self._i2c.readfrom_into(address, buffer, stop=stop)
File "/usr/local/lib/python3.9/dist-packages/adafruit_blinka/microcontroller/generic_linux/i2c.py", line 59, in readfrom_into
readin = self._i2c_bus.read_bytes(address, end - start)
File "/usr/local/lib/python3.9/dist-packages/Adafruit_PureIO/smbus.py", line 181, in read_bytes
return self._device.read(number)
OSError: [Errno 121] Remote I/O error

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/pi/Code/Python/stats.py", line 26, in <module>
disp = adafruit_ssd1306.SSD1306_I2C(128, 32, i2c)
File "/usr/local/lib/python3.9/dist-packages/adafruit_ssd1306.py", line 239, in __init__
self.i2c_device = i2c_device.I2CDevice(i2c, addr)
File "/usr/local/lib/python3.9/dist-packages/adafruit_bus_device/i2c_device.py", line 63, in __init__
self.__probe_for_device()
File "/usr/local/lib/python3.9/dist-packages/adafruit_bus_device/i2c_device.py", line 185, in __probe_for_device
raise ValueError("No I2C device at address: 0x%x" % self.device_address)
ValueError: No I2C device at address: 0x3c

Thanks for any troubleshooting tips you can provide!
-- Martin Wolske

User avatar
mikeysklar
 
Posts: 13936
Joined: Mon Aug 01, 2016 8:10 pm

Re: Some PiOLEDs Start Failing

Post by mikeysklar »

The problem seems to be appears to be failing around i2c communication.

The ideal scenario at this point would be to have two setups and swapping hardware between devices.

Setup 1: Working Pi + PiOLED + SD
Setup 2: Not working Pi + PiOLED +SD

* When you move the SD card between devices does the problem follow the SD card?
* When you swap the PiOLED between devices does the problem follow the PiOLED?

User avatar
mwolske
 
Posts: 8
Joined: Tue Aug 20, 2013 2:42 pm

Re: Some PiOLEDs Start Failing

Post by mwolske »

Definitely a helpful descriptive way to proceed.

* When you move the SD card between devices does the problem follow the SD card?
It does NOT follow the SD card

* When you swap the PiOLED between devices does the problem follow the PiOLED?
It DOES follow the PiOLED

User avatar
mikeysklar
 
Posts: 13936
Joined: Mon Aug 01, 2016 8:10 pm

Re: Some PiOLEDs Start Failing

Post by mikeysklar »

Thank you that clarification points at the PiOLED having a hardware related issue.

So comparing the dead PiOLEDs to a working units do you see any difference? There is very little going on it terms of hardware on these displays. Several caps, two resistors, a voltage regulator, ribbon connector + GPIO connector. Does anything look physically compromised? Are there any differences on the PCB markings? There was only one version of these, but maybe batch differences.

These are currently marked down in price to $7.99.

https://www.adafruit.com/product/3527
Screenshot from 2022-12-02 16-57-03.png
Screenshot from 2022-12-02 16-57-03.png (510.75 KiB) Viewed 161 times

User avatar
mwolske
 
Posts: 8
Joined: Tue Aug 20, 2013 2:42 pm

Re: Some PiOLEDs Start Failing

Post by mwolske »

Image
Here's a picture with three faulty and three functioning PiOLEDs seen from different angles. Nothing pops out to me as different to indicate why some have become faulty.
Attachments
MultipleFaultyAndFunctioningPiOLED.jpg
MultipleFaultyAndFunctioningPiOLED.jpg (398.5 KiB) Viewed 157 times

User avatar
mikeysklar
 
Posts: 13936
Joined: Mon Aug 01, 2016 8:10 pm

Re: Some PiOLEDs Start Failing

Post by mikeysklar »

Thank you for the photo.

Do you recall when these were purchased? Adafruit has a month long replacement policy.

It might not be worth your time, but you could test the grey capacitors with a multimeter setting it to high resistance 1m ohms and touch each side of the caps. It should start near zero and slowly increase indefinitely.

If these are outside the replacement period you can contact [email protected] and let them know the number of failures you have seen out of the total number purched in use PiOLEDs they have additional options as this is more than one off issue.

User avatar
mwolske
 
Posts: 8
Joined: Tue Aug 20, 2013 2:42 pm

Re: Some PiOLEDs Start Failing

Post by mwolske »

I'll definitely bring some of these home where I have a multimeter. This will be an interesting comparison.

I have wondered if some of those working through the exercise attached the PiOLEDs to the GPIOs backwards such that the I2C pins feed into the 5V holes of the PiOLED and vice versa. That would also mean the 3.3V and ground pins/holes are switched. Might that impact performance of the capacitors?

I believe these were ordered from our school's front office back in May so that I had the summer to do preparations for fall classes. Definitely outside the replacement policy and always a possibility as creative students find ways to test out tech and instructions on their use. :)
Actually, I'm hoping an outcome of this exploration will be better instructions and notifications within my textbook's 2nd edition.

User avatar
mikeysklar
 
Posts: 13936
Joined: Mon Aug 01, 2016 8:10 pm

Re: Some PiOLEDs Start Failing

Post by mikeysklar »

I too had wondered if the PiOLED has been inserted onto the Pi incorrectly. I didn't want to sound accusatory, but being "off by one row" is quite easy to accomplish on most Pi connections. As you pointed out even an upside down connection is possible and would reverse the voltage pins.

User avatar
openEyeSignal
 
Posts: 9
Joined: Thu Jun 30, 2022 10:50 pm

Re: Some PiOLEDs Start Failing

Post by openEyeSignal »

I also experienced something similar lately. My PiOLED was working fine since I purchased it this summer (running continuously in an air quality monitor setup), but lately would start flickering and then turn off entirely. The stats.py test script would flicker the expected output and then error out:

Code: Select all

❯ python stats.py
Traceback (most recent call last):
  File "/home/pi/stats.py", line 90, in <module>
    disp.show()
  File "/home/pi/.local/lib/python3.9/site-packages/adafruit_ssd1306.py", line 207, in show
    self.write_cmd(SET_COL_ADDR)
  File "/home/pi/.local/lib/python3.9/site-packages/adafruit_ssd1306.py", line 264, in write_cmd
    self.i2c_device.write(self.temp)
  File "/home/pi/.local/lib/python3.9/site-packages/adafruit_bus_device/i2c_device.py", line 99, in write
    self.i2c.writeto(self.device_address, buf, start=start, end=end)
  File "/home/pi/.local/lib/python3.9/site-packages/busio.py", line 168, in writeto
    return self._i2c.writeto(address, memoryview(buffer)[start:end], stop=stop)
  File "/home/pi/.local/lib/python3.9/site-packages/adafruit_blinka/microcontroller/generic_linux/i2c.py", line 52, in writeto
    self._i2c_bus.write_bytes(address, buffer[start:end])
  File "/home/pi/.local/lib/python3.9/site-packages/Adafruit_PureIO/smbus.py", line 314, in write_bytes
    self._device.write(buf)
OSError: [Errno 121] Remote I/O error
In my case, it is connected as the last I2C device on a daisy chain, and is connected via a Stemma QT JST to 4x male headers. All other I2C devices operated normally when this failure happens. I checked the I2C bus and it appears there (at least when I check it; I am not looping to see if it drops off the following output):

Code: Select all

❯ sudo i2cdetect -y -q 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- --
40: -- -- -- -- 44 -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- 59 -- -- -- -- -- --
60: -- -- 62 -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
In my case, jiggling the male headers seems to help fix the problem, perhaps only temporarily. But it seems strange that it is suddenly more sensitive to the connection.

User avatar
mikeysklar
 
Posts: 13936
Joined: Mon Aug 01, 2016 8:10 pm

Re: Some PiOLEDs Start Failing

Post by mikeysklar »

That is another good data point.

The differences here appear to be:

1) they physical connection is the STEMMA QT I2C bus chain rather than direct GPIO.

2) the error messages are different from the GPIO mounted scenario of non-working display

Were you able to check the caps on the non-working PiOLEDs?

User avatar
mwolske
 
Posts: 8
Joined: Tue Aug 20, 2013 2:42 pm

Re: Some PiOLEDs Start Failing

Post by mwolske »

I thought I had repaired my old multimeter but see its time to buy a new one. Thanks for the reminder regarding i2cdetect. Running that on the functioning PiOLEDs worked as expected. When running it on one of the failed PiOLEDs, though, it took considerably longer to run, approximately one second per address. So not only has it stopped working, the PiOLED seems to also be creating some sort of feedback on the i2c line.

For now this provides me sufficient data points to recognize the need to create both updated instructions with warnings and some sort of protective measures for proper installation in advance of their use for the spring semester's class.
While I have spares I don't want to intentionally install one improperly to confirm that's what caused the failure as I'm reasonably confident this was the case.

Thanks for all the constructive comments on this.

User avatar
openEyeSignal
 
Posts: 9
Joined: Thu Jun 30, 2022 10:50 pm

Re: Some PiOLEDs Start Failing

Post by openEyeSignal »

Here is the back of mine:
back-of-pioled.jpeg
back-of-pioled.jpeg (930.05 KiB) Viewed 138 times
No obvious defects.

I revise my earlier statement--- jiggling the headers is not enough to consistently reproduce the flickering-> off failure mode. In fact, I can nearly unplug the wires and jiggle them without issue right now.

Unplugging them and replugging them back in is fine too if you have the demonstration code running in a loop or as a systemd service with:

Code: Select all

Restart=always
It can recover gracefully if I unplug/replug, but not if it happens to be in the failure state. In that case, sometimes jiggling wires helps, sometimes not, same with power cycling.

User avatar
mwolske
 
Posts: 8
Joined: Tue Aug 20, 2013 2:42 pm

Re: Some PiOLEDs Start Failing

Post by mwolske »

Do you attach and remove the PiOLED while the Pi is powered and the OS is running, or do you first shutdown the Pi?

I've done it both ways with no problem but am wondering if this might be an issue at times. Indeed, a moment ago I removed one of the faulty PiOLEDs while stats.py was running in a terminal. The red power LED on the Pi turned off. Unplugging and reconnecting the Pi to power did not work. Only after removing the faulty PiOLED was the Pi able to successfully reconnect to power and boot again. This is likely why some in the class thought it was the Raspberry Pi that had stopped working.

It does seem a faulty PiOLED can have broader impacts on a Pi, but hopefully not in a way that has long lasting effects.

User avatar
openEyeSignal
 
Posts: 9
Joined: Thu Jun 30, 2022 10:50 pm

Re: Some PiOLEDs Start Failing

Post by openEyeSignal »

While the Pi is running. I havent seen any difference in behavior by shutting down the Pi

User avatar
mwolske
 
Posts: 8
Joined: Tue Aug 20, 2013 2:42 pm

Re: Some PiOLEDs Start Failing

Post by mwolske »

One additional data point in response to the earlier suggestion:
It might not be worth your time, but you could test the grey capacitors with a multimeter setting it to high resistance 1m ohms and touch each side of the caps. It should start near zero and slowly increase indefinitely.
I could see no difference between failed and working PiOLEDs in multimeter readings of the grey capacitors.

-- Martin

Locked
Please be positive and constructive with your questions and comments.

Return to “Glowy things (LCD, LED, TFT, EL) purchased at Adafruit”