Todays Upgrade just broke my OLED

Hi,
I am using a small OLED over i2c
display:

  - platform: ssd1306_i2c
    model: "SSD1306 128x64"

which worked since some months. I just did todays upgrade of ESPHome and also upgraded the code, after OTA, the ESP32 rebooted and the OLED display went white. The code itself is working, I can connect to the esp and I can do another OTA.

Any hints what could breaks the display?

Have a look at the release notes, there is a few breaking changes
https://github.com/esphome/esphome/releases/tag/2023.6.0

Hi,
yes, seen them, but they do not look related. 2 on image handling, I use only text, one on i2s microphone support, I do not use, and one on moving time class.

I already tried to get only a text, without any fancy other stuff, but display keeps white.

Broke my e-ink displays - just showing all black.

OPenend issue: [esphome] Update 2023.6.0 broke display(s) · Issue #95048 · home-assistant/core · GitHub

If anyone of you has some more info/logs

Another “me too”, for 2023.6.0 breaking epaper displays, where I now have a solid black display on a waveshare 2.9" epaper display:

display:
  - platform: waveshare_epaper
    model: 2.90in

My lilygo devices (which are a bit more bespoke) are still working OK, however:

external_components:
  - source: github://ashald/esphome@lilygo-t5-47
    components:
      - lilygo_t5_47

display:
  - platform: lilygo_t5_47

Another 2 broken OLED’s here…

Same problem here but with a strange behavior.

2 projects with SSD1306 broken
1 project with ST7735 broken but after a reset on board went ok

SSD1306 contrast issue since 2023.06 dev · Issue #4587 · esphome/issues · GitHub - just fixed it on my e-ink display

More “me too”. @chris.huitema mentioned breaking changes, and there does seem to be a display-related one:

“…display: add BaseImage and provide only Image::get_pixel method esphome#4932 by @ayufan (breaking-change)”

Dunno if that’s it, but it seems likely. I’ve done some looking at the documentations and some general Googling for “BaseImage”, but it seems not to be included in the docs yet. (Could be my lack of Google-fu, of course.)

FWIW, ssd1306s and a white screen for me. Reverting to firmware built on the prior version of ESPHome fixes it for now.

Version that breaks it: 2023.6.0
Version I revert to for fix: 2023.5.5

Same problem! OLED do not work anymore…

My code:
display:

  • platform: ssd1306_i2c
    model: “SH1106 128x64”
    reset_pin: GPIO16
    address: 0x3C
    update_interval: 5s
    id: mydisplay
    lambda: |-
    // Print title
    etc…

Setting Display Connection D2,GPIO4, D1 GPIO5

i2c:
sda: GPIO4
scl: GPIO5
scan: false

Same here…

display:
  - platform: ssd1306_i2c
    model: "SSD1306 128x64"

The workaround liked to above

it.fill(Color::BLACK);

Fixed text only pages, but images are still a white screen:

      - id: page3
        lambda: |-
          it.fill(Color::BLACK);
          id(my_animation).next_frame();
          it.image(0, 30, id(my_animation), COLOR_ON, COLOR_OFF);
1 Like

Esphome 2023.6.1 has an up date to address this problem, with a update. display: fix white screen on binary displays by ayufan · Pull Request #4991 · esphome/esphome · GitHub

I’ve not tried it yet.

:partying_face:

2023.6.1 does not quite fix everything for me…

  • Fixes the white screen (it.fill(Color::BLACK); no longer required)
  • Fixes the animation graphics
  • But some small images I use to indicate weather are white squares (there were working prior to 2023.6.0 / 2023.6.0)
imgDict["cloudy"] = id(wpng_2);
.........
it.image(0, h2, imgDict[id(weather_condition).state]);

Off topic I know, but as workaround you can try using glyphs for your weather icons:

  # weather icons from:
  # https://github.com/erikflowers/weather-icons/blob/bb80982bf1f43f2d57f9dd753e7413bf88beb9ed/font/weathericons-regular-webfont.ttf
  # Install font on your pc/mac and edit with Word to make these
  # easier to understand and troubleshoot
  - file: "fonts/weathericons-regular-webfont.ttf"
    id: weather_22
    size: 22
    glyphs: [
      "", # clear
      "", # cloudy
      "", # cyclone
      "", # dust
      "", # fog
      "", # frost
      "", # haze
      "", # heavy_shower
      "", # heavy_shower_night
      "", # light_rain
      "", # light_shower
      "", # light_shower_night
      "", # mostly_sunny
      "", # partly_cloudy
      "", # partly_cloudy_night
      "", # rain
      "", # shower
      "", # shower_night
      "", # snow
      "", # storm
      "", # sunny
      "", # tropical_cyclone
      "" # wind
      ]

Just wanted to confirm, I saw 3 out of 3 broken OLED’s with 2023.6. I just updated them to 2023.6.1, and they’re all working normally again. @andypnz, that sucks… I hope they get that sorted for you. I saw some changes to the display component that may have caused all this mahem. The change had to do with handling transparent images.

it.fill(Color::BLACK);

Thanks for your help. This was the solution for me.
Just for information!
With the new version I also have a lot of Warning messages that I didn’t have before.

For completeness, 2023.6.1 fixed it for me. I see that others above still had issues.