The 2026.4.0 update just broke my CYD cheap yellow display (ESP32-2432S028) white screen

just updated and it broke the display. the logs are still running but the display is white

Any ideas ?

Did you read the release notes about the LVGL changes. If that is not the issue you will need to provide a lot ore info before anyone will be able to help.

1 Like

ok understood. ive fixed the problem

The previous (broken) code was:

display:

  • platform: ili9xxx
    model: ILI9341
    spi_id: tft
    cs_pin: GPIO15
    dc_pin: GPIO2
    invert_colors: false
    color_palette: 8BIT
    auto_clear_enabled: true
    rotation: 90
    dimensions:
    width: 320
    height: 240

I fixed it by changing it to:

display:

  • platform: mipi_spi
    model: ILI9341
    spi_id: tft
    cs_pin: GPIO15
    dc_pin: GPIO2
    invert_colors: false
    auto_clear_enabled: true
    rotation: 270
    dimensions:
    width: 320
    height: 240

I also removed the “miso_pin: GPIO12” line in the following block
spi:

  • id: tft
    clk_pin: GPIO14
    mosi_pin: GPIO13
    miso_pin: GPIO12

If this isn’t the right place to post this kind of thing, just delete the post admin. i won’t be offended !

1 Like

Try this demo code. It uses LVGL and the new way to rotate screens using LVGL

I have the exact same problem, using the display platform: ili9xxx (not LVGL). After an OTA update:

  1. the display is white until I power cycle the CYD;
  2. if I leave the board displaying white to see what eventually may happen, OTA rolls back due to a unspecified error;
  3. all web UI logs are missing. HA logs displays the new ($) INFO entries, but nothing on the web ui.

Rolled back to 2026.3.3.

Can you try my demo code just to see if it fixes your issue? You may have to update via USB to get around the update issues.

I don’t run esphome from my desktop, I am using a HA Pi server. After a reboot, the display is fine.

You could update using the ESPHome web page on your computer or attach the screen to the USB port on the Pi and update that way.

But it sounds like it’s working for you now?

Creating the YAML and folders on the Pi is going to be very time consuming and likely be a source of a lot of errors while compiling.
The board does work after a power cycle, but that defeats the whole ota benefit. The ota rollback is still an issue, as well as the missing web ui logs.

No at all. Just type this at command line and you will have the new image

git clone https://github.com/iezhkv/esphome-modular-lvgl-buttons.git
cp ./example_code/sunton-esp32-2432s028-display_modular.yaml .
esphome compile sunton-esp32-2432s028-display_modular.yaml

Thanks Andrew, I don’t have the knowledge on work at the command line level on the HA Pi.

There are all kinds of tools to make it easy

Do you have a PC or mac? You could build it there?

I am running the ESPHome dashboard server on my linux pc. it connects to the HA esphome folders using a samba share.

On the pc, I open http://localhost:6052 and I get the same ESPhome dashboard as on the HA server, but the compiling is done locally for speed. But all the files reside on the Pi. So using that environment, I would still need to install the yaml on HA. -unless I am not using it correctly?

You have a yaml file now correct? Where that is is where the new yaml files go. Building is exactly the same procedure you are using now.

Yes, I managed to get the LVGL setup to work, thanks.

I opened a new CYD and have been rebuilding my old non-lvgl code to get the display to function. I changed to mipi_spi, and have added minimal code to get the display to show text after an ota. So, I will keep adding new portions of code till I find out what was causing the white screen & ota rollback.
I’ve yet no idea how to get the web ui to display the new ($) log messages.

I think you will find that now that you are using the new mipi_spi code you will not get the white screen. That I what I did to fix mine.

Through trial and error, I found that the following steps completes the 2026.4 update and then fixes the white screen. This worked for me but there are no guarantees of any consequences for the next update.

WARNING - The white screen returns if the device is powered off and the process has to be repeated. If anyone knows how to permanently fix this, please let us know.

The Devs need to look at the mipi_spi code before we can address the deprecation of the ili9xxx drivers.

Steps:

  1. Backup your existing code prior to running the update
  2. Run the update, a white screen is shown
  3. Edit your display: code, adding in the mipi_spi display, setting the model to the type of CYD that you have (refer to the mipi_spi documentation) and changing the color_palette: 8bit to color_depth: 8
  4. Temporarily install the mipi_spi code. Your original screen is somewhat restored, but with lines across the screen.
  5. Now change the display: section back to the original code and install the code
  6. Your normal display is now restored

Unfortunately, this didn’t work for me, even with the models listed in the mipi_spi documentation. It results in lines across the screen, suggesting driver issues. My CYD configuration is two USB connectors but with an ILI9341 display.

Same problem here with the dual USB board. I switched to mipi_spi but the display is messed up. The colors are changed, and the meters are very small. After hours of trying I have it somewhat working again, but now I get a lot of LVGL messages:

lvgl took a long time for an operation (130 ms), max is 30 ms

So I want to revert to the (faster?) ili9xxx display driver, and I really hope that the ESPHome team will fix this problem…

Hello, it seams there is a bug in the new drivers with memory allocation. After couple of hours, I’ve managed to fing workaround to get rid of the lines by configuring strange display size 320x258. Here is the final code that worked for me:

display:
  - platform: mipi_spi
    invert_colors: False
    color_order: BGR
    model: ST7789V
    spi_id: tft
    data_rate: 20MHz
    cs_pin: GPIO15
    dc_pin: GPIO2
    rotation: 0
    dimensions:
      width: 320
      height: 258
    auto_clear_enabled: true
    transform:
      swap_xy: true
      mirror_x: true
      mirror_y: false

PS: I’m not using LVGL.