coolreader icon indicating copy to clipboard operation
coolreader copied to clipboard

In-App refresh for eInk devices

Open schwukas opened this issue 5 years ago • 6 comments

Hey,

I am not sure whether you're aware that your CoolReader has grown pretty popular on the german Tolino eReader device. It ships with a closed source standard app that is alright in terms of usage, but also has some restrictions you obviously can't fix. That's why many users use a little workaround to install alternative reader apps such as yours.

Anyway, along with the recent update Android has been updated to 4.4.2 which moved the eInk display refresh from the system's responsibilities to the app's. This means that you quickly run into serious ghosting on the display.

Are you by any chance planning to implement some functionality to overcome this problem in the near future? I'm pretty new to eInk and I can't properly gauge how much effort this would be for you. I can, however offer you to run tests on my device if that helps in any way.

Lukas

schwukas avatar Aug 01 '18 15:08 schwukas

@petigPelle Would you happen to have any information/docs/API about what this "moving responsibility to the app" means?

Frenzie avatar Aug 01 '18 16:08 Frenzie

Unfortunately I do not. The more active users always talk about the fact that the refreshing has been moved from the system to the app itself which means that when you're using non-eInk apps you run into pretty serious ghosting after some times since there is no refresh to clear the screen again.

Apparently, OReader (which is an Onyx adaption of AIReader) is still usable which makes sense as it's developed by Onyx which sells eReaders as well. Maybe that is helpful.

That is pretty much all I can tell you. I have done some minor Android modding myself but I'm pretty new to eReader devices. If I should find something helpful I will get back to you.

schwukas avatar Aug 02 '18 11:08 schwukas

CoolReader uses manufacturer and device ids to identify device as E-ink. In general, when e-ink device is detected, rendering mode is switched to 16 levels of grayscale + dithering. Color scheme is fixed to black on white.
For some devices, there is a support of update mode changing. This options is device specific. Usually, some dynamic library should be loaded, and some function(s) from it should be called for changing of setting. If there is already support for some controller type, it's easy to enable control for other devices with the same controller. But if there is no support of e-ink device controller, additional work is required to implement it.

PS: recent PR adds identification of all ONYX devices as e-ink.

buggins avatar Aug 06 '18 08:08 buggins

Alright, thanks for your comments. I am talking about this device: https://mytolino.com/tolino-shine-2hd/technical-specifications/

The only thing I could find out from my model is, that its model number is 'tolino' which isn't very helpful I would guess.

If you can tell me how to provide you with more information (given, you would actually consider to implement a controller) I will gladly do so.

schwukas avatar Aug 07 '18 06:08 schwukas

Hi Vadim, There is already TolinoEpdController in coolreader, which uses the "Screenhelper" wrapper for the libepd.so library on the Tolino devices. It was working fine until Tolino FW 10.1.0, running on Android 4.0.4, but now they upgraded fro FW 11.2.3 which uses Android 4.4.2, and since then coolreader is not working - it is not able to execute next/previous page commands. It doesn't matter which mode I configure - quality, fast or fast2, neither of them work. I implemented debug outputs in all methods of tolinoepdcontroller and saw, that all of the functions are not returning 1 (true) but false ... I guess that perhaps they changed the interface somehow.

The only way for me to get next/previous page working is like this:

  1. Start CR and say were are on page 10
  2. Execute page down (nothing happens)
  3. Execute one of the popups like positionpopup (displays 3 seconds a popup)
  4. After it disappears, CR shows the next page !!!
  5. again page down (nothing happens)
  6. Execute the popup and after it disappears, next page is shown etc.

I tired to dig into this, trying to understand how it refreshes after the popup disappears, my first attempt was to only decrease that 3 sec timeout to say 1 ms, but then it works only once ...

If you can give me some pointers I'd be interested to help with this. From where do you have the screenhelper.java (interface of libepd.so ?)

Thanks, Norbert

norbi24 avatar Nov 13 '18 09:11 norbi24

In the thread above, IIRC I had found EPubProd.apk to contain all the magic.

mirh avatar Dec 09 '18 16:12 mirh