UZ801 LTE MiFi 加密狗 — ADB 自动启用(主机端)
便宜的 ~$10 Qualcomm LTE MiFi 加密狗 (05c6:90b6, "Android"/UZ801, msm8916) 以 RNDIS 模式 启动,具有位于 http://192.168.100.1 的网页 UI。获取 http://192.168.100.1/usbdebug.html 会将它们切换到 ADB 模式(并且它们已经是 root 权限)。参考:https://nickvsnetworking.com/adventures-with-a-10-lte-mifi-dongle/
启用步骤必须在 USB 主机(Proxmox 虚拟机监控器)上运行,因为只有主机与 192.168.100.1 之间有 RNDIS 链接 — OmniWeb 手机代理在无特权的 LXC(CT 102)中运行,并且仅在加密狗处于 ADB 模式时才能作为 USB 设备访问。因此,这个自动化是主机端的 udev + systemd,而不是代理代码。
文件
mifi-adb-enable.sh→/usr/local/sbin/mifi-adb-enable.sh(0755)mifi-adb-enable.service→/etc/systemd/system/mifi-adb-enable.service99-mifi-adb-autoenable.rules→/etc/udev/rules.d/99-mifi-adb-autoenable.rules
sudo install -m0755 mifi-adb-enable.sh /usr/local/sbin/mifi-adb-enable.sh
sudo install -m0644 mifi-adb-enable.service /etc/systemd/system/mifi-adb-enable.service
sudo install -m0644 99-mifi-adb-autoenable.rules /etc/udev/rules.d/99-mifi-adb-autoenable.rules
sudo systemctl daemon-reload && sudo udevadm control --reload
流程:加密狗插入(RNDIS)→ udev 触发 → mifi-adb-enable.service → 脚本启动 RNDIS 接口,curl usbdebug.html → 加密狗重启进入 ADB 模式 → 重新枚举 ADB 接口 → CT-102 udev 规则(如下)将节点交给容器 → 代理的 adb 看到它。在 adb 模式重新枚举时,脚本再次运行,检测到 ADB 接口 (ff/42/01) 并退出 — 无循环。
伴随的 CT-102 USB 直通 udev 更改(必需)
加密狗的 Qualcomm VID 05c6 必须交给容器,并且组 必须是 plugdev(主机 gid 100046),而不是容器 root,否则代理的 adb(用户 omniweb-agent,plugdev 成员)无法打开节点。Android 手机规则也是如此:它们的 GROUP="100000"(容器 root),代理无法访问 — 设备仅在 adb 持有枚举时的 fd 时有效,并在每次重新枚举时丢失。修复为 GROUP="100046"。
在 /etc/udev/rules.d/99-ct102-android.rules 中,所有手机规则使用 OWNER="100000", GROUP="100046", MODE="0660",加上加密狗 VID:
SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ATTRS{idVendor}=="05c6", OWNER="100000", GROUP="100046", MODE="0660"
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", OWNER="100000", GROUP="100046", MODE="0660"
这些主机更改在实验室中实时应用,但应该在 OmniCore ansible(监控/主机角色)中进行编码,以便在主机重建时生效。