当前位置:首页 > 问答 > 正文内容

kindle4(水墨屏开发设备,旧 Kindle 改造而成)

wwwnzt88com2年前 (2022-12-11)问答69

原文地址:Turning an old Amazon Kindle into a eink development platform

原文作者:adq

译者 & 校正:HelloGitHub-小鱼干 & 卤蛋

我想有个用于(开发)未来项目的水墨屏,刚好我又买了一个带树莓派 “hat” 的小玩意。就这样,灵光一闪的我想到旧 Amazon Kindle 电子书阅读器可以变废为宝。

译者:这便是本文的由来。

我之前有过使用 Kindle 的经验:我为它移植过一个 Infocom 解析器 和一个 Manga 漫画阅读器 。我让亚马逊软件以 “Kindlets” 形式加载 Infocom 和 Manga,并将它们集成到电子书阅读器 Kindle 中。而现在,我想要一个好用且便宜的水墨屏 Linux 开发平台。

下面就是全部的操作和流程!

Ebay 上便宜的 Kindle(和它们便宜的原因)

我在 Ebay 上看到了许多便宜的 Kindle,上面标着 “BLOCKED BY AMAZON”,当然我并不打算买它们,因为理论上它们可能被偷了。最后,我选择了一个 7 英镑的非触摸版 Kindle 4。

几天后,我收到货发现了它这么便宜的原因:这台 Kindle 陷入了某种不可退出的演示模式:

我在 Google 上搜了下解决方法,后来版本的 Kindle 是可以退出演示模式,但这些方法在这个 Kindle 4 版本上没用。不过不要紧,这不重要:因为我并不想在这个 Kindle 上运行原装的 Kindle 电子书软件。

嗯,下一步我们就是要去获得访问权限。我浏览了 mobileread 论坛 显示 Kindle 有一个调试串口:是时候动手了!

处理硬件

这台 Kindle 有点麻烦:它周围有多个卡扣,外壳粘在电池组件上,我机智地用了一把刀来拆机并用丙酮把 (Kindle 后盖的)粘合剂擦拭干净。

  • 红色框:讨厌的卡扣
  • 紫色:真的非常麻烦的胶水(粘合剂)
  • 黄色:串口

一般来说,硬件串口是没有插孔的,我们要将连接线焊接到主板的串口上。我喜欢用大约 0.2mm 电线来连接电子元件,并用我的电烙铁来重焊 Kindle 底座。

我不想任何电线乱绕,我也深知我可能会焊乱电线但我又需要连接串口,所以我想到了一个法子连接电线:

我用强力胶把一块条板粘在 Kindle 的 PCB 印刷电路板上,然后把迷你 PCB 连接点上的电线焊在一端。最后,在另一端我焊接了一个大的、通用“Dupont”电缆插座,这样我可以很容易地连接和拆卸它。对啦,Kindle PCB 顶部电缆是 0v/GND,其他电缆是 TX 和 RX (我忘了这两个电缆的顺序)。

最后一个难题:Kindle 串口运行电压是 1.8v,所以我需要一个串行适配器来供电:

我买的适配器支持 5v、3.3v、2.5v 和 1.8v,非常搭!

Root Kindle

接下来,我把串行适配器连到我的笔记本电脑上,运行 minicom 串口通信软件,再重新启动 Kindle。然后,我(难免地,译者:前面有提到作者忘记了 TX 和 RX 顺序)交换 TX 和 RX 电缆后,我看到了 Kindle 欢迎信息!

