UZ801 LTE MiFi dongle — ADB auto-enable (host side)
Cheap ~$10 Qualcomm LTE MiFi dongles (05c6:90b6, "Android"/UZ801, msm8916) boot
in RNDIS mode with a web UI at http://192.168.100.1. GETting
http://192.168.100.1/usbdebug.html flips them into ADB mode (and they come
up already-root). Ref: https://nickvsnetworking.com/adventures-with-a-10-lte-mifi-dongle/
The enable step has to run on the USB host (the Proxmox hypervisor), because
only the host has the RNDIS link to 192.168.100.1 — the OmniWeb phone-agent runs
in the unprivileged LXC (CT 102) and reaches the dongle only as a USB device once
it is in ADB mode. So this automation is host-side udev + systemd, not agent code.
Files
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
Flow: dongle plugged (RNDIS) → udev fires → mifi-adb-enable.service → script
brings up the RNDIS iface, curls usbdebug.html → dongle reboots into ADB mode →
re-enumerates with the ADB interface → the CT-102 udev rule (below) hands the node
to the container → the agent's adb sees it. On the adb-mode re-enumeration the
script runs again, detects the ADB interface (ff/42/01) and exits — no loop.
Companion CT-102 USB-passthrough udev change (REQUIRED)
The dongle's Qualcomm VID 05c6 must be handed to the container, and the group
must be plugdev (host gid 100046), not container-root, or the agent's adb
(user omniweb-agent, a plugdev member) cannot open the node. The same applies to
the Android phone rules: they were GROUP="100000" (container root) which the
agent cannot access — devices only worked while adb held the fd from enumeration
time and dropped on every re-enumeration. Fixed to GROUP="100046".
In /etc/udev/rules.d/99-ct102-android.rules all phone rules use
OWNER="100000", GROUP="100046", MODE="0660", plus the dongle 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"
These host changes are applied live in the lab but should be codified in the OmniCore ansible (monitoring/host role) so they survive a host rebuild.