Pular para o conteúdo principal

UZ801 LTE MiFi dongle — Habilitação automática do ADB (lado do host)

Dongles Qualcomm LTE MiFi baratos de ~$10 (05c6:90b6, "Android"/UZ801, msm8916) inicializam em modo RNDIS com uma interface web em http://192.168.100.1. Ao acessar http://192.168.100.1/usbdebug.html, eles são convertidos para modo ADB (e já iniciam como root). Ref: https://nickvsnetworking.com/adventures-with-a-10-lte-mifi-dongle/

O passo de habilitação deve ser executado no host USB (o hipervisor Proxmox), porque apenas o host possui o link RNDIS para 192.168.100.1 — o agente de telefone OmniWeb executa no LXC não privilegiado (CT 102) e alcança o dongle apenas como um dispositivo USB uma vez que está em modo ADB. Portanto, esta automação é udev + systemd do lado do host, não código do agente.

Arquivos

  • 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

Fluxo: dongle conectado (RNDIS) → udev é acionado → mifi-adb-enable.service → script ativa a iface RNDIS, faz curl em usbdebug.html → dongle reinicializa em modo ADB → reenumera com a interface ADB → a regra udev CT-102 (abaixo) entrega o nó para o contêiner → o adb do agente o vê. Na reenumeração em modo adb, o script é executado novamente, detecta a interface ADB (ff/42/01) e sai — sem loop.

Alteração udev de passthrough USB do CT-102 (REQUERIDO)

O VID Qualcomm do dongle 05c6 deve ser passado para o contêiner, e o grupo deve ser plugdev (gid do host 100046), não root do contêiner, ou o adb do agente (usuário omniweb-agent, um membro do plugdev) não poderá abrir o nó. O mesmo se aplica às regras do telefone Android: elas eram GROUP="100000" (root do contêiner) que o agente não pode acessar — os dispositivos só funcionavam enquanto o adb mantinha o fd do tempo de enumeração e caíam em cada reenumeração. Corrigido para GROUP="100046".

Em /etc/udev/rules.d/99-ct102-android.rules, todas as regras de telefone usam OWNER="100000", GROUP="100046", MODE="0660", além do VID do 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"

Essas alterações no host são aplicadas ao vivo no laboratório, mas devem ser codificadas no OmniCore ansible (papel de monitoramento/host) para que sobrevivam a uma reconstrução do host.