把旧 Kindle 变成家庭公告板
家里有一台闲置的 Kindle Paperwhite 3。电子墨水屏不需要持续发光,画面静止时耗电很低,很适合用来显示一条长期可见的家庭公告。
我想要的使用方式很简单:在手机网页上写好内容并发布,远端 Kindle 自动同步、全屏显示;公告结束后恢复正常使用;需要调试时,短按一次电源键就能退出。
这个小项目后来有了名字:Inkboard。
最终效果
日常使用只需要打开一个网页。页面里保留标题、正文、发布密码、Kindle 预览和发布按钮,没有账号系统,也没有复杂操作。
整个过程可以概括为:
手机网页 → Inkboard 服务 → Kindle 定时检查 → FBInk 全屏显示
这里没有真正的“推送”。Kindle 主动访问服务器,所以两边不需要在同一个家庭网络,也不用修改父母家的路由器。
准备工作
这次实测使用的环境是:
Kindle Paperwhite 3;
固件 5.12.2.2;
已完成越狱并安装 KUAL;
一台可以运行 Linux、systemd 和 Nginx 的服务器;
一个带有效 HTTPS 证书的域名。
越狱和系统修改必须与 Kindle 型号、固件版本严格匹配。开始前应备份用户分区,并了解系统升级可能导致插件失效。Inkboard 本身不负责越狱,它只是一个 KUAL 扩展。
最终版本不依赖 Python、KOReader 或 ScreenSavers Hack。显示图片使用的是 FBInk 的 PW2/PW3 完整版。
网页端
原型验证完成后,我把网页端改成了一个很小的 Go 服务,并部署到自己的服务器。它不使用数据库,只保存当前公告图片和一个状态文件。
发布页面在浏览器中直接生成一张 1072 × 1448 的 PNG。服务端收到图片后更新版本号,Kindle 只在版本变化时下载新图片。
服务需要两个不同的秘密值:
INKBOARD_LISTEN=127.0.0.1:18083
INKBOARD_DATA_DIR=/var/lib/inkboard
INKBOARD_ADMIN_PASSWORD=发布密码
INKBOARD_DEVICE_TOKEN=Kindle 只读令牌发布密码只用于手机网页;设备令牌只能读取公告,不能发布。服务监听本机地址,由 Nginx 负责公网 HTTPS。
网页端保持克制:一个可执行文件、一份状态数据、一张当前图片。这样资源占用低,升级和排查也更直接。
Kindle 插件
插件放在 Kindle 的扩展目录中:
Kindle/extensions/family-notice/首次使用时,只需要在配置文件中填写服务地址和设备令牌:
DEVICE_API_BASE="https://example.com/api/device"
DEVICE_TOKEN="与服务器一致的设备令牌"
CHECK_INTERVAL=3600
DEBUG_NO_SUSPEND=0安全弹出 Kindle 后,打开 KUAL 就能看到 Inkboard。先运行一次“立即同步”,确认网络、令牌和图片显示都正常,再启用自动同步。
同步与功耗
每个同步周期只做几件事:
唤醒 Wi-Fi;
读取远端版本号;
与本地版本比较;
仅在版本变化时下载 PNG;
校验文件后用 FBInk 显示;
设置 RTC,进入深度休眠。
大部分时间里,设备并没有常驻联网,也不需要监听触屏。每小时检查一个很小的状态文件,只有内容变化时才下载图片,这对旧 Kindle 的续航更友好。
短按电源键退出
调试过程中,最麻烦的不是下载图片,而是如何自然退出。
早期版本会停止 Kindle 主界面,再由 FBInk 独占屏幕。虽然公告可以显示,但短按电源键后恢复很慢,看起来像系统重启。
最终方案保留 Kindle 主界面,让设备先进入原生屏保状态,再用 FBInk 覆盖显示公告。RTC 唤醒时继续同步;用户短按电源键时,插件识别到设备已回到活动状态,立即停止并返回首页。
这样既不需要监听触屏,也不会破坏 Kindle 原有的电源管理流程。
几个真机踩坑
FBInk 必须支持图片。 Kindle 中已有的 FBInk 可能只有文字功能,显示 PNG 时会提示图片支持未启用。换用作者发布的 PW2/PW3 完整版后,PNG 可以正常显示。
网络失败时保留缓存。 下载失败不能删除上一张成功显示的公告,否则一次短暂断网就可能留下空白页面。排查“为什么还是旧公告”时,要同时检查远端版本、本地版本和同步日志。
USB 模式下插件目录不可用。 Kindle 作为 U 盘连接电脑时,设备自己暂时无法访问 /mnt/us。修改完成后必须先安全弹出,再测试插件。
全屏刷新可以减少残影。 原生屏保切换到公告时可能留下浅色残影。最终版本先显示 PNG,再执行一次全屏刷新。屏幕短暂黑白闪烁是电子墨水屏正常的刷新过程。
安全取舍
Inkboard 面向私人家庭使用,因此没有加入 OAuth、短信验证码或复杂的用户系统。简单并不等于明文暴露:
全程使用 HTTPS;
发布密码和设备令牌必须不同;
两者都使用足够长的随机值;
不把环境文件和填写过令牌的配置上传到公开仓库。
最后
现在的日常操作只有一步:打开手机网页,写下内容并发布。
父母端不用打开网页,也不用操作 Kindle。公告会自动出现;需要退出时,短按一下电源键即可回到首页。
旧 Kindle 不一定只能继续读书。电子墨水屏、深度休眠和一个很小的自托管服务组合起来,也可以成为安静、低功耗的家庭信息终端。