joukos / PaperTTY

PaperTTY - Python module to render a TTY or VNC on e-ink
953 stars 104 forks source link

Safety and image clarity #48

Open joukos opened 4 years ago

joukos commented 4 years ago

In order to prevent any potential damage for long running applications and keep the image clean, a couple of things ought to be done:

Rationale for deep sleep is an entry in the FAQ tab of Waveshare wiki page for 2.13" (not sure when it was added but I don't remember seeing this particular mention earlier):

Question: Why my e-paper has ghosting problem after working for some days Answer: Please set the e-paper to sleep mode or disconnect it if you needn't refresh the e-paper but need to power on your development board or Raspberry Pi for long time.Otherwise, the voltage of panel keeps high and it will damage the panel

Rationale for full refreshes every now and then is also on the same FAQ page:

Note that you cannot use Partial refresh all the time, you should full refresh e-paper regularly, otherwise, ghost problem will get worse even damage.

Also regarding the three-color variants, there's yet another note (though its exact meaning is a bit vague to me):

You need to update the content of three-color e-Paper at least one time every 24h to avoid from burn-in problem.

The last thing I want is someone's display suffering damage from running PaperTTY too long (which might be a very typical use case), so I think these should be addressed.

gdkrmr commented 4 years ago

Handle SIGUSR1 for full refresh and SIGUSR2 for a short deep sleep?

chi-lambda commented 4 years ago

My 6" display doesn't seem to have that problem. Might be a common feature of IT8951 displays, thanks to the additional controller.

@math85360 @jeLee6gi @C-Rothnie, what is your experience?

joukos commented 4 years ago

Handle SIGUSR1 for full refresh and SIGUSR2 for a short deep sleep?

I think I would put the display to sleep automatically after N updates with no image changes, if only it's feasible to do so (ie. no unreasonable overhead or other issues). N could even be quite low, or a particular elapsed time. The signals can be left for manual overrides, but I'm not yet decided on what those should be.

I'm thinking that perhaps there should be a --powersave option (on by default) that does at least two things:

  1. Puts the display to sleep when nothing is happening
  2. Automatically adjusts the sleep interval to something larger (up to a certain maximum for example)

This would keep the display mostly asleep if the updates happen irregularly and also keep the CPU usage down in those cases by making PaperTTY itself slow its pace. When the image updates again, it would go back to regular refresh rates (or perhaps there could be a slowly adaptive method for this).

To do this nicely we might need to have some configurable values such as the minimum and maximum update intervals.

So, maybe in the future we could have --powersave with perhaps settings like:

I've been meaning to tackle the config file issue at some point, perhaps as "profiles" in YAML format (so one can do ./papertty.py -f cottage_vnc.yaml etc.), and with all these new configuration options it's going to be needed soon...

Dunno, how does this sound?

lvan188 commented 4 years ago

Can you post a tutorial video

joukos commented 4 years ago

Can you post a tutorial video

Please create a new issue about this if you feel it's needed (requesting it in an unrelated issue is confusing) - the documentation has mostly been rewritten already, but as usual, I've been too busy with other things to finish it.