Help needed: ESPHome & Waveshare E-Ink b/w/r 2.9 V4

Hello Community,

I am having problems getting a Waveshare Black/White/Red 2.9-inch V4 to work with ESPHome.

The problem
The problem is, the display only responds with the models “2.90inv2” and “2.90inv2-r2.”
The display does not respond at all with any other models.
However, with “2.90inv2” and “2.90inv2-r2,” the screen display is completely wrong:

Sometimes half of the display has a white background and the other half has a red background.
The text that should be red is black.
Sometimes it’s grainy, sometimes it’s not.

To rule out a defect, I loaded the original software onto the driver board again, so that I could try out the demo from Waveshare.
It worked perfectly with the demo firmware. (Also shortly before this post.)

I’ve been researching for almost the entire day, but I can’t find a solution.
That’s why I’m turning to you… What am I doing wrong?

I would be very thankful for any help or tips!

The hardware:
The ESP32 is an “E-Paper ESP32 Driver Board” (https://www.waveshare.com/wiki/E-Paper_ESP32_Driver_Board), to which I connected the display directly via a ribbon cable.

As I said, the display is a Waveshare 2.9-inch (black/white/red),
and there is a round silver sticker on the back with the inscription “V4”
(296x128, 2.9inch E-Ink raw display, SPI interface, three-color, without PCB | WFT0290CZ10)

The YAML

esphome:
  name: esp32-e-ink-01
  friendly_name: ESP32-E-Ink-01

esp32:
  board: esp32dev
  framework:
    type: arduino

logger:
  level: WARN

api:
  encryption:
    key: "my_secret!"

ota:
  - platform: esphome
    password: "my_secret!"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

font:
  - file: gfonts://Goldman
    id: roboto
    size: 24

spi:
  clk_pin: GPIO13
  mosi_pin: GPIO14    

color:
  - id: color_black
    red: 0%
    green: 0%
    blue: 0%
    white: 0%

  - id: color_red
    red: 100%
    green: 0%
    blue: 0%
    white: 0%

display:
  - platform: waveshare_epaper
    model: 2.90inv2
    cs_pin: GPIO15
    dc_pin: GPIO27
    busy_pin: GPIO25
    reset_pin: GPIO26
    update_interval: 60s
    full_update_every: 1
    rotation: 90
    lambda: |-
      it.print(0, 0, id(roboto), color_red, "Hello World!"); 
      it.print(0, 100, id(roboto), color_red, "Hello World!");
1 Like

I’m having the same issue but I’m assuming My issue is due to the fact that I have the B/W/R 13.3" display and only the monochrome display is supported.

Can you include a picture of the display when driven?

I’ve been having the same issue. I bought one of those same displays months ago, but never got it to work; It’s been sitting in my ‘arduino to-do’ drawer since then. If I knew how to write a driver for this display, I already would have, but alas…

I have found I can get it to work with a different platform (epaper-spi of the waveshare one) but I’m having troubles with getting red to work and it doesn’t seem to update it properly so I’m not sure if this will be usable either