Hacker News new | ask | show | jobs
by dgellow 29 days ago
In case you're wondering and don't want to click around, the display is a standard Adafruit 5.83'' eInk panel: https://www.adafruit.com/product/6397
4 comments

I wonder how they achieve the lighting effect from the banner picture? It doesn't look like the Adafruit panel has backlighting built-in, and there isn't anything added in the project.
I see some kind of illumination from below/behind the display. Being from Gamers Nexus, I'd be shocked if it was manipulated. Maybe just a really steep sidelite
They are very reflective; a light from near the camera could look like that, but could be seen as a misleading choice.
Anyone know what the refresh rate for these displays are, at least with the stock firmware? Reading the datasheets didn't help, though maybe I didn't know what to look for.
The refresh rate of eink is kind of...muddy. It depends on temperature and target contrast. With the right waveform and voltage, you can push it pretty far(like 30hz+).

The thing is, Eink's waveform is kind of secret afaik, everyone has different tuning.

As I understand it going faster typically skips steps that are necessary for maintenance of the panel. Fine for a while but if you don't periodically run a "proper" cycle the panel could eventually be permanently damaged.
That's exactly it. I was a firmware engineer at reMarkable making the latest tablets.

We had some secret eink sauce (propriety waveforms) to get the high refresh rates and colour contrast without a full flashing screen reset, but even then you need to run longer maintenance refreshes occasionally.

Pixels are just vertical columns of viscous fluid with charged ink particles. A waveform is just voltage changes over time to these columns to shift the particles up and down. More black to the top = darker shade of grey. Colour (in the gallery display, at least) is the same, just with each CMY particle group having different charges and responses to different waveforms.

Every once in awhile this vertical column gets messy with loose particles distributed through it (ghosting, muddy contrast) so performing a hard rail-to-rail voltage reset forces all the particles up and then down, and gives you a clean slate.

Interesting. Thanks for sharing.

I have a question, hope it's not too sensitive, how do you guy protect your secret waveform ? One with enough tool and determination can just measure voltage at pixel and reverse the whole thing, the chinese can do that in less than a week i bet.

Few years ago I did an educational project to extract waveforms from logic capture - it was doable [1]. But this approach may have limits on newer faster FPGA based controllers.

[1]: https://github.com/prashnts/betty-epd/blob/master/notebooks/...

I always wondered about this as well. Linux regularly gains reverse engineered drivers and it seems like the same would apply. I guess this is probably how the hobbyist projects that drive the panels faster came about? I assume it's the same as the NDAs surrounding SoCs where the entire exercise seemingly only exists to spite the general public while serving no practical purpose. (Well I suppose pandering to nontechnical management's insecurities is a sort of practical purpose but anyway.)

But I was too lazy and/or uninterested to attempt low level tinkering with e-paper myself and these days you can finally purchase some reasonably(ish) fast panels off the shelf.

Out of interest, what (vaguely) is the amount of time you need between maintenance refreshes?
It really depends on the state of the screen. It's easier with reading PDFs, for instance, when you can get away with a full refresh on page turns.

Versus someone drawing on the screen with a lot of zooming and panning. People with the tablet would notice that when they stop a series of these actions that were back to back, the screen will "clean" itself after about 5 seconds of idleness.

Yeah, those panels are quite delicate, so they need a "maintainence" waveform(full refresh/flashing) for every now and then, to wiggle those stuck droplets.

Also when pushing for high refresh rate, you may need to use higher voltage, to make the droplets rise/fall faster. But sometime, those droplets are driven too hard and kind of stuck forever, so yeah, that's a trade off.

> Fine for a while but if you don't periodically run a "proper" cycle the panel could eventually be permanently damaged.

Sounds like a battery, or maybe even a dishwasher.

It's not that those steps are necessary to prevent damage, it's that those steps were traditionally necessary to maintain calibration of the individual cell states. Also...the first several generations used really slow graphics processors based on the premise that use cases didn't require fast refreshing.

eInk mostly fixed the calibration issue years ago before the first eink monitors came out, and most eink products these days use beefier graphics processors.

> It's not that those steps are necessary to prevent damage,

It is my understanding (but I'm not even remotely an expert) that e-paper panels can suffer from permanent display burn due to the charged ink particles sticking to the glass. The stock waveforms take this into account and prevent it from happening. However I'm not entirely clear on the low level details or if this only applies to some subset of panels or etc.

Yeah that was an issue with the 1st Gen of panels but that was solved over a decade ago.
Related: "How I made a 60fps Eink Monitor" https://www.youtube.com/watch?v=nHbA2-_qzH4
Data sheet seems to say (Page 8 -https://cdn-shop.adafruit.com/product-files/6397/P6397+C2226...):

> Image update time - 25 ÂșC - - 4 - sec

I'm guessing you could probably push that somewhat by going beyond the specifications, would wager a guess how far though.

The datasheet says 4 seconds for the image update time. However, I didn't found the time for partial refresh.
Partial refresh on these can often be surprisingly fast, even when full refresh takes seconds
Probable seconds per frame at least.
Assume slow
The real magic is the esp32, it talks to the steam box with Bluetooth. A Linux app sends metrics to the esp32 and it refreshes the display.
Why would you use esp32/bluetooth though and not just SPI/i2c directly?
It seems like one of the design goals was separation/independence. It also doesn't need a battery if it is meant to be tightly coupled with the Steam Machine. Which is nice for opening it up to many alternate uses.
so probably waveshare or some other ODM? got it.