Esquire 75th Anniversary E-ink Cover


Esquire magazine printed (assembled) 100,000 copies of their magazine with two simple segmented e-ink displays driven by a Microchip PIC12F629 microcontroller for their October 2008 special anniversary issue.

esquire-e-ink-cover-1008-lg
(Photo: Esquire magazine)

It was a letdown for many expectant nerds but when I saw the photo series in MAKE magazine and realized it used a PIC I had to get a copy and play with it. I added some hardware to allow access to the PIC firmware after tearing the electronics out (including, unfortunately, part of the front cover). First I added a connector to allow attaching a Microchip ICD-2 programmer to the board. Then I removed the 0-ohm resistor R7 and replaced it with a switch to disconnect the battery from the PIC when I was reading or loading code. And finally I added a reset button on the pads thoughtfully left for that purpose by the board designers.

esq_brd_additions1_sm
ICSP Connector and Power Switch

The Esquire editors mention that they encourage hacking and they thoughtfully left the code in the PIC unprotected. I was able to read it out and and over the course of a scotch or two I reverse engineered it. All the time I have spent writing PIC assembly for my main project has some benefit I guess. Based on the strange little code segments I found (e.g. a goto to the next line) it appears that the firmware designer used a high-level language such as PICBASIC or C. In any event the code is very simple. They use the retlw instruction to build a series of 4 tables containing 16-bit data words that are loaded into external shift registers to drive the display. The firmware just indexes through the tables. An interesting trick is the use of the sleep instruction coupled with a watchdog-timeout to save power between animation steps. After loading the display the PIC sleeps until the WDT expires at which point the PIC loads the next step in the animation and sleeps again. There are two animations in the firmware. The first one runs only once when the PIC is first reset. It is 21 steps long. Each change on the display generally requires two steps. The first step erases any previously set e-ink segments. The second step sets the new e-ink segment(s). The second animation is repeated over and over. It is 210 steps long. I thought about changing the animation but decided it was too much work to make a better animation than Esquire had already created. I decided to use the two spare output pins on the PIC to drive LEDs and animate them using another table in the firmware.

esq_brd_w_leds
LEDs along the bottom of the board

The LEDs are driven by active high outputs on the PIC through 200 ohm resistors to limit the current to about 5 mA each. They are used to limit the maximum current drawn from the battery to prevent possible life-shortening damage to it. I added a jumper to disable the LEDs because the hack consumes orders of magnitude more power than the unmodified board and would only last a few hours running continuously.

finished_cover
(click image for video)

I'd love to hear about your hacks. Like S1axter, I've decided not to publish the reverse engineered firmware because I don't know its copyright status. However I'm happy to chat about what I found.