Originally Posted by hawhill
Well, it's that easy: I can't turn off flash with grayscale. The driver does the flash, the refresh ioctl() is actually the same in both cases. I did not analyze the kernel driver yet (which is in the linux kernel source bundle from Amazon). But it might be buried even deeper in the eink controller, with (currently) not much options to change that behaviour.
I'm not sure how grayscale is archieved in the first place, BTW, but I think it might be an interference induced dither micro-pattern. Maybe it's too hard to calculate this (going from gray to gray would need to carefully switch within the pattern micro-resolution). when you're not coming from strictly black and white.
If you look with a microscope, you will see that the gray beads have less zinc oxide powder stuck to their top (visible) surface. Also, if you take a kindle apart, and remove the protective rigid backing from the glass display, you will see a silvery "negative" image of what is on the front, because the white particles are either on the back (black pixels), or the front (white pixels), or some on both front and back (and the sides of the beads too, probably), for gray pixels.
About text vs. animation, you can dither ONLY the part of the screen that is changing (video) and leave the text part as nice and pretty fully grayscale-antialiased text. That would require that you determine a bounding box on the dirty (changing) parts of the display and dither ONLY that part.
P.S. I uploaded a (fixed) dithermatron v1.1 that does not abort early on the K4(mini) and K5(touch), which shows off my dithered setpixel "formula 42". It works on all kindle models and it is pretty fast (cache-friendly branch-free code). You are welcome to "borrow" it.