ESPHome + Waveshare 2.9inv2 e-ink display + partial refresh = flicker/artifacts?

Hi, I have tried this display on a Wemos D1 Mini Esp32. It works fine as long as I set it to full refresh every x seconds. If I try partial refresh the screen flickers with noise and the resulting image is garbage with missing pixels. As I want to use it for a generic info display where there is not a lot of change (temperatures, humidity, etc.) this is not a very big deal as I can set the full refresh to 10min or even longer. But still annoying to see the screen flash when it is performed…
Any ideas how to remediate this?

Do you have any update on this issue? I just got this display and I’m facing the same problem.
Setting full_update_every to anything higher than 1 produces noise.

Nope, the display currently gathers dust in the drawer… I have to reactivate it sometimes. There were several updates to ESPhome in the meantime, disappointing to hear that you are still facing the issue

I found to open issues on this topic:

But apparently no one is able to fix this. I think at least the documentation (Waveshare E-Paper Display — ESPHome) should be updated and the 2.9inv2 should be removed from the ‘full_update_every’ option as long as it is not working.

Hey everyone, do i get this right that as long as I want to stick to esphome, the only way to run an e-ink display is (at least at the moment) to have the whole screen “blink”/flash everytime I want to update anything on the screen? At least when I need a decent screen size, as the only other screen that supports partial refresh (and doesn’t cost a fortune) is the 1.54 inch version from what I found when comparing supported screens (Waveshare E-Paper Display — ESPHome) with available models that support partial refresh (“Selection guide” at the bottom of 200x200, 1.54inch E-Ink display module, SPI interface | HINK-E0154A05 WFC0000CZ07).

Well, let’s hope the fix gets finally published soon :-/

I’ve had the same issue. @Lakini I don’t know of a way to make it partial refresh in home assistant. I’m just going to use a full refresh and slow down the refresh rate of my display (maybe every 45-60s) and see how long it lasts.

Looks like still (!) an issue?

Did fix things to use:
full_update_every: 1

The below code works, but flickers the display to update every 10 seconds

display:

- platform: waveshare_epaper

model: 2.90inV2

cs_pin: 7 # CS (Chip Select) - Blue / Orange

dc_pin: 1 # D/C (Data/Command) - White / Green

busy_pin: 3 # BUSY (Busy signal) - Purple / Purple

reset_pin: 2 # RES (Reset) - Orange / White

rotation: 270

full_update_every: 1

update_interval: 10s

id: adam_epaper1

lambda: |-

ESP_LOGD("display", "Printing: Hello Adam...");

it.printf(10, 10, id(roboto_16), TextAlign::BASELINE_LEFT, "Hello Adam!");

I’ve tried it again a couple of weeks ago and now it works without flickering. Seems that leaving out the update_interval and just do a full update every 1h/3600s did the trick. I use this as a display to display my kids progress with their OralB Bluetooth toothbrushes where the progress is shown as a horizontal bar. Drawing that and also resetting it to 0 works without artifacts. So it seems the update_interval isn’t necessary. And as far as I have seen the full_update_every doesn’t cause flickering either.

display:
  - platform: waveshare_epaper
    cs_pin: GPIO21
    dc_pin: GPIO17
    busy_pin: GPIO16
    reset_pin: GPIO18
    rotation: 90°
    model: 2.90inv2-r2
    full_update_every: 3600

Hi

I’m planning to buy one. Could you please clarify which model are you using with the working code (model: 2.90inv2-r2)?

  1. The flexible one: 296×128, 2.9inch e-Paper, flexible E-Ink raw display, black/white dual-color, SPI interface, without PCB
  2. The non flexible one: 296x128, 2.9inch E-Ink raw display, SPI interface, without PCB | E029A01-FPCA-V2.0 E029A01-FPC-A1

Thank you in advance.

Having spent more time (now countless hours) trying to get ePaper/ESPHome working, I now have no idea what my point was, above.

My Waveshare 2.9" black and white ePaper will flicker for 6 seconds every time it refreshes. I told it to refresh every 10 seconds. So, it was flickering almost the whole time. I understand that now.

Thanks for your note all the same, Markus.

Regarding

full_update_every: 3600

It says here

“you have the option to only do a full-redraw every x-th time using this option”

So, your config will do a full update every 3600 refreshes, not every 3600 seconds?

Maybe partial updates are now working better than you thought? :sweat_smile:

Great project for teeth tracking, tho

tbh. I have experimented with so many settings over the span of a few years now, digging the display out of a drawer every couple of months.
My last try did work with these settings without flickering - so I left it as it is :smiley:
And as I’m no programmer I mostly throw settings against a wall and using code snippets I find and see what works by trial&error :smiley:

1 Like

I’ve used this:

LOL - bought it in July of 2021… this was really a long project for me :smiley:

1 Like