Summary of Build A FPGA eink Controller Using Arduino
This project revives a two-year-old initiative to control a broken Kindle 3 e-ink display using an FPGA. The author replaced a previous STM32 setup with an ICE40 Olimex board and a TI TPS65185 IC for power management, achieving better performance than black-and-white microcontroller solutions. Key challenges involved implementing custom waveforms for smooth screen transitions and developing a tool called IfUSB to simplify the workflow. The system supports 6-inch, 16-color displays like the ED060SC7 and potentially the Kobo ED060SCE.
Parts used in the FPGA eink Controller:
- Kindle 3 eink display (ED060SC7)
- ICE40 Olimex board (iCE40HX1K-EVB)
- TI TPS65185 IC
- SPI flash memory (integrated in ribbon cable)
- IfUSB tool (custom software)
Description

The idea is to control an old broken kindle 3 eink display with a FPGA. I started looking at http://essentialscrap.com/eink/waveforms.html and http://spritesmods.com/?art=einkdisplay since eink constructor is so secretive that you can’t find any information. I got some success with a stm32f4 microcontroller but was disappointed by the poor performance (low refresh, black and white only). So I decided to do something better using an FPGA and some memory, I started with the ice40 Olimex board https://www.olimex.com/Products/FPGA/iCE40/iCE40HX1K-EVB/open-source-hardware.
Details
Essential scrap website provide information about power driving of theses screen, but I was more interested in the signal driving, so I choose to use the TI TPS65185 IC http://www.ti.com/product/TPS65185 which manage everything (special thanks to @Arthur Admiraal for his design https://hackaday.io/project/7153-squidpad which I partially reused).
I used ICE40 because of the open-source toolchain available http://www.clifford.at/icestorm/
The memory permit to include a framebuffer, my Verilog implement a small SPI interface to communicate with the controller.
To simplify the development, I finally created my own little tool https://hackaday.io/project/14864-ifusb
The board is specifically made for Kindle 3 display (ED060SC7), but should works with some other display from this generation (ED060SCE found in Kobo) which are 6″ 800×600 16 colors.
Hardest part was to implement “waveform” which permit to make smooth and fast transition between screen refresh.
In the Kindle 3 screen, the waveform is actually integrated into an SPI flash in the ribbon cable. In others e-reader, this can generally be found in the firmware. E-Ink (PVI) created his own format, supported by custom controller, and some dedicated Epson chip. I think these controllers are obsoleted since CPU manufacturers does integrate the controller directly. Actually the main (only?) manufacturer which provide CPU supporting eink screen is Freescale (imx6 solo) and they created their format as well.
Read more: Build A FPGA eink Controller Using Arduino
- What was the main reason for switching from an STM32 microcontroller to an FPGA?
The STM32f4 offered poor performance with low refresh rates and black and white only output. - How does the project manage power driving for the screen?
The project uses the TI TPS65185 IC which manages everything including power driving. - Why was the ICE40 chip selected for this build?
The ICE40 was chosen because of the open-source toolchain available for it. - What is the purpose of the IfUSB tool created by the author?
The IfUSB tool was created to simplify the development process. - Does this controller work with displays other than the Kindle 3?
Yes, it should work with other displays from this generation such as the ED060SCE found in Kobo devices. - Where is the waveform data typically stored in Kindle 3 screens?
In the Kindle 3 screen, the waveform is integrated into an SPI flash located in the ribbon cable. - What resolution and color depth does the supported display have?
The display is 6 inches with a resolution of 800x600 and supports 16 colors. - Which manufacturer currently provides CPUs that support eink screens directly?
Freescale is identified as the main manufacturer providing CPUs supporting eink screens.
