把 Kindle 改造为低功耗状态监视墨水屏

·

越狱

想要丝滑的显示自己的内容,用自带的体验网页浏览器肯定不行。不仅有一大坨浏览器的 UI 在顶上,还会遇到 js 、css 不兼容等问题。总而言之,真用浏览器就等着享福吧(

查询后发现,可以越狱后获取 ssh 权限,并且通过自带的 CLI 工具对墨水屏进行刷屏,显示自定义文本和图片等。

搜索越狱,来到了这个 WIKI 站点,根据自己的型号搜索对应的解锁工具:https://kindlemodding.org/kindle-models.html

找到自己设备后,发现使用的 WinterBreak 进行越狱,并且不需要降级,因为这个设备的最新版本已经停留在了这么老的地方,根本没有修补漏洞。

点击 WinterBreak 链接进入,直接按照页面流程一路下一步,一直执行到屏蔽 OTA 结束即可,至此 Kindle 已经被越狱成功!

开发

已经有很多成熟的项目,比如 https://github.com/pascalw/kindle-dash ,但是我觉得有点老,并且不够灵活,于是自己开发了一个脚本,在我的 Mac Mini 服务器上运行,定时生成和 Kindle 等比例的图片(比如每 5 分钟),然后由 Kindle 上的 cron 脚本进行拉取,每 5 分钟拉取一次,全屏刷新到屏幕上面。至于之后可能会有的点击事件,之后再说吧()

目前我们需要先连接上 Kindle 的 SSH 才能执行下一步。根据设备硬件的新旧,来选择对应的方式。 我的设备硬件比较老,可以直接安装 USBNetwork 插件。只需要把这个插件放入extensions目录, 之后点击下图的 Helper 下的 安装插件,等待重启安装即可。这是我下载的原始链接:https://www.mobileread.com/forums/showthread.php?t=225030

安装后,挂载到电脑上,进入新生成的目录下,修改 SSH 的配置文件。这里主要需要打开 WIFI 下的 SSH 连接

主要是修改这些内容:

USE_WIFI="true"
USE_WIFI_SSHD_ONLY="true"

另外,如果更喜欢公私钥登录,那么可以再在 etc 目录下,上传自己的公钥到 authroized_keys 里面

修改保存后,再次重启 Kindle。在自己路由器后台找一下你的 IP,可以在关于设备中,找到设备的 MAC 地址,方便寻找 IP

直接在命令行环境(或者你的 SSH 软件中)连接:

欢迎来到 Kindle 的命令行!

使用命令 eips 10 10 "hello" 还能强行在屏幕上写出字,进行测试

成功在屏幕上写入文本。

光靠这个文本要搭建起自己的面板还远远不够,再次测试写入图片的指令:fbink

使用 fbink -q -g /mnt/us/dashboard.png 可以让 Kindle 强制在屏幕上显示出,你插入电脑后挂载的这个目录下,名字叫 dashboard.png 的图片文件。 测试了一个比较 kirakira 的图片

测试成功后,就可以尝试设计面板了。

查询可知,我这款 Kindle 的分辨率为 600×800, 用 Master Go 简单画一下,再次上传刷新即可:

当然,目前还没有接入数据,因为这只是一张永远不会改变的图片)

下一步便是开发渲染器.

进行开发

我将渲染器分成了两个部分:图片渲染器和数据生成器。

由于平时爱看点 cs 比赛,所以还顺便在数据生成器中写了一个比赛状态的抓取。

目前已有的是服务器状态的获取和比赛状态抓取,后面还准备开发一个拓竹的打印机状态获取。

图片渲染器拿到了数据生成器给出的结构会生成为图片,假如一页生成不下,会自动拆成多个页面,以 db_1, db_2 这样的顺序来命名,Kindle 收到后会刷屏 db_1 到屏幕上并且自动翻页,另外监听点击事件,在点击后可以手动翻页。

可以在我的 Github 主页上看见这个存储库:https://github.com/Kgym-Hina/kindle_renderer

至此上游的脚本已开发完毕,接下来是 Kindle 端的开发工作。


通过 uname -a 查看,当前设备是一个 armv7l 架构的设备,正好,go 语言有交叉编译的支持。由于对 go 语言了解不深,直接用 codex 写出设备端的代码,实现了自动翻页、触摸事件劫持、屏蔽 kindle UI 和屏蔽自动休眠的功能。最后写了个脚本,用来进行 编译+打包为 KUAL 拓展。

尝试拷贝到上面,通过 KUAL 拓展启动这个程序:

可以成功看见 Dashboard 的画面,十分清晰,点击也可以切换,长按左上角就可以退出到 Kindle 下。

接下来,尝试把服务器上需要跑的内容做成一整套,让他在本地服务器上常运行.

简单写了一个脚本把之前的三个步骤串起来:

测试完全没问题,直接丢到服务器上,让服务器上的 agent 帮我设置个 crontab,再手动设置一下 config.json

测试已经成功自动更新。在这里已经结束!折腾成功,耗时一天~

更多内容的渲染在之后会慢慢更新,比如 HomeAssistant 等设备的显示,3D 打印机状态显示等,也欢迎提 issue 或者 pr~


固定架子

搞定了所有软件后,还需要一个小架子来放 Kindle。

简单建了个,打印出来,完美 FIT~

Previous Article

Comments

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注


More Posts