Kindle Dashboard

I’ve set up a kindle to be an always on weather and calendar dashboard, perfect for quickly glancing at before you leave the house in the morning.

The weather and calendar dashboard

The weather and calendar dashboard

This consists of:

All code is available at rhyst/kindle-weather.

Kindle Set Up

Acquire a Kindle

I bought a second hand Kindle Touch, from the first generation to have a touch screen, from eBay for ~£20. In hindsight getting a slightly later model, if you can find a cheap Paperwhite for example, would be better as they have better and more useful power saving modes.

Download software

There is a large community dedicated to Kindle and ereader hacking and for the Kindle they have helpfully compiled all of the useful software into one forum thread on mobiread. The following is a list of packages I used and you should ensure you download the correct version for your kindle version.

Jailbreak the kindle

In order to run custome code we need to jailbreak it.

  1. Extract kindle-jailbreak-1.15.N-r16256.tar.xz (or whatever your jailbreak version is)
  2. Unzip the contents of the kindle-5.4-jailbreak.zip archive to the root directory of your Kindle
  3. Eject & unplug your Kindle
  4. Go to [HOME] -> [MENU] > Settings -> [MENU] > Update Your Kindle

Install Dependencies

The dashboard relies on some other Kindle applications. Kual is an application launcher and adds a menu UI for new applications to your Kindle. It is the standard and most Kindle apps will integrate with KUAL. MR Package Installer is a package installer that some applications are installed with. USB Networking allows us to SSH into the Kindle when it is plugged in via USB.

  1. Extract KUAL and put KUAL-KDK-2.0.azw2 somewhere in the documents/ directory tree
  2. Extract kual-mrinstaller-1.7.N-r16438.tar.xz and copy contents to root of Kindle
  3. Extract USB Network Hack and copy appropriate .bin file to mrpackages directory on Kindle
  4. Eject & unplug Kindle
  5. Go to KUAL -> Helpers -> Install MR Packages

USB Networking

With everything installed above you should be able to turn on USB Networking on your Kindle. This will allow you to SSH in to the kindle which is useful for debugging and necessary for the final steps of installing my own kindle weather app.

On the Kindle

You can toggle USB Networking on and off via KUAL. Whilst it is on your Kindle will not mount as a USB storage device, but you can SSH into it.

  1. Go to KUAL -> USBNetwork -> * Toggle USBNetwork *
  2. You can then click * Check USBNetwork Status *. A message should appear at the bottom of the screen telling you is USB networking is on or not.

On your PC (Xubuntu)

I only have instructions for Xubuntu linux. This is possible on most other OSs but you’ll have to google. I also found that doing this via the Network Manager GUI was much easier than command line as modern Ubunut no longer assigns nice names to USB networking interfaces.

  1. Ensure USB Networking is on on the Kindle and plug it in via USB
  2. Open your Network Manager
  3. Open ‘Edit Connections’
  4. One of them should be some sort of USB or Wired Connection. Edit this connection.
  5. Open the “IPv4” tab
  6. Set “IPv4 Method” to “Manual”
  7. Under “Addresses”, set “Address” to 192.168.15.201 and “Netmask” to 255.255.255.0
  8. Click “Apply”
  9. Restart the connection by disconnecting it and reconnecting it (in Network Manager, no need to physically unplug)
  10. Run “ssh root@192.168.15.244” (press enter at password prompt) in terminal to access the Kindle.

Server set up

A server application needs to be setup to query weather and calendar APIs and generate a dashboard image from that data. As this will depend heavily on your server setup the instructions are less prescriptive.

Prerequisites:

  1. Clone repository.
  2. The Flask application is in kindle-weather/server.
  3. You will need a .env file in the same dir as main.py with: MO_API_KEY={ Met Office API Key } IMAGE_NAME={ name for generated image (doesn’t reeally matter) }.png
  4. You will need to create a config dir in the same dir as main.py. Place your client_id.json in the config folder.
  5. Serve the flask app.
  6. Visit your endpoint first on a PC or phone as it will redirect you to a Google Auth page to create credentials to check your calendars.

Run the kindle app

Finally we need to get the Kindle running an application which will regularly request and display our dashboard image.

  1. Ensure that your Kindle can connect to a local wifi network, from the standard Kindle UI.
  2. Clone repository.
  3. Connect Kindle in USB Storage mode (USB Networking off)
  4. Copy kindle-weather/kindle folder to /extensions in the Kindle root
  5. Ensure .env file in /extensions/kindle has correct vars for http user/pass and the URL of your image generating API.
  6. Eject & unplug Kindle
  7. Launch via KUAL -> Kindle Weather

That should do it! The Kindle should display and regularly update the dashboard image. Tapping the screen switches between the available actions (WiFi toggle, Refresh Image, Exit to Kindle UI) and pressing the button activates the action.

Technical Details

Coming soon…