Saltar al contenido principal

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.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

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.