15

I am particularly interested in the ED060XC3 that is in the kindle paperwhite (I think that is the right one anyway).

I can't find a freely available datasheet. Would it be possible to reverse engineer a driver from the kindle firmware?

There are acutally 3 interfaces (display, backlight , touchscreen) but the display interface would be the most important and interesting. I intend to purchase one for use with an FPGA if I can determine if it is possible to operate it first.

From what I understand the module itself may not contain a controller but I would have to implement an EPD controller in my FPGA like this.

You can see images of the screen here: aliexpress

Glorfindel
  • 230
  • 1
  • 2
  • 10
cb88
  • 2,320
  • 2
  • 18
  • 33

4 Answers4

8

I don't have an actual answer but here's a few leads.

Freescale has some chips in the i.MX6 family with the EPD interface:

https://community.freescale.com/docs/DOC-93622

I think the signals are described in the CPU datasheet, but not the protocol. Even with the older devices when a dedicated controller had to be used, its datasheet would describe only the controller and not the panel.

Apollo controller datasheet (first generation, used in Sony PRS-500), made by Philips (later PVI):
http://openinkpot.org/raw-attachment/wiki/Device/V3/Screen/Apollo_eInk_screen_controller_datasheet.pdf

The second generation controller (Metronome) was made by E-Ink but they in fact used an Actel ProASIC3 FPGA as can be seen on my photos of PRS-505 innards:

http://www.flickr.com/photos/21729510@N03/2111017270/in/set-72157603454047408

So in theory you might be able to extract the bitstream and RE it or just reuse in your own FPGA. However, it would work only with the first-gen Vizplex panels and probably not with the current ones.

Third generation controller was a dedicated chip made by Epson (S1D13521B, codename Broadsheet). Baidu has a copy of internal training from E-Ink which describes some low-level details on how develop with it (but again, not much on the panel itself):

http://wenku.baidu.com/view/187d53956bec0975f465e245.html

In the end, driving EPD panel is even trickier business than driving a generic LCD. So, unless you know this area very well, I would recommend to stick to a proven solution such as Freescale's chips or a dedicated controller.

If you're not dead set on the hi-res screen, you may be interested in this collection of kits with small resolution and segmented E-Ink screens:

http://www.the-digital-reader.com/2013/05/23/e-ink-dives-into-the-diy-market/

Igor Skochinsky
  • 36,553
  • 7
  • 65
  • 115
5

Kindle is based on embedded Linux. Thus Amazon is forced to distribute the source code. You might find the actual driver sources there.

You can find the sources here.http://www.amazon.com/gp/help/customer/display.html?nodeId=200203720

Mellowcandle
  • 4,795
  • 6
  • 34
  • 47
5

Looking at the kernel source for the kindle touch (mx50_yoshi.c, see here) it seems to me that the epd configuration, init sequence and so on is all there.

I only checked for the touch cause the touch eink seems to be currently the cheapest. (ED060SCG)

Code

static struct fb_videomode e60_v220_mode = {
.name = "E60_V220",
.refresh = 85,
.xres = 800,
#ifdef CONFIG_FRAMEBUFFER_CONSOLE
.yres = 800,
#else
.yres = 600,
#endif
.pixclock = 32000000,
.left_margin = 8,
.right_margin = 166,
.upper_margin = 4,
.lower_margin = 26,
.hsync_len = 20,
.vsync_len = 4,
.sync = 0,
.vmode = FB_VMODE_NONINTERLACED,
.flag = 0,
};

static struct fb_videomode e60_v220_wj_mode = { .name = "E60_V220_WJ", .refresh = 85, .xres = 800, #ifdef CONFIG_FRAMEBUFFER_CONSOLE .yres = 800, #else .yres = 600, #endif .pixclock = 32000000, .left_margin = 17, .right_margin = 172, .upper_margin = 4, .lower_margin = 18, .hsync_len = 15, .vsync_len = 4, .sync = 0, .vmode = FB_VMODE_NONINTERLACED, .flag = 0, };

static struct mxc_epdc_fb_mode panel_modes[] = { { &e60_v220_wj_mode, 4, /* vscan_holdoff / 10, / sdoed_width / 20, / sdoed_delay / 10, / sdoez_width / 20, / sdoez_delay / 425, / gdclk_hp_offs / 20, / gdsp_offs / 0, / gdoe_offs / 17, / gdclk_offs / 1, / num_ce */ }, };

I'm also thinking about using an imx6 duallite to drive such a panel.

Schischu
  • 51
  • 1
  • 1
  • 2
    This only helps with the software protocol to the controller. The asker is interested in the hardware interface to the E-Ink panel itself (pinout, signaling etc.). – Igor Skochinsky Apr 05 '14 at 14:17
  • thank you, I have also checked the source code but there are many files. How did you prune out your way into deciding to the "mx50_yoshi.c" file, in other words, how did you arrive to that file? – b.g. Feb 07 '21 at 22:20
4

Petteri Aimonen has figured out how to drive the panel and Sprite_tm made a wireless display out of one

Igor Skochinsky
  • 36,553
  • 7
  • 65
  • 115
  • He's using a different panel than ED060XC3 but perhaps the display interface is the same. I think the backlight is probably just PWMed LEDs. – cb88 Feb 17 '15 at 23:59
  • Also the ED060XD4 is the updated paperwhite 2 screen ... just for reference. – cb88 Feb 18 '15 at 00:00