UZ801 LTE MiFi dongle — Activación automática de ADB (lado del host)
Los dongles Qualcomm LTE MiFi baratos de ~$10 (05c6:90b6, "Android"/UZ801, msm8916) inician
en modo RNDIS con una interfaz web en http://192.168.100.1. Al hacer un GET a
http://192.168.100.1/usbdebug.html, se cambian a modo ADB (y ya vienen
root). Ref: https://nickvsnetworking.com/adventures-with-a-10-lte-mifi-dongle/
El paso de habilitación debe ejecutarse en el host USB (el hipervisor Proxmox), porque
solo el host tiene el enlace RNDIS a 192.168.100.1 — el agente de teléfono OmniWeb se ejecuta
en el LXC sin privilegios (CT 102) y alcanza el dongle solo como un dispositivo USB una vez
que está en modo ADB. Así que esta automatización es udev + systemd del lado del host, no código del agente.
Archivos
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
Flujo: dongle conectado (RNDIS) → udev se activa → mifi-adb-enable.service → script
activa la interfaz RNDIS, hace curl a usbdebug.html → dongle reinicia en modo ADB →
reenumeración con la interfaz ADB → la regla udev CT-102 (a continuación) entrega el nodo
al contenedor → el adb del agente lo ve. En la reenumeración en modo adb, el
script se ejecuta nuevamente, detecta la interfaz ADB (ff/42/01) y sale — sin bucle.
Cambio de udev de paso USB CT-102 (REQUERIDO)
El VID Qualcomm del dongle 05c6 debe ser entregado al contenedor, y el grupo
debe ser plugdev (gid del host 100046), no root del contenedor, o el adb del agente
(usuario omniweb-agent, un miembro de plugdev) no puede abrir el nodo. Lo mismo se aplica a
las reglas del teléfono Android: eran GROUP="100000" (root del contenedor) a las que
el agente no puede acceder — los dispositivos solo funcionaban mientras adb mantenía el fd desde el tiempo de enumeración y se caían en cada reenumeración. Corregido a GROUP="100046".
En /etc/udev/rules.d/99-ct102-android.rules, todas las reglas de teléfonos usan
OWNER="100000", GROUP="100046", MODE="0660", además del VID del dongle:
SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ATTRS{idVendor}=="05c6", OWNER="100000", GROUP="100046", MODE="0660"
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", OWNER="100000", GROUP="100046", MODE="0660"
Estos cambios en el host se aplican en vivo en el laboratorio, pero deben ser codificados en el ansible de OmniCore (rol de monitoreo/host) para que sobrevivan a una reconstrucción del host.