I made an eInk newspaper

I took a 32″ eInk display and turned it into a digital newspaper that updates every day. It’s silent, wireless and can run for months without being plugged in.

The display is based on the Visionect 32″ place and play display. This works by running two components. The eInk display acts as a thin client and has very little processing power. The eInk requires no power and the rest of the hardware just listens on an open port drawing very little power.

The display is 99% more power efficient than a traditional LCD, so the display can run for months without being charged. Because the display is a thin client it requires two external components to make it work. The first is an HTML rendering server. This fetches web-pages and renders them as a headless browser. It can then push images to the display. The second is an application server that fetches newspapers from around the country, downloads the PDF’s and turns those into images and HTML that can be processed.

The HTML rendering server runs off of a docker container provided by Visionect. A standalone server would be ideal but I couldn’t find documentation on the client/server protocol. This may be a future exploration.

Unless you are technical, I wouldn’t recommend running out and buying one. The server is setup via a docker container and I was able to get it running on my home Synology NAS backup server. The second part is the part that I wrote to fetch newspaper files from online sources like, a non-profit, that works on the first amendment freedom of the press issues.

The newspaper portion runs as a simple web-application fetching large format PDF files and resizing them to fit the large format display. You can find code for the project on Github. The result is a display that is both engaging and passive. There’s no buttons, no UI, nothing to touch or fiddle with… The newspapers cycle every 10 minutes. In the morning there’s always a fresh front-page to skim. The beauty of eInk is that it’s 99% more efficient than traditional displays like LCD. This means that the display can run for months and when it needs charging I can simply top-it-up.

Why did I build this? I saw something similar online a few years ago and I couldn’t find it for sale so I decided to built it myself. I worked on a newspaper when I was in college and my editor in chief Mike Bossi would always tell people to read multiple newspapers. He said that the truth is never in one paper or one story. Every writer has bias. By getting multiple perspectives you get a better picture of the truth.

This digital display is a little reminder of that. While most websites are powered by content management systems and templates. Traditional newspapers are sill designed by hand.

The design principals that work well in newspapers can also be applied in the design of our digital products. Balance, Prominence, Margins, Columns and more. A great newspaper design helps readers skim, read, digest and understand and when you can understand without any UI at all, that’s something special.

Like this post? Use my affiliate link if you decide to purchase the Visionect Place & Play Display:

15 replies on “I made an eInk newspaper”

I love to see this. There was an open source eink project floating around for a while that seems to be abandoned, but I think there’s a to of potential with eink that’s not yet being taken advantage of yet

That’s an amazing project ! I wish eInk displays would be more widespread because they have a huge potential imo. Neat work and explanation, you indeed managed to provide several reading levels.

So cool. I edited a newspaper in college and it ended up paying for my degree. I need this! lol. Just so happens I have a Synology NAS as well…

I discovered the hard way that not all of them will run docker, it depends on the specs of the model. Do check before you invest to much in this project…

“the hardware just listens on an open port” … “then push images to the display”. Hhhmm, that’s…ugly. It should be the other way around. None of the IoT devices should have open ports. The first line of defense is that they never act as servers.

Totally agree. I actually don’t know what the internal security of these devices is. I know it listens on a port, I don’t know if the port is truly open or uses some form of authentication. I’ve asked the company for documentation of the server protocol but they haven’t provided it and I haven’t had the time to sniff the network traffic.

Thanks for writing this! I’ve totally copied you, and I have some suggestions:
1. If you raise the render timeout in the visionect settings, you wont get the weird white box in the top left before it writes the full image. For some reason by default it likes to render as early as possible. I raised to 10 seconds.
2. I suggest using pdftoppm to produce pngs, they will be much much higher quality than the jpegs from imagemagick. I use ‘pdftoppm -r 94 -scale-to 2560 -gray’ and then i set max-width: 100% which shortens images where they would otherwise overflow the sides.

Thanks for the tips. I have actually transitioned to PNGs on my branch too. Haven’t pushed that version out yet. Good tip on the refresh timeout!

Hi Greg! Fantastic project. I’m having a small bit of trouble with the code, and wondering if you might be able to offer any guidance on where to look. I attempted hosting this on my localhost apache server on my mac, but had no luck, so I brought it to my server with godaddy.

In the error log I’m getting – PHP Warning: fopen(counter.txt): failed to open stream: No such file or directory in /home/r65pmp198edy/public_html/index.php on line 27

Any thoughts?
Thanks again for the fantastic project!

Strange… You should be able to just create a file counter.txt on your server in the same folder. The code also creates an archive folder and downloads newspaper PDF’s and JPG images. If you create the counter.txt file and it still has issues you’ll have to ssh into the server and make sure you can create files and folders with the user account that the script is running under. It may either be a PHP version thing or a permissions thing. I’m running it on a low-end cloud server at SiteGround but it should work on any basic host as long as the PHP version and permissions are good.

Hey Greg! Thanks for the ideas.. as is, it does create the counter.txt file, the archive folder, and it downloads pdfs. Just doesn’t want to show (or make) the image.

Ok. Sounds like you don’t have the convert utility on your host. If you’re willing to do a little basic development you can try to see if there’s an alternative to “convert” on your host. It’s likely one line of code, of course the trick is fixing that one line. Good luck. If you do find something that works, please feel free to comment or submit a fix directly on the github repo.

Leave a Reply

Your email address will not be published.