本文来源:https://mp.weixin.qq.com/s/n8tS6vXCmOcxRkEmydQ8zg
若有版权问题,请来信告知:13951431913#139.com 或在右方提交评论。
抽屉里那台 Kindle 7 吃灰好几年了。当年换了带前置灯的 Paperwhite 10 后,这台没有背光的 7 代就被替换了下来。
这几天我把它翻出来,打算改成挂在玄关的桌面日历天气屏:定时唤醒,把月历和天气刷在墨水屏上,刷完继续休眠。
文末附了提示词,可以复制给 Claude Code / Cursor / Codex 等 AI 助手直接帮你操作,助手会先诊断设备再执行。想自己动手可以看下文。
确认硬件与固件
翻出机身背面标签确认型号:
MODEL NO. WP63GW FCC ID: 2ABQ9-0725 ... INPUT: 5.25V ⎓ 500mA 查下对应的是 Kindle 7(2014 年第 7 代入门版,代号 KT2)。
- 显示屏:6 英寸电子墨水屏(600×800,167 ppi,16 级灰阶)
- 前置灯:无(暗处看不清,合适摆在玄关或书桌等有光处)
存储:4 GB 固件版本:5.11.1.1

这台机器之前刷过 CrackDroid 双平台
这台机器早几年刷过 CrackDroid 双平台(安卓 4.4.2 + 原生 Kindle OS),用 fastboot 刷入:
原生切安卓:设置 → 设备选项 → 重启 安卓切原生:「Eink 设置」→ 点击「启动 Kindle」
安卓 4.4.2 在这个硬件上卡顿显著,且刷机重置了原生平台,清空了旧越狱和 KUAL。这次改造直接在原生平台下开展。
固件越狱(KindleBreak)
5.11.1.1 固件属于 KindleBreak(兼容 5.10.3–5.13.3)范围。文件来自 MobileRead 社区的jb-kindlebreak.zip压缩包:
- 启动飞行模式(防止自动升级);
解压 jb-kindlebreak.zip,将jb、jb.sh、kindlebreak.html、kindlebreak.jxr拷入 Kindle 根目录;将 file__0.localstorage放入/.active_content_sandbox/browser/resource/LocalStorage/(没有该目录则手动建);- 拔掉数据线,打开 Kindle 内置的「感受版浏览器」;
浏览器卡死后等待 1–5 分钟重启,弹出 Application Error或Collecting Debug Info即越狱成功。

