HARDWARE TUTORIAL · 8 MIN READ
用 Kindle PW3
搭一块家庭信息板
服务器定时生成黑白 PNG,Kindle 每 30 分钟短暂联网刷新,其他时间回到深度待机。下面是完整实现路线。

目标很简单:让一台 Kindle Paperwhite 3 常显日期、天气、未来数小时降雨和垃圾收集日。更新时才唤醒 Wi-Fi 与 CPU,完成后立即待机;电子墨水屏则继续保留最后一张图。
整体架构
图像不是 AI 生成的。日期、天气、图标、分隔线和降雨图都由固定代码绘制。这个方案的关键,是把复杂的数据获取与排版留在服务器,Kindle 只做三件事:下载、显示、休眠。
准备条件
- Kindle Paperwhite 3;本文实机固件为 5.16.2.1.1;
- 已完成越狱,并安装 MRPI、KUAL 与 USBNetwork;
- 可通过 USB SSH 进入 Kindle;
- 一台能运行 Docker Compose 的服务器和一个可访问的图片 URL;
- 建议先配置 SSH 公钥,并阻止 Kindle OTA 更新。
不同 Kindle 型号、固件和 framebuffer 参数可能不同。越狱与修改系统存在风险,开始前应准备恢复手段。
第一步:确认图像尺寸
通过 USB SSH 查看 framebuffer:
fbset -s
cat /sys/class/graphics/fb0/stride 2>/dev/null
这台 PW3 的参数是:可见宽度 1072、高度 1448、虚拟宽度 1088、line_length=1088、8 bpp 灰度。因此传给 eips 的 PNG 使用 1088×1448,与实际行跨度一致。

用一张测试图验证:
eips -g /mnt/us/test-1088x1448.png -f -w gc16
-f -w gc16 会进行完整黑白刷新,能明显减少原 Kindle 首页的残影。
第二步:部署服务器渲染器
服务器项目的 server/ 目录包含 Pillow 渲染器和 Docker Compose。复制环境变量模板:
cd server
cp .env.example .env
在 .env 中设置:
DASHBOARD_LATITUDE与DASHBOARD_LONGITUDE;- 时区和 Yahoo!天气对应地区页面;
- 周一到周日的垃圾收集项目;
UPDATE_INTERVAL=900,即每 15 分钟更新。
启动服务:
docker compose up -d --build
docker compose ps
渲染器在每小时的 :00、:15、:30、:45 生成 public/dashboard.png。先写临时文件,再原子替换正式 PNG;天气请求失败时使用最后一份有效缓存。
第三步:发布一个稳定图片 URL
将渲染器的 public/ 目录以只读卷挂载到现有 Nginx,并为图片关闭缓存:
location = /kindle/dashboard.png {
expires -1;
add_header Cache-Control "no-store, no-cache, must-revalidate";
try_files $uri =404;
}
现代客户端使用 HTTPS 即可。部分老 Kindle 的 BusyBox wget 无法与现代 TLS 服务正常协商,可以额外建立一个纯 HTTP 兼容入口,但只开放这一张 PNG,其他路径全部返回 404。正式图片可在这里查看:dashboard.png ↗。
第四步:安装 Kindle 客户端
先复制客户端配置:
cp kindle/dashboard.conf.example kindle/dashboard.conf
填写稳定图片地址:
DASHBOARD_URL='http://YOUR_SERVER/kindle/dashboard.png'
然后通过 USBNetwork 上传并安装。以下地址应替换为自己的 Kindle USB 地址:
scp -r kindle root@192.168.15.244:/mnt/us/kindle-dashboard-installer
ssh root@192.168.15.244 \
'/mnt/us/kindle-dashboard-installer/install-kual.sh'
重新打开 KUAL 后会出现 Kindle Dashboard,其中包含:
- Refresh now:立即下载并显示一次;
- Start battery refresh (30 min):进入低功耗自动更新;
- Stop dashboard:停止循环并恢复正常 Kindle。
第五步:让设备真正低功耗运行
客户端不使用普通的常驻 sleep 1800,而是交给 Kindle 自己的 powerd 与 RTC:
- 唤醒并打开 Wi-Fi;
- 下载到临时文件,确认非空后原子替换;
- 执行
eips -g dashboard.png -f -w gc16; - 关闭 Wi-Fi,注册 30 分钟后的 RTC 唤醒;
- 进入原生 suspend,屏幕继续保留当前图像。
公告板显示期间,通过 com.lab126.deviced enable_touch 0 禁用触摸,防止底层 Kindle 首页发生局部重绘。物理电源键唤醒后,脚本停止自动循环、恢复触摸并返回 KUAL。
不要停止 framework 或 lab126_gui,也不要在公告板模式下设置 preventScreenSaver。前者可能触发设备重启,后者在这版固件上会让短按电源键失效。
服务器和 Kindle 的计时需要同步吗?
不需要。服务器每 15 分钟固定生成一次,Kindle 每 30 分钟拉取一次。即使两边启动时刻错开,Kindle 通常也只会拿到最多约 15 分钟前的图片。服务端与客户端都使用原子替换,因此不会读到写了一半的 PNG。
完成后的验证清单
- 浏览器访问 PNG URL,尺寸为 1088×1448;
- KUAL 的 Refresh now 能完整刷新,无首页残影;
- 触摸屏不会触发底层 Kindle 首页;
- 启动自动更新后 Wi-Fi 会关闭,设备进入 suspend;
- 30 分钟后能自行唤醒、更新并再次待机;
- 断网时仍显示最后一张有效图;
- 短按电源键可以退出公告板并回到 KUAL。
天气来源可以自由替换。本实现用 Yahoo!天气提供本地天气表述,Open-Meteo 提供精确坐标的逐小时降雨,日本气象厅作为备用;垃圾收集安排则以横滨市官方页面 ↗为准。
这条路线的核心不是某个特定天气 API,而是“服务器生成简单图片,Kindle 只负责可靠显示”。把版式、数据和更新频率换掉,同一套客户端也可以用于日历、交通、家庭留言或监控摘要。