Display banding/artefacts on Badger 2040W display

I’ve just started playing with my Badger 2040W and noticed that once the power is removed (or it goes into the sleep mode after timing out) that after a short while (>10s of seconds) that artefacts appear on the display.

This is using it with the software as pre-loaded onto the board.

This picture shows the issue:

Hate to necro an old thread, but I’m having the exact same problem on my Badger 2040 (non-W model).

If I leave power on, whether it be USB or AAA battery, the display stays fine indefinitely (exactly what I intended to display on it). When I remove power (pull the USB, switch off the battery pack), after about a minute I see random horizontal and vertical lines appear all over my display. They can be faint or very obvious. I never even touch the board and it happens, so I don’t think it’s a connector or loose component. As soon as I reapply power, the lines are still there, but once I push a button to wake it up, the screen refreshes and it’s clean again. Seems like some capacitor or capacitance is discharging. If I turn battery power off for a few seconds and then back on again, the display stays fine, which suggests to me it’s not an issue with the micro or program, but something about maintaining a voltage.

I’m running the latest build I could find, “MicroPython 38e7b84-dirty on 2023-03-30; Pimoroni Badger2040 2MB with RP2040” with the badger-os. I’ve seen it happen in the badge, image, and QR code app as well as the main menu. I don’t think it’s software related because it runs fine when powered and only messes up when unpowered, when the program isn’t running.

This has been happening straight out of the box. On at least 1 occasion I didn’t see the lines but I’ve not been able to reproduce it.

Here an example in the qr code app:

Anyone seen this before or knows how to fix it? This is my first time with an e-ink display, but my understanding was that when unpowered they maintain their image for a long time (longer than the minute I’m seeing here). Feels to me like something is glitching out when a cap discharges and it’s affecting the display.

I can confirm this behavior, and I am using CircuitPython. I think this is due to the fact that the display is aging. E-Inks are not meant to be updated often (and I use my badgers for a clock, thus updating once a minute). In the beginning, I did not have this problem but now this is happening more often (not every time I turn of power, but once in a while).

Some e-ink manufactures recommend clearing the display before turning of power. And in the past, there was a recommendation (for a different black/white e-ink) to do some sort of “refresh” by setting the display to all white, then all black and then all white again. But I never verified if this is a myth or has some effect.

If it’s aging, it’s awfully fast. I only bought it last weekend, and I’ve only applied power to it for maybe an hour total, with very, very infrequent updates. And leaving the badger halted with battery connected is fine, it’s when the battery is disconnected or turned off.

When the display updates, it does blank the display with all black and all while before showing the image, which the notes say is best practices. And the light areas are totally clear, until shortly after power is removed. As for blanking the display before removing battery power… doesn’t that defeat the purpose of an e-ink display being persistent?

I refreshed the QR code and then instead of turning off the battery I left the switch on. The next morning the display was clear. It only seems to be when the power is disconnected.

I took a look at the schematic, and I’ve verified with a multimeter that with the the battery on and the device halted (LED off), that 3V3 is 0V (the power that supplies the IC and the display, after the load switch), 3V3_AO is 3.19V (power to the switches which is after the LDO but before the load switch) and VBAT is 3.27V (across the battery terminals). That makes sense to me, when halted the 3V3 rail should be shut off but 3V3_AO should stay a little under VBAT (because the LDO is always connected). But since the e-ink and RP2040 are all fed from the 3V3 line and it’s already off when halted, and the load switch in the path of VBAT is off, I’m confused as to why VBAT=0V would make any difference. Maybe there’s some weird leakage path. What I really don’t know is under what circumstances do random lines appear on e-ink displays. Voltage glitches/droops, bad data, something else?

I’m going to keep trying to figure it out. Maybe it has something to do with USB power, because I haven’t plugged it into USB in a while (I’ve just been using battery) and the lines appear to be less frequent than before.

Hm, true, this seems to contradict the aging theory. But this means I have an additional open question: why do I observe the problem now more often then in the past? But maybe that is a coincidence.

One idea: on USB-power, the system is not shut down explicitly. So pulling USB would mean that the program keeps on running for a few (fractions?) of a second due to the many capacitors in the power path. For my use-case, this could be a cause of the problem, because if I cut power at the wrong time there might be some activity between pico and display (BTW: I have no batteries connected).

“why do I observe the problem now more often then in the past?” →

Curious… Could it be firmware based? – (what happens when you run w/ an early code?)

Nothing firmware related. I am running this with the same CircuitPython program for a very long time now and did not have this issue in the past.