|
|
#1 |
|
Connoisseur
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Posts: 59
Karma: 3656
Join Date: Feb 2009
Device: cybook
|
2x faster display on pocketbook
# REAGL Mode for PocketBook — Activation Guide
REAGL is a ghost-compensated non-flashing EPD waveform mode built into the factory waveform file. It delivers 16-gray quality at 2.1× the speed of GC16 (270 vs 576 frames at room temperature), handling ghosting on every partial update so you no longer need periodic full-screen flashes. ## What It Does ``` GC16 (stock): erase → black → white → target → 576 frames, visible flash REAGL (mod): ghost-compensate → target → 270 frames, no flash ``` InkView (PocketBook's display server) only uses GC16 (mode 2). By telling the kernel "when InkView asks for mode 2, use mode 8's waveform data instead", all updates become REAGL. No files modified. No InkView patching. Survives until reboot. ## Prerequisites - PocketBook device with Allwinner B288 SoC (InkPad 3, InkPad 3 Pro, InkPad 4, Touch HD 3, Color, Verse, Era) - Root SSH access via pbjb jailbreak ([guide](https://www.mobileread.com/forums/sh...d.php?t=325185)) - KOReader installed and booting directly ## Activation (Runtime) SSH into the device and run: ```sh luajit -e ' ffi = require("ffi") ffi.cdef[[int open(const char*,int); int close(int); int ioctl(int, unsigned long, ...);]] require("ffi/mxcfb_pocketbook_h") ffi.cdef[[struct mxcfb_waveform_modes { int mode_count; int modes[16]; };]] wm = ffi.new("struct mxcfb_waveform_modes") wm.mode_count = 11 for i = 0, 10 do wm.modes[i] = 8 end wm.modes[14] = 8 fd = ffi.C.open("/dev/fb0", 2) ffi.C.ioctl(fd, 0x4024462B, wm) ffi.C.close(fd) print("REAGL active") ' ``` Takes effect immediately. KOReader and native PocketBook UI both benefit. ### In KOReader — Disable Full Refresh Gear menu → Screen → E-ink settings → Full refresh rate → Never (or 99). With REAGL ghost-compensating each partial, periodic flashes are unnecessary. ## Making Permanent (Survives Reboot) Add the luajit one-liner to `/mnt/secure/etc/init.d/03-koreader.sh` before the bind-mounts. Replace `/path/to/koreader` with your KOReader build path: ```sh #!/bin/sh # Activate REAGL mode remap /path/to/koreader/luajit -e ' ffi = require("ffi") ffi.cdef[[int open(const char*,int); int close(int); int ioctl(int, unsigned long, ...);]] require("ffi/mxcfb_pocketbook_h") ffi.cdef[[struct mxcfb_waveform_modes { int mode_count; int modes[16]; };]] wm = ffi.new("struct mxcfb_waveform_modes") wm.mode_count = 11 for i = 0, 10 do wm.modes[i] = 8 end wm.modes[14] = 8 fd = ffi.C.open("/dev/fb0", 2) ffi.C.ioctl(fd, 0x4024462B, wm) ffi.C.close(fd) ' # Bind-mount KOReader over bookshelf umount /ebrmain/cramfs/bin/bookshelf.app 2>/dev/null mount --bind /mnt/secure/bin/bookshelf_koreader /ebrmain/cramfs/bin/bookshelf.app ``` ## Verification ```sh # Check waveform modes loaded (mode 8 should appear) cat /sys/devices/platform/sw-epdc.0/waveform_info | grep Waveforms # Send a test mode 2 update and check dmesg luajit -e ' ffi = require("ffi") ffi.cdef[[int open(const char*,int);int close(int);int ioctl(int,unsigned long,...);]] require("ffi/mxcfb_pocketbook_h") u = ffi.new("struct mxcfb_update_data") u.update_region.top=500;u.update_region.left=500 u.update_region.width=200;u.update_region.height=2 00 u.waveform_mode=2;u.update_mode=0;u.temp=0x1000 fd = ffi.C.open("/dev/fb0",2) ffi.C.ioctl(fd, ffi.C.MXCFB_SEND_UPDATE, u) ffi.C.close(fd) ' dmesg | grep "wf=2" | tail -1 # Shows wf=2 but uses REAGL internally — remap is transparent ``` ## Recovery Reboot. The remap is RAM-only. Or hot-load the original WBF: ```sh cat /boot/default.wbf > /sys/devices/platform/sw-epdc.0/waveform_binary ``` ## Speed Comparison (24°C) | Mode | Frames | Relative | |------|--------|----------| | GC16 (mode 2) | 576 | 1.0× | | GS16 (mode 14) | 435 | 1.3× | | GL16 (mode 5) | 435 | 1.3× | | **REAGL (mode 8)** | **270** | **2.1×** | | DU (mode 1, B/W) | 247 | 2.3× | |
|
|
|
|
|
#2 |
|
Connoisseur
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Posts: 59
Karma: 3656
Join Date: Feb 2009
Device: cybook
|
this works without koreader of course, also its not real reagl just a direct drive method
|
|
|
|
| Advert | |
|
|
|
|
#3 |
|
Weirdo
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Posts: 1,098
Karma: 12503116
Join Date: Nov 2019
Location: Wuppertal, Germany
Device: Kobo Sage, Kobo Libra 2, reMarkable PaperPro
|
So essentially you patched the incompetence of Pocketbook devs
|
|
|
|
|
|
#4 |
|
Connoisseur
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Posts: 59
Karma: 3656
Join Date: Feb 2009
Device: cybook
|
no its more complicated, to get proper reagl to work it requires more work, so they probably abandoned the project and that mode is just a leftover, the mode is called reagl but isnt, its probably just a very short screen updating mode.
i am thinking about implementing advanced updating methods. |
|
|
|
|
|
#5 |
|
0000000000101010
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Posts: 5,938
Karma: 12984859
Join Date: Mar 2023
Location: An island off the coast of Ireland
Device: PB632 [HD3]
|
If you've rooted with pbjb you should be able to place startup scripts in:
/mnt/ext1/system/init.d I've tested it on my HD3, I can't tell if it's made the display noticeably faster For the bind-mount, what is: /mnt/secure/bin/bookshelf_koreader This write-up does not specify what this file is, how it is created. Last edited by neil_swann80; 05-20-2026 at 11:55 PM. |
|
|
|
| Advert | |
|
|
|
|
#6 | |
|
Connoisseur
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Posts: 59
Karma: 3656
Join Date: Feb 2009
Device: cybook
|
Quote:
|
|
|
|
|
![]() |
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| faster display inkpad 3 pro and others | x3oo | PocketBook Developer's Corner | 8 | 05-21-2026 11:48 AM |
| how to display the series and the numbers in Pocketbook? | donpopo | Devices | 14 | 08-05-2020 09:07 AM |
| 302 display problem pocketbook 302 | harmen | PocketBook | 1 | 05-15-2012 07:17 AM |
| PocketBook 912 display partnumber | alexandel | PocketBook | 10 | 10-24-2011 06:02 PM |
| IQ Line in Pocketbook IQ display | obiwan99 | PocketBook | 16 | 01-13-2011 11:04 PM |