Skip to main content

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.service
  • 99-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.