Files
2026-03-21 18:44:12 +08:00
..
2026-03-15 09:30:40 +08:00
2026-03-21 18:44:12 +08:00
2026-03-15 09:30:40 +08:00
2026-03-21 18:44:12 +08:00
2026-03-21 18:44:12 +08:00
2026-03-15 09:30:40 +08:00
2026-03-15 09:30:40 +08:00
2026-03-15 09:30:40 +08:00
2026-03-15 09:30:40 +08:00
2026-03-15 09:30:40 +08:00
2026-03-21 18:44:12 +08:00
2026-03-15 09:30:40 +08:00

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

  1. Download the latest release on your computer and extract it.
  2. Modify local/fetch-dashboard.sh and optionally local/env.sh.
  3. Copy the files to the Kindle, for example: rsync -vr ./ kindle:/mnt/us/dashboard.
  4. 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.
  5. To leave dashboard mode and get back to the normal Kindle UI/KUAL, run /mnt/us/dashboard/stop.sh. On Voyage 5.13.6 this intentionally uses a conservative UI-stack restore instead of a fast handoff, because the faster paths were not stable.

Upgrading

If you're running kindle-dash already and want to update to the latest version follow the following steps.

  1. Download the latest release on your computer and extract it.
  2. Review the release notes. Some releases might require changes to files in local/.
  3. Copy the files to the Kindle, excluding the local directory. For example: rsync -vur --exclude=local ./ kindle:/mnt/us/dashboard.
  4. Modify files in /mnt/us/dashboard/local if applicable.
  5. 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.
  6. Run /mnt/us/dashboard/stop.sh when you want to restore the normal Kindle UI/KUAL. This uses the same conservative restore path on Voyage 5.13.6.

KUAL

If you're using KUAL you can use simple extension to start this Dashboard

  1. Copy folder kindle-dash from KUAL folder to the kual extensions folder. (located in /mnt/us/extensions)
  2. The Kindle Dashboard entry is now a theme submenu in KUAL.
  3. Each theme item calls /mnt/us/dashboard/launch-theme-from-kual.sh, which switches the theme first and then delegates to /mnt/us/dashboard/launch-from-kual.sh.
  4. launch-from-kual.sh still quits KUAL first and uses a detached session, but by default it no longer inserts an extra visible handoff delay before starting the dashboard.
  5. The runtime page-key menu and the bottom-right touch hotspot are now disabled by default; theme entry is intentionally kept only in KUAL.
  6. On Kindle Voyage 5.13.6, this wrapper chain is in place but the KUAL/native-UI handoff is still not considered fully stable. For debugging, prefer ssh kindle 'cd /mnt/us/dashboard && DEBUG=true ./start.sh'.

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.

运行规则:

  • 无论 debug on 还是 debug off,设备侧时钟都按分钟调度刷新一次。
  • DEBUG=trueDISABLE_SYSTEM_SUSPEND=true 时,设备不进入真 suspenddashboard 保持可见,并持续按分钟刷新。
  • 普通低功耗模式下,设备仍会按分钟唤醒并刷新时钟,但常规分钟刷新只更新后台缓存,不主动把时钟刷到可视屏幕。
  • 手动短按 power 的行为单独处理dashboard 会保持 5 分钟可视窗口,并在窗口内继续按分钟刷新,窗口结束后回到普通低功耗循环。
  • 通过 KUAL 启动 dashboard 或切换主题后回到 calendar也会给同样的 5 分钟可视窗口。
  • 分钟级时钟刷新完全在本机完成;背景图和主题资源同步仍保持低频。

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. On Voyage 5.13.6, if stop.sh finishes but the home UI is still missing, the current fallback is still to start webreader manually with /sbin/start webreader.

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.sh using a cron expression.
  • When the layered clock renderer is enabled, the Kindle re-renders the clock region locally every minute.
  • 普通模式下,常规分钟刷新只更新后台缓存,不主动把时钟刷到可视屏幕;手动短按 power 或从 KUAL 回到 calendar会打开一个 5 分钟的可视窗口,结束后再回到普通循环。
  • During the update intervals the device is suspended to RAM to save power.

Notes

Credits

Thanks to davidhampgonsalves/life-dashboard for the inspiration!