U-Boot 2009.08-lab126 (Aug 29 2012 - 12:55:24)CPU:   Freescale i.MX50 family 1.1V at 800 MHzmx50 pll1: 800MHzmx50 pll2: 400MHzmx50 pll3: 216MHzipg clock     : 50000000Hzipg per clock : 50000000Hzuart clock    : 24000000Hzahb clock     : 100000000Hzaxi_a clock   : 400000000Hzaxi_b clock   : 200000000Hzweim_clock    : 100000000Hzddr clock     : 800000000Hzesdhc1 clock  : 80000000Hzesdhc2 clock  : 80000000Hzesdhc3 clock  : 80000000Hzesdhc4 clock  : 80000000HzMMC:  FSL_ESDHC: 0, FSL_ESDHC: 1Board: TequilaBoot Reason: [POR]Boot Device: MMCBoard Id: 0031701123730Z56S/N: B02317022392005MIniting MDDR memoryZQ calibration complete: 0x128=0xfffe0010 0x12C=0xffffffffDRAM:  256 MBUsing default environmentIn:    serialOut:   logbuffErr:   logbuffQuick Memory Test 0x70000000, 0x10000000POST done in 13 msHit any key to stop autoboot:  0 ## Booting kernel from Legacy Image at 70800000 ...   Image Name:   Linux-2.6.31-rt11-lab126   Image Type:   ARM Linux Kernel Image (uncompressed)   Data Size:    4777568 Bytes =  4.6 MB   Load Address: 70008000   Entry Point:  70008000   Verifying Checksum ... OK   Loading Kernel Image ... OKOKStarting kernel ...[snip]Welcome to Kindle!kindle login: 

很好,这是启动 uboot 的启动加载器( bootloader )在启动 Linux 并要求我登录。

以 root 登录,提示要输入密码:Emmm…密码?从以前的 Kindle 使用经验中,我知道可以用 Kindle 的序列号生成密码。然后我找到了 这个网站,它会为一个特定的设备生成许多可能的密码:我的 Kindle root 登录密码是第三个。

为防止网站倒闭,这里是 Javascript 生成密码的关键片段:

var md5 = hex_md5(serial);document.getElementById("rootpw").innerHTML = "fiona"   md5.substring(7,11);document.getElementById("rootpw2").innerHTML = "fiona"   md5.substring(7,10);document.getElementById("rootpw3").innerHTML = "fiona"   md5.substr(13,3);

对对,我忘了说我是如何拿到设备序列号的。Kindle 以非工作状态插上 usb,即,你不能将这些演示设备作为磁盘。但在这个状态的 Kindle 可用 Linux 的 dmesg 命令输出序列号(你也可以在 uboot 中使用 printenv 命令得到序列号,当它显示 “Hit any key to stop autoboot” 时按 Enter 回车键):

[128033.676587] usb 1-2: new high-speed USB device number 51 using xhci_hcd[128033.829631] usb 1-2: New USB device found, idVendor=1949, idProduct=0004, bcdDevice= 1.00[128033.829638] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3[128033.829642] usb 1-2: Product: Amazon Kindle[128033.829645] usb 1-2: Manufacturer: Amazon[128033.829648] usb 1-2: SerialNumber: XXXXXXXXXXXXXXXX

Cool!我们有 root 权限,可以登录了!现在来看看如何让它更方便地使用。

转储系统

一般来说,第一步是将磁盘信息转到另一台计算机上进行分析。

检查 /proc/mounts,显示主磁盘 /dev/mmcblk0 上有多个分区。

运行 fdisk /dev/mmcblk0 会得到如下结果:

