Monday 5 December 2016

Nook Simple Touch

Resurrecting an old Nook Touch

In a quest to find some larger e-ink screens for projects I came across the Nook Simple Touch, which features a 600x800 e-ink touch screen.
I picked one up from eBay to potentially steal the screen, or at least hack an interface for a Raspberry Pi or Arduino.
As it happens, the 800MHz processor package isn't too bad to power your own projects. The wireless can hook up the screen to a network and provide an interface most projects without opening the back.

Getting the Nook working

If you are in the UK then B&N have stopped supporting the Nook devices on their book store. This also means you cannot register a device. The first hurdle to overcome is the registration to use the device. It's also a prerequisite to rooting. 

If you ask B&N nicely they will give you the following steps:
1. Turn on and wait for the welcome screen
2. Press the top right page turn button and at the same time swipe across the top of the screen (left to right)
3. The Factory button will appear. Press this to activate the factory settings screen
4. Hold down the same button as before (top right page button) and at the same time tap the bottom right of the screen.
5. A Skip Oobe button will appear as shown in the image below. Press this button.


You can now use the Nook Simple Touch without registration.

As it is the Nook can connect to a PC and PDFs or e-books can be uploaded to the device memory for reading on the screen.

Rooting

Rooting the device allows additional Android applications to be loaded, but don't expect to be loading up the latest apps from the store. The device only supports Android 2.1 and any potential hacks to upgrade will only get as far as Gingerbread.

Nook Manager is one of the many rooting apps available and I found it easy to use. It also allows an SSH server and/or a remote ADB to be run on the device.

I did have success installing the play store and logging in to my account. It does take some time to activate properly. The result were apps, which either crashed or were so old the services they used were no longer available. The BBC News app was the only one I could get working.

On the plus side the Nook Manager app is fairly easy to reverse engineer and is actually a good example to get started on custom code for the Nook Touch. Under the hood there's an Android Linux OS which will run code compiled for the ARM 7 processor so with a bit of cross compilation the device can be made to dance to your tune.

Custom code

Following the Nook Touch example and writing to the frame buffer directly allows 16 bit grey scale images to be displayed. For custom use none of the Android environment is needed. 
The great thing about the Nook is that it boots from the external SD card slot so custom kernels and ramdisk images can be loaded up without overwriting the old Nook system stored in internal memory. 

Managing the uRamdisk images requires a Linux system with dd and mkimage tools or a Window's tool can be downloaded called ImgUtil

Customise the init.rc start up script to run anything you want at start-up. Nook Manager runs a system_ready script when booted.

Example code on the Nook

A little application I've written provides weather reports from Open Weather Map on the Nook screen. 
This writes to the frame buffer directly, reads ZForce inputs from the touch screen and reads inputs from the buttons around the screen.
All code can be found in GitHub at https://github.com/AidanHolmes/NookDisplay. This also uses the graphics library at https://github.com/AidanHolmes/graphicslib

It's cold but maybe not that cold openweathermap