使用Kindle作为斐讯N1的显示器和触屏键盘
说明
前段时间给斐讯N1改装USB Type C供电口,这样就可以使用充电宝供电随时随地使用了。便携性是有了,但是缺少输入输出设备,只能连接手机热点之后用手机SSH进去操作,不太方便。当然随身带个显示器和键盘也是不可能的…
想起来以前有人把Kindle作为树莓派的显示器。既然树莓派可以,N1同为Linux当然也应该能做到了。
Kindle系统基于Linux,root之后可以使用很多Linux命令,这里我们主要用到SSH。只要Kindle和N1同在一个网段,就可以在Kindle上通过SSH登录N1,登录之后就有很多可能性了,比如通过tmux、screen共享终端。Kindle的终端模拟器kterm内置软键盘,这样就可以把Kindle作为N1的显示器和键盘了,而且是支持触屏的键盘!
准备
从上面的原理来看,所有操作的前提是Kindle和N1处于同一个网段,这样才能SSH登录。实现这个前提有两种方法:一种是让Kindle和N1通过USBNet连接,另一种是连上同一个WIFI。本文主要探讨的是USBNet连接的方法,相比WIFI方案有如下优点:
- 物理连接,稳定性好、速度快
- 在Kindle休眠时不会断线(Kindle休眠断WIFI)
- 便携(连接不依赖热点)
- 供电方便(Kindle插在N1的USB接口供电、无需额外电源)
USBNet方案唯一的缺点就是Kindle与N1之间需要通过Mini USB线物理连接,而WIFI方案则不需要,相对来说使用时要优雅一些。
需要准备的软硬件
- Kindle
- 一台能JailBreak的Kindle
- KUAL
- USBNet
- Kterm
- N1
- Tmux(或者screen)
- 可选硬件
- USB键盘(准备阶段写脚本、测试等)
- 显示器
建立连接
Kindle的配置
1. JailBreak
Kindle需要JailBreak之后才能自行安装插件,新版本的固件已经不支持软JailBreak了。我有台KPW一代,幸好很久之前就破解了,这里就用它来当N1的屏幕吧。
有关Kindle的JailBreak资料可参考这里: Kindle Touch/PW1/PW2 5.0.x - 5.4.4.2 JailBreak. Plus FW 5.x USBNetwork., 下载地址在 Snapshots of NiLuJe’s hacks
2. 安装KUAL
KUAL是Kindle的一个应用载入器,我们可以把它理解为Windows的开始菜单或者Android的Launcher之类的。KUAL能够支持众多插件,后面要用到的USBNet就是其中一个。
KUAL的安装方法和相关信息可以在这里找到:KUAL: Kindle Unified Application Launcher
3. 安装USBNet
顾名思义,USBNet就是通过把Kindle当成一块USB网卡,这样N1就可以和N1建立物理连接了。
有关Kindle的USBNet资料可参考这里: Kindle Touch/PW1/PW2 5.0.x - 5.4.4.2 JailBreak. Plus FW 5.x USBNetwork., 下载地址在 Snapshots of NiLuJe’s hacks
下载后解压kindle-usbnet-0.22.N-xxx.xz
,然后把extensions目录下的usbnet拷贝到kindle的extensions目录,把对应版本的升级文件(KPW一代是Update_usbnet_0.21.N_install_touch_pw.bin
)放到mrpackages目录(不存在则新建一个)。
拔掉Kindle,然后启动KUAL,依次点击Helper
-> Install MR Packages
菜单,稍等一会儿提示安装完成并自动重启。
安装完成之后需要配置一下SSH,方便我们通过N1管理Kindle,当然这个操作不是必要的。连上电脑,进入usbnet/etc
文件夹将DISABLED_auto
改名为auto
,然后修改USE_WIFI
为true
,修改USB_WIFI_SSHD_ONLY
为false
,最后新建一个authorized_keys
文件添加一组公钥,这样就可以通过WIFI和USBNet登录Kindle了。完成这些步骤之后重启Kindle。
4. 启动USBNet
启动KUAL,一次点击菜单USBNetwork
-> Toggle USBNetwork
在USB Mass Storage
模式和USB Network
模式之间切换。当前状态可点击USBNetwork Status
查看,成功的话提示USBNetwork enabled
。
可以打开kterm使用ifconfig
命令查看网卡的地址。注意这里默认是192.168.15.x
网段,和网上常见的192.168.2.x
网段不同。这个配置是可以在usbnet的config
文件修改的。
N1的配置
1. 配置网卡
将Kindle通过USB连接到N1,重启N1。不知道为什么不支持热插拔,只能重启才能识别。
输入lsusb
命令,如果看到 Linux-USB Ethernet/RNDIS Gadget
这样的设备说明连接成功。
编辑/etc/network/interfaces
添加网卡配置:
1 | # Kindle USBNet |
重启N1,输入ifconfig usb0
检查网卡是否连接成功:
此时可以ping 192.168.15.244
检查Kindle是否能够连通。
2. 安装Tmux
tmux和screen都可以实现屏幕共享,但是我觉得tmux要强大很多,所以选择了tmux。
3. 自动打开tmux
N1这边需要实现的是登录tty1然后tmux,Kindle连上这个session后就可以和显示器同步了,可以使用Kindle的软键盘或者USB实物USB键盘同步控制。
可以通过连接USB和显示器的方式实现上述操作,但是我们的目的是为了脱离键盘和显示器,自动完成这些操作。
** a. 自动登录**
新建目录/etc/systemd/system/getty@tty1.service.d,新建文件/etc/systemd/system/[email protected]/override.conf
,内容如下:
1 | [Service] |
这样每次启动的时候就可以自动登录了,牺牲了一些安全性,但是方便多了。
** b. 自动打开tmux**
根据需要在.bashrc
、.profile
、.zshrc
等某个文件添加tmux的自启动代码。我用zsh,所以在.zshrc
文件添加。
1 | # start tmux on console(not ssh) |
重启N1,可以在屏幕上看到自动登录并且启动了tmux。
4. 自动连接
在Kindle的/mnt/us/extensions/kterm/bin
目录新建一个n1
脚本文件,实现自动登录N1并连接到tmux session的功能。
1 | #!/bin/bash |
修改kterm的启动脚本将kterm的bin
目录添加到PATH
。
将Kindle连上N1,重启N1,然后在Kindle上打开kterm,输入n1命令即可登录。
此时Kindle的屏幕与电脑屏幕完全同步:
脱离键盘和屏幕,使用Kindle完全控制N1:
参考资料
- Kindle Touch/PW1/PW2 5.0.x - 5.4.4.2 JailBreak. Plus FW 5.x USBNetwork.
- Snapshots of NiLuJe’s hacks
- KUAL: Kindle Unified Application Launcher
- USBNetwork Hack 安装教程:无线管理 Kindle – 书伴
- Pi k3w – Kindle 3 display for Raspberry Pi | projectdp
- Kindle ssh/scp with the USBnetwork package - MobileRead Forums
- How can I get autologin at startup working on Ubuntu Server 16.04.1?
使用Kindle作为斐讯N1的显示器和触屏键盘
https://www.shuyz.com/posts/phicomm_n1_with_kindle_as_screen/