越狱验证与热修复
KindleBreak 完成后搜索框输入;log无反应属于正常现象,该命令由热修复(Hotfix)包给出。
先检查根目录越狱日志 kindlebreak_log.txt:
Createddeveloperkey(0)UpdatedpermissionsfordeveloperkeyEnableddeveloperflagFinishedinstallingjailbreak,restarting... 确认日志无误后安装 Universal Hotfix:
从 KindleModding/Hotfix 下载 Update_hotfix_universal.bin拷入根目录;拔线点击「设置 → 右上角菜单 → 更新您的 Kindle」; 重启后在书库点击 Run Hotfix; 搜索框输入 ;log弹出提示即安装完成。
热修复给出了后文依赖的三项能力:注入;log、安装工具 FBInk、启动sh_integration(允许书库直接运行 Shell 脚本)。
放弃 KUAL 与 linkss,改用脚本替换屏保
传统思路常用 KUAL 菜单 + linkss 插件,但在这台 5.11.1.1 设备上并不适用:
新版 KUAL (PEKI) 要求固件 ≥ 5.12.2.2; - linkss 旧链接大多失效,且只兼容静态本地轮播,无法完成远程定时抓图。
热修复自带的 sh_integration 能让 documents/ 下的 .sh 脚本像电子书一样在书库里直接以 root 权限运行。
既然 linkss 本质也是替换平台屏保图片,直接用 Shell 脚本替换原生文件更干净。
屏保替换细节
原生屏保存储在 /usr/share/blanket/screensaver/bg_ss00.png 至 bg_ss19.png(共 20 张 600×800 图片)。
注意事项: - rootfs 为只读挂载,替换前需mntroot rw,替换后恢复mntroot ro; - 备份原图以便还原; - 将 20 张替换为同一张图片,休眠时即可固定表明日历。
另外,替换图片不需要重启 Kindle 框架(stop framework && start framework)。平台会在进入休眠的瞬间现读屏保文件,只要在休眠前完成覆盖就能无感生效。
自动化更新机制
服务端(小服务器/NAS)
Python Pillow 绘制当月日历与天气,生成 600×800 PNG; - 农历兼容节气与节日;
天气调用 Open-Meteo API(免费无 Key); 请求异常时自动使用上次缓存。
设备端处理
RTC 唤醒需走 powerd 接口
直接向/sys/class/rtc/rtc0/wakealarm写入时间无效,因为 Kindle 的powerd休眠前会用rtcWakeup覆盖闹钟。必须在readyToSuspend事件触发时设置:sh lipc-wait-event -m com.lab126.powerd 'goingToScreenSaver,wakeupFromSuspend,readyToSuspend' # 收到 readyToSuspend 时设置: lipc-set-prop -i com.lab126.powerd rtcWakeup 3600- Wi-Fi 恢复重试策略定时唤醒后 Wi-Fi 重连需 15–30 秒不等。使用三段式重试(等待 15 秒 → 重置连网等待 30 秒 → 最长重试 150 秒),避免超时导致拉图失败白耗电。
屏保主动重绘
powerd定时唤醒不会主动刷新屏保画面,拉取新图后需调用eips -g手动刷屏。休眠计时陷阱
Kindle 休眠时 Shell 的sleep会挂起(基于CLOCK_MONOTONIC),时间计算需统一使用挂钟时间戳(date +%s)。
设备端执行流程
upstart 守护任务 └─ 守护脚本 ├─ readyToSuspend → 设置 rtcWakeup 并关闭 Wi-Fi └─ wakeupFromSuspend → 启动 Wi-Fi → 重试拉图 → eips 刷新显示屏
改造成果
- 屏保为当月月历,今日格子反白表明;
附带农历、节气与节日; - 下半屏表明天气与将来三天预报;
每小时自动唤醒一次,刷新后继续休眠; 书库点击 ss-restore.sh随时还原官方屏保。
摆在玄关,白天看很清晰。闲置硬件重新利用起来了。
项目代码
代码与踩坑记录已整理在 GitHub:
https://github.com/fanzhh/kindle-calendar-weather
docs/pitfalls.md记录了遇到的一些具体难题(如;log依赖、powerd覆盖 RTC 闹钟、唤醒后 Wi-Fi 恢复耗时、busybox 计时器机制、Shell 参数解析等)。
附:把大部分工作交给 AI 助手
如果不打算手动规格,可以把下面这段 Prompt 复制给兼容终端与文件操作的 AI 助手(如 Claude Code / Cursor / Codex)。前提是 Kindle 已越狱、已安装热修复并连接电脑。
你是我的工艺助手。现在有一台已越狱并装好热修复的 Kindle,借助 USB 连在这台电脑上, 挂载为一个可移动磁盘。 请按开源思路 https://github.com/fanzhh/kindle-calendar-weather 把它改造成 「日历 + 天气」休眠屏保。尽量自己完成,只在必须我在设备显示屏上操作时才停下来告诉我。 一、先诊断,不要急着改 1. 定位挂载点:macOS 通常 /Volumes/Kindle,Linux 通常 /media/$USER/Kindle。 2. 读 <挂载点>/system/version.txt,记录固件版本。 3. 判断越狱/热修复状态:- <挂载点>/documents/ 中是否有可点击执行的 .sh - <挂载点>/libkh/bin/fbink 是否存在 -<挂载点>/extensions/ 是否存在 4. 克隆仓库到本地,先读完 README.md、docs/hardware.md、docs/pitfalls.md 再动手。 5. 向我汇报:型号、固件版本、显示屏分辨率、越狱状态、还缺哪些前置条件。 二、按分辨率定参数-显示屏 600×800:用默认值。- 其他分辨率(如 1072×1448):同时改 render/dash.py 的 W, H 与 kindle/ss-install.sh 的 WANT_W / WANT_H。 -屏保目录若不是 /usr/share/blanket/screensaver/,一并修正。 三、服务端 1. 在常开的机器上执行 bash setup-mac.sh(macOS)或等价步骤(Linux)。 2. 问我天气城市的名称或经纬度,改 render/weather.py 里的 PLACE。 3. 执行 bash selftest.sh,五项必须全部借助才能进入下一步。 四、设备端 1. 把 kindle/*.sh 与 config/dash.conf.example(改名为 dash.conf 并填入本机局域网 IP) 拷贝到设备。 2. 拷完删除 macOS 生成的 ._* 文件。 3. 停下来告诉我:需要在 Kindle 书库里依次点击哪些脚本,每一步预期看到什么。 硬性约束- 改设备前,屏保原图必须备份到 /mnt/us/screensaver-backup/。 -只操作 /mnt/us 与 /usr/share/blanket/screensaver/,不要动 /etc/uks 之外的平台文件, 不要碰安卓分区。- 每次写入设备后执行 sync。 - 若现象与 docs/pitfalls.md 描述不符,停下来报告,不要猜测继续。 -全程说明你在做什么、为什么。 验收 我休眠设备后,屏保应表明当月月历 + 农历/节气/节日 + 天气。 若仍表明旧图,按 docs/pitfalls.md 排查。
"Based on the provided content, here is the translation of the key segments into English."
"This article is sourced from: https://mp.weixin.qq.com/s/n8tS6vXCmOcxRkEmydQ8zg If there are any copyright issues, please notify us at 13951431913#139.com or submit a comment on the right."
"That Kindle 7 in the drawer has been gathering dust for years. After switching to the Paperwhite 10 with a front light, this non-backlit 7th generation model was replaced."
"A few days ago, I pulled it out with the intent of repurposing it as a desktop calendar and weather display in the entryway: schedule wake-ups, update the monthly calendar and weather on the e-ink screen, then go back to sleep."
"The prompt is attached at the end of this post. You can copy it and send it to an AI assistant like Claude Code, Cursor, or Codex to have them perform the setup. The assistant will first diagnose the device and then carry out the necessary actions. For those who prefer a hands-on approach, the details are outlined below."
"Confirming Hardware and Firmware"
"I flipped the device over to check the label and confirmed the model: Kindle 7 (the 2014 7th generation entry-level model, codenamed KT2)."
"Display: 6-inch electronic ink screen (600×800, 167 ppi, 16 levels of grayscale)"
"Front Light: None (it won't be visible in the dark, making it suitable for a bright hallway or desk)"
"Storage: 4 GB"
"Firmware Version: 5.11.1.1"
"This machine was previously flashed with CrackDroid for dual-platform use."
"Years ago, I installed the CrackDroid dual-platform firmware (Android 4.4.2 + native Kindle OS) via fastboot:"
"To switch from native to Android: Settings → Device Options → Reboot"
"To switch from Android to native: 'Eink Settings' → Click 'Start Kindle'"
"While Android 4.4.2 was significantly slower on this hardware, the installation did reset the native platform, clearing any pre-existing jailbreaks or KUAL. Therefore, the current modification will be performed solely on the native platform."
"Jailbreaking the Firmware (KindleBreak)"
"The 5.11.1.1 firmware is compatible with the KindleBreak exploit (supporting versions 5.10.3–5.13.3), which was downloaded from the MobileRead community as the jb-kindlebreak.zip package."
"I enabled Airplane Mode to prevent automatic updates."
"I extracted the zip file and copied the jb, jb.sh, kindlebreak.html, and kindlebreak.jxr files to the root directory of the Kindle."
"I placed the file__0.localstorage file into the /.active_content_sandbox/browser/resource/LocalStorage/ directory (creating the folder if it didn't exist)."
"I disconnected the data cable and launched the built-in 'Experimental Browser'."
"After the browser crashed, I waited 1–5 minutes for a restart. The appearance of the 'Application Error' or 'Collecting Debug Info' pop-up confirmed a successful jailbreak."
"Verifying Jailbreak and Applying Hotfixes"
"Entering ;log into the browser's address bar yields no result, which is expected as this command requires the installation of the hotfix package."
"I checked the root directory for the jailbreak log file, kindlebreak_log.txt, to confirm the process succeeded."
"Next, I installed the Universal Hotfix by downloading Update_hotfix_universal.bin from KindleModding/Hotfix and copying it to the root directory."
"I disconnected the cable again, navigated to 'Settings → Menu Icon → Update Your Kindle',"
"After the restart, I selected 'Run Hotfix' from the library. Confirming the installation was successful, entering ;log now opened the debug window."
"This hotfix provides three critical features: the ability to inject ;log commands, the installation of the FBInk tool, and the activation of sh_integration, which allows library scripts to run with root permissions."
"Abandoning KUAL and linkss in Favor of Screen Saver Replacement Scripts"
"The traditional method of using the KUAL menu with the linkss plugin is not viable here. The new KUAL (PEKI) requires firmware 5.12.2.2 or higher, and many linkss links are outdated and limited to static, local rotations, failing to meet the needs of a remote, timed grabbing service."
"The hotfix's sh_integration feature allows .sh scripts placed in the documents/ folder to appear as readable books in the library, executing with root privileges."
"Since the goal is to replace the screen saver images, using a Shell script is a cleaner approach than relying on outdated plugins. The script can temporarily mount the filesystem as read-write, backup the original images, and replace them with the updated calendar and weather data."
"Screen Saver Replacement Details"
"The native screen saver images are stored as PNG files (bg_ss00.png to bg_ss19.png) at a resolution of 600×800 in the /usr/share/blanket/screensaver/ directory."
"Key points:"
"The root filesystem is mounted as read-only, so the mntroot rw command is required before replacement, followed by mntroot ro to restore it."
"It is essential to backup the original images (likely located in the ~/.cache/blanket/ directory) for future restoration."
"Replacing all 20 images with a single file ensures that the device displays the calendar consistently while asleep."
"There is no need to restart the Kindle framework (stop framework && start framework) as the platform reads the images directly from disk when entering sleep mode. Therefore, the replacement should be completed before the device goes back to sleep."
"Automation Update Mechanism"
"Server-side (Small Computer / NAS):"
"A Python script uses the Pillow library to generate a 600×800 image containing the monthly calendar (with support for lunar calendars, holidays, and solstices) and the current weather data."
"The weather information is fetched via the Open-Meteo API, which is free and does not require an API key."
"If there is an error fetching the data, the previous cache is used as a fallback."
"Client-side (Device):"
"Scheduled Wake-ups: The device is set to wake up using the RTC (Real Time Clock). It is crucial to interact with the powerd service rather than writing directly to the kernel, as the Kindle's rtcWakeup function overrides direct writes. This is typically set during the 'readyToSuspend' phase."
"Wi-Fi Recovery: Since Wi-Fi takes time to reconnect after waking up, the script implements a three-stage retry logic (waiting 15 seconds, resetting and waiting 30 seconds, with a maximum retry time of 150 seconds) to ensure the image is downloaded before the battery is drained."
"Display Refresh: After downloading the new image, the script forces a screen refresh using the eips -g command to update the display."
"Timestamps: All time calculations are based on POSIX time (wall-clock time) to prevent errors related to the device sleeping while a sleep timer is running."
"Device-side Execution Flow"
"![Execution Flow Diagram]"
"Final Result"
"Project Code"
"The full code and a record of the challenges faced during this project are available on GitHub: https://github.com/fanzhh/kindle-calendar-weather"
"The docs/pitfalls.md file contains detailed notes on issues such as ;log dependencies, the powerd service overwriting RTC alarms, the delay in Wi-Fi reconnection, the behavior of the BusyBox timer, and the parsing of Shell parameters."
"Appendix: Automated Setup with AI"
"If you prefer not to perform the manual configuration steps, you can copy the following prompt to a compatible AI assistant with terminal and file access (such as Claude Code / Cursor / Codex). Ensure your Kindle is jailbroken, hotfixes are installed, and the device is connected to your computer via USB."
```json { "prompt": "Based on the provided context, here is the translation of the key segments into English." } ```
Placed at the door entrance, it's clearly visible during daytime. Idle hardware is being re-utilized.
项目代码
Code and troubleshooting notes have been organized on GitHub:
https://github.com/fanzhh/kindle-calendar-weather
The docs/pitfalls.md file records specific challenges encountered (such as missing log dependencies, powerd overwriting RTC alarms, WiFi recovery time after wakeup, busybox timer mechanisms, and shell parameter parsing).
Appendix: Delegating most work to the AI assistant
If you don't intend to write manually, you can copy the following prompt to an AI assistant compatible with terminal and file operations (like Claude Code / Cursor / Codex). Prerequisites include a jailbroken Kindle with installed hotfix and connected to a computer.