树莓派29/100 - 树莓派接上Kindle的墨水屏是什么体验?

2024-01-09 11:49

本文主要是介绍树莓派29/100 - 树莓派接上Kindle的墨水屏是什么体验?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前一阵子在Pico上接1602小显示屏,后来突发奇想,手里有一个闲置的kindle paperwhite,能把树莓派接上kindle的墨水屏吗?

动手谷歌了一下,折腾了一天多,终于把我的raspberry pi连接kindle墨水屏试验成功了。整个过程也是相当艰难曲折。

第一步:Jailbreak Kindle

我的kindle是第五代,序列号B024开头,最新的固件停留在5.6.1.1,不能升级为更高的官方版本了。

先要理解一下相关术语,这里应该算是Kindle Hack的大本营,有许多基本概念和缩写要了解。

比如:KT就是指 Kindle Touch,而PW就是指 Kindle Paperwhite,以前越狱成功的Kindle安装软件用LaunchPad,2013年以后都用新的安装方法KUAL。

我先把5.6.1.1降级为5.3.5,jailbreak成功(最重要的压缩包在是这个:kindle-jailbreak-1.16.N-r18474.tar.xz),再升级到5.6.1.1

这一步闯过去,你的Kindle内部的小Linux系统就可以随意折腾了。

整个过程中,需要下载好bin固件,不断插拔Kindle的USB线,不断重启,有些时候仅仅把kindle推出还不行,必须把USB电源线彻底拔掉。

查查你的kindle的型号:

