Electrophoretic displays (EPDs) like the one used on the reMarkable are arrays of cells, each one containing charged black and white particles. Unlike traditional displays, one cannot directly set the intensity of a given cell. Instead, the EPD controller (EPDC) can either apply a positive charge to a cell to move its black particles to the top or a negative charge to move its white particles to the top. By alternating between the two charges, one can create a mix of both particle types to form the desired shade of gray.
A waveform is a timed sequence of commands sent to the controller to transition a cell from a given shade of gray to another. There is a trade-off between time and fidelity here: to make a cell have precisely the right shade, we usually need to have a longer waveform, but in some scenarios we don’t really care about the precise shade and just want fast updates, i.e. shorter waveforms (for example, when drawing on the rM). The waveforms also need to change depending on the ambient temperature, because of the chemical properties of the display. Look-up tables contain the right waveform to apply in each of these scenarios. On rM2, those look-up tables are stored in *.wbf files in /usr/share/remarkable
.
TODO