Here's a quick tutorial for turning an old Nook into a passive display. This is an update to my 2013 post
An eInk screen which displays the trains I can catch from my local station.
It shows the next few available trains, and whether they're delayed. It also shows how long until the next local bus to the train station.
Updating the Nook
Before doing anything, manually update the Nook's firmware. You can download the latest version from Barnes and Nobel
.zip file to the root directory of your Nook via USB. Unplug the Nook and turn it off. After a few minutes, it should detect the file and perform the update.
Sadly, it's only Android 2.1 - and the TLS implementation is artificially restricted. More on that later!
It's worth deregistering your Nook and then resetting it. You have to press a few buttons to use the Nook without a B&N Account.
Rooting the Nook
Unzip the file. It should just contain
NookManager.img. Write the disk image to a microSD card. Follow the instructions on XDA Developers to root the device.
Changing the Launcher
With the Nook connected to your computer by USB, run:
adb install com.gacode.relaunchx_200105000.apk
That will install the launcher. When you hit the Nook's home button, you will be able to select it as the default launcher.
Running a modern web browser on the Nook is close to impossible. So I recommend using Electric Sign. It's an open source Android app which periodically calls a URl, turns it into an image, and then uses it as the Nook's screensaver.
Again, install it using:
adb install Electric\ Sign_v1.0.3_apkpure.com.apk
Launch it from ReLaunchX and follow the setup screen. I set it to reload every 5 minutes from 7AM until 9pm.
Here's where life gets complicated. The World Wide Web is changing to become more secure. Sadly, this means older browsers simply cannot access modern web servers. Even though B&N have updated the Nook to use TLS 1.3 - it only works with their own servers. Trying to access modern
https:// sites just won't work.
So, you will need to point Electric Sign to an unencrypted website.
UK trains have an open API, the snappily named Live Departure Boards Web Service (LDBWS). You need to register for an API key, which is pretty much instant.
There's a great PHP library for OpenLDBWS. You can also find libraries in most popular programming languages.
I created a quick little page which displays the trains that either my wife or I can catch to get to our jobs. When we're sat eating breakfast, we can see if our regular train is delayed.
I have an Alexa skill to tell me the bus times - but listening is much slower than reading. So I also added bus times.
You can also see that I've only included trains we can actually catch. There's no point showing a train leaving in 5 minutes if it takes 10 minutes to walk to the station. The train API shows the departure time of delayed trains, so the code takes that into account.
I used a double-sided 3M sticky pad and plonked it on the wall. No fancy hooks, screws, or magnets. Just glue.
It's conveniently close to an electrical socket. But having a trailing wire looks messy. So we'll only plug it in when it needs a top up. I replaced the Nook battery a few years ago so it should last several days without a recharge.
All the code - plus backups of the binaries - are available on GitLab.
I don't really care about the weather or the news, and there's limited screen space. But if you have any suggestions for what it could display, do let me know.
Hope you found that useful!
I declare this project complete!— Terence Eden (@edent) February 14, 2020
We now have a passive display showing us bus & train times.
Blog post coming up this weekend. pic.twitter.com/m2emF5rq3e