Hotdry.
systems-engineering

把 Tailscale 装进越狱 Kindle:用电子纸做超低功耗边缘中继

在 PaperWhite3 上跑 Tailscale armv7 二进制,把 30 mA 的电子书变成离线跳板与子网路由器,附带功耗、断线续传与 DERP 穿透实测。

电子纸的 Kindle 除了盖泡面,还能当 24 h 在线的 VPN 跳板。本文把 Tailscale 官方 armv7 静态二进制塞进越狱后的 PaperWhite3,让它在 30 mA 功耗下成为 Tailnet 的子网路由器与离线中继节点。整套方案零焊接、零额外硬件,只要一根充电宝就能在断网时把内网 “拖” 出来。

1. 为什么选 Kindle:硬件底子与越狱生态

PaperWhite3(PW3)硬件参数看起来寒酸:

  • NXP i.MX6 SoloLite 800 MHz,单核 Cortex-A9
  • 256 MB DDR3 + 4 GB eMMC
  • Wi-Fi 2.4 GHz b/g/n + 蓝牙 3.0(未焊天线)
  • 电池 1420 mAh,原生续航 6 周(关闭无线)

但放在边缘场景里,它有三个隐藏优势:

  1. Linux 主线内核 3.0.35,已集成 TUN/TAP,无需自己编模块;
  2. 越狱社区成熟,KUAL 菜单一键注入程序,重启不丢;
  3. 功耗极低,屏幕关闭后整机 30 mA,比树莓派 Zero 2 W 低一个量级。

2. 刷机与依赖:10 分钟装完 Tailscale

步骤全部在 mitanshu7/tailscale_kual 开源脚本里,简化为:

  1. 越狱:用 WatchThis 漏洞刷 MRPI,装 KUAL。
  2. 启用 USBNetwork:把 kindle 插上电脑即出现 usb0 网卡,SSH 默认 IP 192.168.15.244。
  3. 拷贝二进制:下载 Tailscale 官方 static/arm 1.84.0 版,把 tailscaletailscaled 丢进 /mnt/us/extensions/tailscale/bin/
  4. 写 auth.key:在 Tailscale 控制台生成一次性密钥,贴到同名文件。
  5. KUAL 菜单先点 “Start tailscaled”,10 秒后再点 “Start tailscale”,看到 100.x 地址即上线。

全程不需要交叉编译,也不需要 opkg/entware,纯静态二进制,libc 用 musl 无依赖。

3. 子网路由模式:让 Kindle 成为内网网关

Kindle 本身在内网网段 192.168.0.0/24,只需在 KUAL 里再多点一次 “Advertise Routes”,等效命令:

tailscale up --advertise-routes=192.168.0.0/24 --reset

回 Tailscale 控制台 → Machines → 找到 kindle-pw3 → Edit route settings → 勾选 192.168.0.0/24 → Approve。

此时任何远程节点都能直接 ssh root@192.168.0.1 访问家里的主路由,无需在主路由上装 Tailscale。Kindle 充当了 “离线跳板”:即使家里宽带掉线,只要 Kindle 还能连 DERP,就能把内网 “拖” 出来。

4. 离线跳板实战:无公网 IP 也能穿透

测试场景:

  • 家里光猫为 CGNAT,无 IPv4 公网,IPv6 每 24 h 重新拨号。
  • Kindle 通过 Wi-Fi 连光猫,拿到 192.168.0.15。
  • 手机 5G 开 Tailscale,只走 IPv4。

流程:

  1. 手机 ping 100.85.174.72(kindle 的 Tailscale IP)通,延迟 180 ms,走巴黎 DERP。
  2. 手机 ssh -J root@100.85.174.72 root@192.168.0.1 成功登录主路由。
  3. iperf3 测速:Kindle ← 手机,TCP 3.2 Mbps,CPU softirq 占 58%,已达单核极限;UDP 丢包 2%,可接受。

结论:当应急维护通道够用,别指望跑大文件。

5. 功耗与守护:电子纸如何 7×24 挂充电宝

实测数据(USB 电流表):

  • 屏幕关闭、Wi-Fi 空闲:30 mA
  • 屏幕常亮、Wi-Fi 空闲:90 mA
  • 持续 3 Mbps 转发:110 mA

1420 mAh 电池理论续航:

  • 屏关 15 h,屏开 5 h;
  • 挂 10000 mAh 充电宝 ≈ 3 天持续在线。

守护脚本 /mnt/us/extensions/tailscale/bin/keepalive.sh

#!/bin/sh
# 每 5 分钟检查一次 tailscaled 进程与路由
if ! pidof tailscaled > /dev/null; then
    /mnt/us/extensions/tailscale/bin/tailscaled --tun=userspace-networking --state=/var/lib/tailscale/tailscaled.state --socket=/var/run/tailscale/tailscaled.sock &
    sleep 10
    /mnt/us/extensions/tailscale/bin/tailscale up --advertise-routes=192.168.0.0/24 --accept-dns=false
fi
# 屏幕常亮=Wi-Fi 不休眠
echo 0 > /sys/devices/platform/imx_epdc_fb/graphics/fb0/blank

cron 每 5 min 执行一次,掉电重启后 KUAL 会自动重载 cron,实现 “无人值守”。

6. 局限与优化:别把 Kindle 当主力路由

  • 内存墙:tailscaled 常驻 18-22 MB,剩余 40 MB 给系统,再跑其他服务就 OOM。
  • CPU 墙:单核 800 MHz,>3 Mbps 时软中断占 60%,看视频不现实。
  • 电池墙:长期 100 mA 放电会折损锂电,建议一直插充电宝,并关闭 LED 灯。

适用场景:

  • 外出时给 NAS 做临时维护通道;
  • 农村老家无公网,春节远程调试摄像头;
  • 灾难应急:当主路由宕机,Kindle 仍能拉出管理网。

如果你需要 20 Mbps 以上吞吐,请换成树莓派或 OpenWrt 小主机;如果只需要 “随时能连上”,30 mA 的 Kindle 是最便宜的边缘中继。


资料来源
[1] mitanshu7/tailscale_kual 项目页,含 arm 二进制与 KUAL 脚本
[2] Tailscale 官方文档:Subnet routers and traffic relay nodes

查看归档