Kindle 1 (2007): B000
Kindle 2 (2009): B002, B003
Kindle DX (2010: B004, B005, B009
Kindle Keyboard (2010): B006, B008, B00A
Kindle 4 (2011): B00E, B023, 9023
Kindle Touch (2012): B00F, B010, B011, B012
Kindle Paperwhite 1 (2012): B024, B01B, B01C, B01D, B01F, B020
Kindle Paperwhite 2 (2013): B0D4, 90D4, B0D5, 90D5, B0D6, 90D6, B0D7, 90D7, B0D8, 90D8, B0F2, 90F2, B017, 9017, B060, 9060, B062, 9062, B05F, 905F
Kindle 7 (2014): B001, B0C6, 90C6, B0DD, 90DD
Kindle Voyage (2014): B00I, B013, B053, B054
Kindle Paperwhite 3 (2015): G090
Kindle Oasis (2016): G0B0
Kindle 8 (2016): B018

中间还遇到了bridge和hotfix的问题,也不记得装了没装了。
固件5.0.x到5.4.4.2,直接安装JB;
固件FW >= 5.4.5,安装bridge
固件FW >= 5.6.1,要安装hotfix。

第二步:安装KUAL

KUAL可以用来安装其它第三方软件,它看上去就像kindle里的一本书,点击它就可以启动。

在这里插入图片描述
启动后的主界面:
在这里插入图片描述

第三步:安装MR package。

安装软件还是很麻烦,有人在KUAL上开发了插件,这个MR安装更方便,不用下载bin,放在一个文件夹下,就可以安装。

第四步:安装屏保(可选)

我的kindle使用多年,一直停留在难看的屏保图片上。现在我终于可以把它换掉了。先要安装python,再装ScreenSavers。

最近在学Pico,就把屏保图片换成Pico的引脚图吧。

请添加图片描述

第五步:安装USBNET

这一步非常重要,成功后,连接Kindle的那根USB线扮演了网卡的角色。它还带来了一个好处,如果你的kindle有wifi功能,那USB线也可以省了。

在这里插入图片描述

第六步 安装Kterm

Kindle早期的产品内部都是linux操作系统,有人定制了一个Kindle term终端,这样就可以使用kindle linux里的命令行了。

最后一步,ssh, screen……

到了这里,kindle里的linux与树莓派里的linux可以互相访问,还需要设置IP,配置远程连接自动登录,屏幕共享session之类的。曾经在这里犯了一个严重错误,手里已经有了2个linux操作系统,配置ssh的时候,得搞清楚哪个是客户端,哪个是服务器,哪边生成public_key,哪边修改authorized_keys。

authorized_keys文件名,文件内容格式错误,只认Linux里的换行符,都是一个个的大坑。

把pi上的终端内容显示在kindle屏上,基本原理最初一直没想明白,后来终于搞懂了:原来就是screen里的共享session。

最后的效果录个小视频吧:

一个报废的kindle paperwhite墨水屏,经过一番折腾,终于可以连接在树莓派上,当个小显示器玩玩。

参考文献:

https://www.mobileread.com/forums/showthread.php?t=225030

http://blog.yarm.is/kindleberry-pi-zero-w.html

https://www.mobileread.com/forums/showthread.php?t=186645

https://gist.github.com/rvagg/5095506

https://www.meccanismocomplesso.org/en/kindleberry-the-economic-ultraportable-laptop-with-kindle-and-raspberry-pi/

https://www.howtogeek.com/168844/how-to-jail-break-your-kindle-paperwhite-for-screensavers-apps-and-more/

推荐阅读:
树莓派Pico开发系列文章

这篇关于树莓派29/100 - 树莓派接上Kindle的墨水屏是什么体验?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/587024

相关文章

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

树莓派5_opencv笔记27:Opencv录制视频(无声音)

今日继续学习树莓派5 8G:(Raspberry Pi,简称RPi或RasPi)  本人所用树莓派5 装载的系统与版本如下:  版本可用命令 (lsb_release -a) 查询: Opencv 与 python 版本如下: 今天就水一篇文章,用树莓派摄像头,Opencv录制一段视频保存在指定目录... 文章提供测试代码讲解,整体代码贴出、测试效果图 目录 阶段一:录制一段

【LeetCode热题100】前缀和

这篇博客共记录了8道前缀和算法相关的题目,分别是:【模版】前缀和、【模版】二维前缀和、寻找数组的中心下标、除自身以外数组的乘积、和为K的子数组、和可被K整除的子数组、连续数组、矩阵区域和。 #include <iostream>#include <vector>using namespace std;int main() {//1. 读取数据int n = 0, q = 0;ci

牛客小白月赛100部分题解

比赛地址:牛客小白月赛100_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ A.ACM中的A题 #include<bits/stdc++.h>using namespace std;#define ll long long#define ull = unsigned long longvoid solve() {ll a,b,c;cin>>a>>b>

C++入门(06)安装QT并快速测试体验一个简单的C++GUI项目

文章目录 1. 清华镜像源下载2. 安装3. 开始菜单上的 QT 工具4. 打开 Qt Creator5. 简单的 GUI C++ 项目5.1 打开 Qt Creator 并创建新项目5.2 设计界面5.3 添加按钮的点击事件5.4 编译并运行项目 6. 信号和槽(Signals and Slots) 这里用到了C++类与对象的很多概念 1. 清华镜像源下载 https://

牛客小白月赛100(A,B,C,D,E,F三元环计数)

比赛链接 官方讲解 这场比较简单,ABC都很签到,D是个不太裸需要预处理的 B F S BFS BFS 搜索,E是调和级数暴力枚举,F是三元环计数。三元环考的比较少,没见过可能会偏难。 A ACM中的A题 思路: 就是枚举每个边变成原来的两倍,然后看看两短边之和是否大于第三边即可。 不能只给最短边乘 2 2 2,比如 1 4 8 这组数据,也不能只给第二短边乘 2 2 2,比

诺瓦星云校招嵌入式面试题及参考答案(100+面试题、10万字长文)

SPI 通信有哪些内核接口? 在嵌入式系统中,SPI(Serial Peripheral Interface,串行外设接口)通信通常涉及以下内核接口: 时钟控制接口:用于控制 SPI 时钟的频率和相位。通过设置时钟寄存器,可以调整 SPI 通信的速度以适应不同的外设需求。数据发送和接收接口:负责将数据从主机发送到从机以及从从机接收数据到主机。这些接口通常包括数据寄存器,用于存储待发

P11019 「LAOI-6」[太阳]] 请使用最新版手机 QQ 体验新功能

English statement. You must submit your code at the Chinese version of the statement. 题目描述 你的 QQ 收到了一条新消息!但是你很生气,因为你看不到别人在手机 QQ 上发送的超级表情。 消息形如一个字符串 S,包含且仅包含一个超级表情。具体地,我们将 S 的拼音采用驼峰命名法,可以化为如下形

黑神话:悟空》增加草地绘制距离MOD使游戏场景看起来更加广阔与自然,增强了游戏的沉浸式体验

《黑神话:悟空》增加草地绘制距离MOD为玩家提供了一种全新的视觉体验,通过扩展游戏中草地的绘制距离,增加了场景的深度和真实感。该MOD通过增加草地的绘制距离,使游戏场景看起来更加广阔与自然,增强了游戏的沉浸式体验。 增加草地绘制距离MOD安装 1、在%userprofile%AppDataLocalb1SavedConfigWindows目录下找到Engine.ini文件。 2、使用记事本编辑

多个线程如何轮流输出1到100

多个线程如何轮流输出1到100的值 这个面试问题主要考察如何让线程同步,首先线程同步必会用到的就是互斥锁,互斥锁保证多个线程对数据的同时操作不会出错。但是线程同步还会用到条件变量condition_variable,condition_variable(条件变量)是 C++11 中提供的一种多线程同步机制,它允许一个或多个线程等待另一个线程发出通知,以便能够有效地进行线程同步。 conditi