Units = cylinders of 64 * 512 = 32768 bytes        Device Boot      Start         End      Blocks  Id System/dev/mmcblk0p1   *        1025       12224      358400  83 Linux/dev/mmcblk0p2           12225       14272       65536  83 Linux/dev/mmcblk0p3           14273       15296       32768  83 Linux/dev/mmcblk0p4           15297       59776     1423360   b Win95 FAT32

  • 四个分区:三个 Linux 系统,一个 FAT32 系统。
  • 第一个磁盘开始时离磁盘很远:原来内核存储在那个 “丢失的” 区域。
  • 深入研究后发现分区 1 是正常系统,2 是一种诊断工具,3 是存储 Kindle 私密信息(例如 Wi-Fi 密码)。当你通过 USB 插入 Kindle 时,你会看到分区 4:你电子书的存储地方。 — 分区 4 挂载在 /mnt/us”`。

我用 dd 命令将磁盘和分区 1-3 转储到 /mnt/us 上(一般我中意备份一个完整的原始映像,以便在出现问题时可以恢复它):

dd if=/dev/mmcblk0 of=/mnt/us/kindle.img bs=32768 count=15297

虽然这款 Kindle 不能在 USB 上显示为磁盘,但因为我有 root 权限能让它这样:

rmmod g_file_storagemodprobe g_file_storage file=/dev/mmcblk0p4

它会出现在我的笔记本上,然后我把所有东西都复制了下来。

分析系统

终于,我用以下命令在笔记本安装 kindle.img 中的分区:

kpartx -v kindle.img

接着,我将 Kindle 各个分区安装到我的笔记本电脑上。我把所有分区文件放在一个文件夹中,这样我可以方便地用 grep 命令查看它们。我发现:

  • Kindle 用 rc.d 作为它的系统初始化系统,文件夹中有很多优雅的纯文本脚本。
  • Init level 5 是运行电子书软件的 “通用” 系统
  • 电子书软件在 /opt/amazon目录,用 Java 编写(我知道要快速复习 Java 了)。
  • Kindle 有一堆有意思的纯文本 “diag” 脚本用来测试。
  • 有一个相当漂亮的 wifid daemon 来管理 Wi-Fi 连接:我从 diag 脚本中找到了与它对话的方法。
  • 用 /usr/sbin/eps 命令(文档见这里)从命令行写入数据到水墨屏。
  • 我没找到可见的 “turn off demo mode” 开关:看样子演示模式是 Java 电子书软件的定制功能。
  • 以下系统服务与不支持的功能或电子书软件有关,或与 Amazon 联系:S50wan S70wand S75phd S81usbnetd S93webreaderd S94browserd S95framework S96boot_finished。
对话 Wifid

你可以用 Kindle 内置的 wifid 连接 Wi-Fi,并管理你的 Wi-Fi 配置文件。对啦,如果你的 Wi-Fi 连接失败,一定要记住许多 Kindle 只支持 2.4Ghz Wi-Fi

列出 Wi-Fi 配置文件数量

lipc-get-prop com.lab126.wifid profileCount显示 Wi-Fi 配置文件

echo "{index=(0)}" | lipc-hash-prop com.lab126.wifid profileData删除某个 Wi-Fi 配置文件

lipc-set-prop com.lab126.wifid deleteProfile WIFIESSID创建 Wi-Fi 配置文件

echo '{essid="WIFIESSID", smethod="wpa2", secured="yes", psk="WIFIPSK"}' | lipc-hash-prop com.lab126.wifid createProfile

  • smethod 可以是 open / wep / wpa / wpa2 之一(如果选择 open,请设置 secured 为 “no”)
  • WIFIPSK 是 wpa_passphrase 实用程序(这实际上是在 Kindle 上)生成的 WIFI PSK:一个正常的 “wifi passphrase” 将不起作用。
连接 Wi-Fi 配置文件

lipc-set-prop com.lab126.wifid cmConnect WIFIESSID显示 Wi-Fi 连接情况

echo "{index = (0)}" | lipc-hash-prop -n com.lab126.wifid currentEssid修改 Root

下面的许多说明需要更改 Kindle 的根磁盘。但是,默认情况下根磁盘为防止被修改以只读模式挂载。要解决这个问题,在 Kindle 上运行以下命令:

mntroot rw

完成修改后,将其设置为只读模式,以防止任何不必要的更改:

mntroot ro安装 Dropbear SSH

我想 ssh 到我的 Kindle,所以我要安装 ssh 程序 dropbear。当然,Kindle 是一个基于 ARM 的设备,所以要么我自己编译 dropbear,要么在某个地方找到 dropbear 二进制文件。刚好,Kindle 有一个遗留的 USBNET 漏洞:我自己不直接用这个漏洞,因为我想完全控制这个开发套件,但是我可以从 USBNET 那里借用 dropbear 二进制文件。

不巧的是,USBNET 漏洞是用 Kindle 自有诡异的更新格式发布的,所以我们需要把 USBNET 提取出来:

在你的电脑中:

  • 下载这个 git repo 并编译它——这会让我们解码 Kindle 更新。
  • 在 这里 下载 kindle-usbnetwork-0.57.N-k4.zip,并复制到 KindleTool/Release/。

cd KindleTool/Release/unzip kindle-usbnetwork-0.57.N-k4.zip./kindletool extract Update_usbnetwork_0.57.N_k4_install.bin usbnetcd usbnettar Jxf usbnet.tar.xz

  • 将 src/usbnet/bin/dropbearmulti 复制到你的 Kindle(我重装它为 USB 设备并复制过来)。

在 Kindle 中:

cd /mv /mnt/us/dropbearmulti /chmod a x /dropbearmultiln -sf /dropbear /dropbearmultiln -sf /dropbearkey /dropbearmultiln -sf /bin/scp /dropbearmulti/dropbearkey -t rsa /dropbear_rsa_host_key定制 Kindle

我用下面的方式重命名了所有不需要的系统服务:

cd /etc/rc5.d; mv S95framework DISABLED.S95framework

我在 /etc/rc5.d/S99adq 中添加了自己的初始化脚本来添加自己的定制设置:

#!/bin/shNAME="adq"case "$1" in   start)        # display some stuff!        /usr/sbin/eips -c 20 20 "HELLO ADQ"        IP=`ifconfig wlan0 | awk '/t addr:/{gsub(/.*:/,"",$2);print$2}'`        /usr/sbin/eips 1 1 "IP Address: $IP"        /usr/sbin/eips 1 2 "Root Password: <MY ROOT PASSWORD>"        /usr/sbin/eips ""        # connect to wifi and allow ssh in        lipc-set-prop com.lab126.wifid cmConnect MYWIFISSID        iptables -A INPUT -i wlan0 -p tcp --dport 22 -j ACCEPT        /dropbear -r /dropbear_rsa_host_key        mkdir -p /mnt/us/usbnet/etc        echo "<MY SSH PUBKEY>" > /mnt/us/usbnet/etc/authorized_keys        # expose shell over usb        modprobe -r g_file_storage        modprobe g_serial        /sbin/getty -L 115200 ttyGS0 -l /bin/login &        ;;   stop)        ;;    *)        msg "Usage: /etc/init.d/$NAME {start|stop}" W >&2        exit 1        ;;esacexit 0

  • 在电子书屏幕的启动页显示一些有用信息
  • 连上 Wi-Fi。
  • 允许通过防火墙 SSH。
  • 运行 dropbear ssh 进程。
  • 在 dropbear 中添加我的 ssh 公钥。
  • 移除 “pretend to be a disk” USB 功能。
  • 通过 USB 连接时,假装为串行设备并给出一个登录提示:如果我通过 USB 插入它并使用 minicom,我就会得到一个登录提示… 嗯,这是为了防止出现问题。

一旦启动,我的 Kindle 就是现在这样,然后我可以作为 root 用户 ssh 连接它。

差不多了:我现在可以 ssh 连 Kindle,如果发生问题,我也有多级别的串行控制台来解决问题。这是一个小巧的、支持无线网、电池供电的水墨屏 Linux 开发系统。

最后的操作,把后盖合上来保护电路。

展望

这个库 (FBInk)看起来可以取代亚马逊的 eip 软件;如果我想把显示器集成到我自己的软件中,FBInk 可能会更好。

最后,欢迎优秀的你加入 HelloGitHub 的「译文亦舞」系列,让你的才华舞动起来!把优秀的文章分享给更多的人。

扫描二维码推送至手机访问。

版权声明:本文由小草网发布,如需转载请注明出处。

本文链接:http://www.nzt88.com/59027.html

分享给朋友:

“kindle4(水墨屏开发设备,旧 Kindle 改造而成)” 的相关文章

重生之三国争霸(重生之三国争霸txt下载)

重生之三国争霸(重生之三国争霸txt下载)

求好看的小说穿越到秦或三国的男主,《回到秦朝当皇子》10-30000《逍遥寻秦传》《大秦帝国风云录》10-30000《霸秦》《强秦》000336 0《大风秦楚》10-30000《穿越大秦之我是太子》《秦霸天下》10-30000《大秦霸业》 3000 360《铁血大秦》000:00000 3000《灭...

知易行难的意思(知易行难知行合一的意思)

知易行难,行胜于言是什么意思“易行难,行胜言”是指了解事物的道理比较容易,执行起来比较困难,了解事物的规律、道理是一回事,办好是另一回事。 不是不说,而是一定要求真务实、作证。 “行胜于言”是清华精神中“讲求实干”的体现,早在三十年代,朱自清老师就说过清华的精神就是实干。 至今校园中心依然矗立着碑,...

长袜子皮皮主要内容(长袜子皮皮主要内容200字左右)

长袜子皮皮中皮皮看马戏的主要内容皮皮看马戏是有一天皮皮、杜米和安妮卡一起去看马戏。 她们看着就开始玩了。 其中有一个节目看谁能打败力士阿道夫就能得到一百克朗。 结果皮打败了力士阿道夫,把他高高举起,获得了一百克朗。人物介绍:主人公的皮力非常大,可以很容易地把马和牛举在头上,制服强壮的小偷和强盗,让顽...

张国荣遗言(哥哥张国荣遗书)

张国荣:留17字遗书,从24楼一跃而下,是谁将他逼上了绝路?事实上,有自杀倾向是重度抑郁症最常见的症状。 坠楼前,他在写的笔记中写道:“Depression (注:抑郁症),谢谢朋友。 谢谢梅雷菲教授。 这一年很辛苦。 我受不了了。 感谢唐老师。 感谢家人。 感谢胖姐姐。 我一辈子都没做坏事。 为...

愚不可及的意思(愚不可及的意思和造句)

愚不可及的意思(愚不可及的意思和造句)

愚不可及是什么意思愚蠢透顶的中文解释以下结果由汉典提供词典说明...

泫然泪下(泫然泪下的读音)

泫然泪下,怎么读水滴: ~哭(流泪)。 ~突然流鼻涕。 宣四声泗宣第四声泗宣第四声泗宣第四声泫然落泪 是什么意思以下结果由汉典提供词典解释[(USU.oftears ) fall; trickle]听到这个悲痛的消息,她不由得流下了眼泪。 也是流泪。《礼记檀弓上》 :“泷然鼻涕说。 《吾闻之,古不...

戌狗的拼音(戌狗的拼音)

戌狗的拼音(戌狗的拼音)

子鼠丑牛到戌狗亥猪的拼音声调从老鼠丑牛到戌狗亥猪的拼音声调如下。子鼠【z】sh】丑陋的牛寅虎【ynh】(兔) m ) ot辰龙【chnlng】蛇,蛇午马【w(m )】未羊【wiyng】申猴【shnhu】酉鸡【yuj】戌犬【x踬( g ) u】亥猪【hizh】十二生肖拼音知识普及:子( z )...

相看两相厌(相看两相厌的厌)

《如懿传相看两相厌》台词是什么?1、原本由于过于年轻,也可以变得令人刮目相看。 古今之情,本来是可以接受的。 冷漠的人,如何结伴而行呢?2、你有小妾的脸吗? 你还会给自己脸。 你总是有很多说辞,其实意气用事,薄情沉默寡言,自私虚伪的是你,多疑的是你。3、臣妾一生如梦,后悔也来不及。 一生,充满春风,...

诿怎么读(诿怎么读什么意思)

诿怎么读(诿怎么读什么意思)

“诿”怎么读?() )声母w、韵母ei,读第三个音。 (基本释义(责任、错误等) ) ) ) ) ) ) ) )推压、混淆) ) ) w) ihn ) ) ) ) )探索的一般过程从发现问题、提出问题开始。 发现问题后,根据自己所掌握的知识和生活经验来假设问题的答案。 设计探索的方案,包括材料的选...

凑十法分解式图片(8+9凑十法分解式图片)

凑十法分解式图片加法19+8这位朋友知道凑十法是20以内进位加法的基本思路。 用凑十法,可以把20以内的进位加法变成学生熟悉的十几个问题,很困难。例如,9 5将5分为1和4。 9是十把一扎,缺1,所以分1。因此,9 5是分解9 1=10、然后10 4=14进行计算,所以,孩子要记住“9要1”、“8要...

粗旷和粗犷读音(粗旷和粗犷读音的拼音怎么写)

粗旷还是粗犷?粗粗是中文词汇,粗粗是错误的写法。粗犷的意思:1、粗暴蛮横。 例句:)1)“豪爽粗犷者少,武艺高强,能惹人生气。 ”)2)“佚期及兄广、弟思平、表弟孜敬均粗犷,逐列克制之。 ”2、粗犷豪放。 例句:(1) 《北史邓至传》 :“(诸强国(风俗粗犷,与邓至国不同焉。 ”)2)“题材多种多样...

透密(透蜜护肤品是正规产品吗)

透密眼霜怎么样我用过透蜜的眼霜。 效果很厉害。 本人发誓绝对不是透蜜公司的委托! 我是淘宝论坛潜水多年的老网虫,经常熬夜,难免有黑眼圈、眼袋、眼纹。 啊~~~上了年纪,有皮肤问题。 眼睛是心灵的窗户,熊猫的眼睛,很难看。 最初,我买了透蜜的体验服。 价格非常实惠,柠檬水和晴碧等的价格要几百美元。 透...

替硝唑氯化钠注射液(替硝唑氯化钠注射多少钱一瓶)

替硝唑氯化钠是什么,怎么使用,注意事项适应症败血症、骨髓炎、腹膜炎、盆腔炎、支气管肺炎、流行病学、神经内科、普外科、妇产科、呼吸内科两种用法用量1 .预防手术后厌氧菌感染。 总量1.6g次或分2次缓慢滴注,第一次手术前2~4小时滴注,第二次手术期间或术后12~24小时内滴注。 2 .治疗厌氧菌感染。...

糖芋苗(糖芋苗是什么做的)

芋苗的功效与作用1、芋头苗中富含蛋白质、钙、磷、铁、钾、镁、钠、胡萝卜素、烟酸、维生素c、b族维生素、皂苷等多种成分,所含矿物质中氟含量较高2、其丰富的营养价值,能增强人体免疫功能,可作为癌肿防治的常用药膳主食。 在癌症手术或术后放疗、化疗及其康复过程中有辅助治疗作用。3、芋头苗中含有粘液蛋白,被人...

双手合十是什么意思(女生发双手合十是什么意思)

双手合十是什么意思(女生发双手合十是什么意思)

合十手势什么意思合掌手势是表示请求和感谢的,习惯在朋友之间求助、对方提供帮助后的场合使用,但佛教僧侣问候时双手合十的手势是表示对对方尊敬和敬意的礼貌手势。合掌手势在不同场合的具体含义如下:双手合十有请求、请求的意思,许愿、祈祷的时候,请用双手合十的手势。 另外,请朋友和同事帮忙时,也可以用双手合十的...

上海东郊宾馆(上海东郊宾馆电话)

上海东郊宾馆可以随便进去吗上海郊外的酒店可以入住,但请注意干净的服装、文明的举止和温柔的语言。详细地址:上海市浦东新区金科路1800号。停车指南:直接导航东郊酒店东门,保安量体温后直接释放。 因为停车位很充裕,所以停下银杏林的边缘,到里面有草坪和湖泊等景观。 吃饭的话请直接停在麒麟阁附近。停车费为1...