So far I've got executables running on the Reader and manipulating the framebuffer and eink. I've done some benchmarks on the page-turning, since for me personally, page-turn speed is very important.
Code:
Eink temperature: 26
EINK BENCHMARKS
Benchmark: 'clock()' finished! Iterations:1000000 Total time:2.190000s
Per-call time for clock(): 0.002190ms
Benchmark: 2 bit: 'Write to the framebuffer and send to the eink the entire screen' test finished! Iterations:32 Total time:21.170000s
Per-frame time:661.562500ms
MEMCPY time: 32.500000ms
SEND_PIC time: 628.125000ms
DISP_PIC time: 0.937500ms
Benchmark: 2 bit: 'Write to the framebuffer and send to the eink a small region' test finished! Total time:20.250000s
Per-frame time:632.812500ms
MEMCPY time: 0.937500ms
SEND_PIC time: 630.625000ms
DISP_PIC time: 1.250000ms
Benchmark: 1 bit: 'Write to the framebuffer and send to the eink the entire screen' test finished! Total time:20.700000s
Per-frame time:646.875000ms
MEMCPY time: 16.562500ms
SEND_PIC time: 629.375000ms
DISP_PIC time: 0.937500ms
Some things of note: 1bit and 2bit mode take exactly the same time for a page-turn, except for the time it takes to copy the data into the framebuffer. The 1s vs 0.5s is simply not true. Probably Sony just enables the black-white flashing for 2bit and disables it for 1bit. (In my tests it was always disabled.) Also, writing to just a portion of the screen gives no improvement either.
Btw: the process of rendering to eInk is as follows: first copy data into the Linux framebuffer. Second, send a command to the driver to upload the data into the eInk itself. Third, send a command to update the eInk.
P.S. Note that there's a driver call to read eInk temperature. I'm not sure how accurate it is, but would anyone like a clock AND a thermometer?