5.4 KiB
Low-power Kindle dashboard
Turns out old Kindle devices make great, energy efficient dashboards :-)
What this repo is
This repo only contains the code that runs on the Kindle. It periodically fetches an image to be displayed on the screen and suspends the device to RAM (which is very power efficient) until the next screen update.
This code does not render the dashboard itself. It's expected that what to display on the screen is rendered elsewhere and can be fetched via HTTP(s). This is both more power efficient and allows you to use any tool you like to produce the dashboard image.
In the current Voyage layered-clock setup, the Kindle only fetches a low-frequency kindlebg.png background. The clock region itself is re-rendered on-device once per minute with a local Lua script and FBInk, without network access.
In my case I use a dashbling dashboard that I render into a PNG screenshot on a server. See here for information on how these PNGs should be produced, including some sample code.
Prerequisites
- A jailbroken Kindle, with Wi-Fi configured.
- An SSH server on the Kindle (via USBNetwork)
- Tested only on a Kindle 4 NT. Should work on other Kindle devices as well with minor modifications.
Installation
- Download the latest release on your computer and extract it.
- Modify
local/fetch-dashboard.shand optionallylocal/env.sh. - Copy the files to the Kindle, for example:
rsync -vr ./ kindle:/mnt/us/dashboard. - Start dashboard with
/mnt/us/dashboard/start.sh.
Note that the device will go into suspend about 10-15 seconds after you start the dashboard. - To leave dashboard mode and get back to the normal Kindle UI/KUAL, run
/mnt/us/dashboard/stop.sh. This now stopsdash.shand restores the Kindle framework.
Upgrading
If you're running kindle-dash already and want to update to the latest version follow the following steps.
- Download the latest release on your computer and extract it.
- Review the release notes. Some releases might require changes to files in
local/. - Copy the files to the Kindle, excluding the
localdirectory. For example:rsync -vur --exclude=local ./ kindle:/mnt/us/dashboard. - Modify files in
/mnt/us/dashboard/localif applicable. - Start dashboard with
/mnt/us/dashboard/start.sh.
Note that the device will go into suspend about 10-15 seconds after you start the dashboard. - Run
/mnt/us/dashboard/stop.shwhen you want to restore the normal Kindle UI/KUAL.
KUAL
If you're using KUAL you can use simple extension to start this Dashboard
- Copy folder
kindle-dashfromKUALfolder to the kualextensionsfolder. (located in/mnt/us/extensions)
Debugging
For on-device debugging without suspending the Kindle, set DISABLE_SYSTEM_SUSPEND=true in local/env.sh.
The dashboard loop will keep running, skip the sleeping.png branch, and use a normal sleep between refreshes instead of writing to /sys/power/state.
If you're connected over SSH you can also run DEBUG=true ./start.sh to keep the process in the foreground with shell tracing enabled.
If you're launching from KUAL, Dashboard Debug On now persists DISABLE_SYSTEM_SUSPEND=true and immediately restarts the dashboard in one tap. Dashboard Debug Off restores the normal low-power behavior and also restarts the dashboard immediately.
If you're connected over SSH and only want a one-off foreground session, you can still run /mnt/us/dashboard/start-debug.sh.
Each dashboard loop now also writes isCharging and battStateInfo from com.lab126.powerd into logs/dash.log, which makes it easier to confirm whether the Kindle actually detected external power while debugging.
How this works
- This code periodically downloads a dashboard background image from an HTTP(s) endpoint.
- The interval can be configured in
dist/local/env.shusing a cron expression. - When the layered clock renderer is enabled, the Kindle re-renders the clock region locally every minute.
- During the update intervals the device is suspended to RAM to save power.
Notes
- The releases contain a pre-compiled binary of the ht command-line HTTP client. This fully supports modern HTTPS crypto, wheras the built-in
curlandwgetcommands don't (because they rely on a very oldopenssllibrary). - For a detailed Kindle Voyage 5.13.6 jailbreak and deployment walkthrough, see docs/kindle-voyage-5.13.6-watchthis-zh.md.
- For a detailed same-device dashboard/SSH troubleshooting playbook based on the 2026-03-15 session, see docs/kindle-voyage-5.13.6-dual-ssh-playbook-zh.md.
- For the current white-screen/KUAL/SSH blocked-state handoff, see docs/kindle-voyage-5.13.6-white-screen-handoff-zh.md.
- For the layered clock split and runtime model, see docs/layered-clock-plan.zh.md.
Credits
Thanks to davidhampgonsalves/life-dashboard for the inspiration!
