I’ve always liked E-ink as a display technology, particularly as an alternative to LCDs. They’ll never be as popular, due to the inherent limitations of low refresh rates and low color saturation. In turn, they’re great for static renders, particularly when it comes to black-and-white text and drawings, and increasingly as distraction-free note-takers. Between the various Kindles that I’ve upgraded throughout the years1 and the Remarkable tablet that I’m still using every day for jotting down work notes, I find the technology to be a good complement to the myriad of LCD screens—phones, iPads, laptops, Google Hubs, desktop displays, TVs—already scattered throughout the house.
Recently, due to the growing complexities of the kids’ school and after-school schedules, I wanted to build a separate calendar for family-related events and have it displayed in a common area of the house—a digital equivalent of a wall calendar that you’d scribble on for dentist appointments and dress recitals. Google Nest Hub would be the perfect device for this, but for some reason, there is no option to force a calendar view and the Nest Hub already struggles with juggling more than a single user account. There are a couple of third-party dashboards with prominent calendar views, but they often amount to mounting a giant TV in the kitchen and tend to require proprietary software backed by monthly subscriptions that seemed heavy for the functionality. The dazzling graphics and animations and even the touch interface would be distracting, when I wanted a simple view of the next few weeks reminding the family what was coming up.
So yeah, an e-ink display could work here.
Because e-ink displays are less mainstream, they’ve always had this niche hacker appeal and are featured in a number of DIY projects. For syncing with and displaying Google Calendar, there are a couple of open source projects that I found; most work by hooking up a display with a RaspberryPi or an even lower-powered processor and then running scripts to regularly fetch data via GCal’s API. Because e-ink displays draw no power at rest, i.e., the only time it needs power is when the screen needs to refresh, a calendar display can run reasonably off of a small battery as long as the processing needs are minuscule.
The project I implemented was the MagInkCal, which I then further customized with a calendar UI that better fit my needs2. I got the biggest e-ink monitor I could find at a reasonable price, from a well-known Chinese manufacturer of this type of enthusiast hardware. I paired it with a RaspberryPi Zero 2 W computer and hooked all of it up to a PiSugar3 battery pack. All of it fits, tightly, inside of the associated acrylic frame, which I’ve placed on the kitchen counter next to the Google Nest Hub. In running the frame for about 3 weeks at this point, I’ve run the battery down to ~90%, so I’d expect maybe 6 months in-between charges, which isn’t bad at all.
The way MagInkCal works is pretty clever as well. It’s a Python app that makes an API call to GCal to fetch calendar event data for the next x weeks3, and then runs a headless Selenium server that renders a fixed size webpage. The app takes a screenshot of the page, and then manually draws it out onto the display. To tie to together, the PiSugar battery wakes itself up and provides power to the RPi to boot it up every morning, triggering the app via a cron
job. After 2 minutes of image rendering and display refreshes the app shuts the RPi down4—which is mainly how a smallish, 1200 mAh battery can last months. The fact that it makes use of the web stack made styling much more flexible, not unlike certain Electron apps where ease of development trumps native implementations.
I’m pretty happy with the end product. We’ve been using our shared calendar more now as a family, as the display lets us casually view the upcoming set of events walking by the kitchen, instead opening up a calendar app on the phone looking for the same information. I do wish that the e-ink display would be of a higher resolution and DPI; at 1304 × 984 and 131 DPI, you can certainly see the pixels and the combination of low resolution and e-ink meant that various fonts rendered illegibly, even at larger sizes. I ended up learning a bit about what people do with RaspberryPi’s and how to work with enthusiast hardware devices, in case I…uh, run out of stuff to do in the future.
I just got a Kobo Sage e-reader too, as Amazon fails to update their Kindle Oasis flagship reader for 4 years now.↩
And I think is an upgrade in aesthetics.↩
The original calendar fetches 5 weeks’ worth of events; I only needed 2 for my interface.↩
It also helped keep the updates constant as the RPi sometimes had trouble keeping its WiFi connectivity if kept on for too long.↩