Aller au contenu principal

Dongle MiFi LTE UZ801 — Activation automatique ADB (côté hôte)

Des dongles MiFi LTE Qualcomm bon marché (~10 $) (05c6:90b6, "Android"/UZ801, msm8916) démarrent en mode RNDIS avec une interface web à http://192.168.100.1. En accédant à http://192.168.100.1/usbdebug.html, ils passent en mode ADB (et ils démarrent déjà root). Réf : https://nickvsnetworking.com/adventures-with-a-10-lte-mifi-dongle/

L'étape d'activation doit être exécutée sur l'hôte USB (l'hyperviseur Proxmox), car seulement l'hôte a le lien RNDIS vers 192.168.100.1 — l'agent de téléphone OmniWeb s'exécute dans le LXC non privilégié (CT 102) et atteint le dongle uniquement en tant que périphérique USB une fois qu'il est en mode ADB. Donc, cette automatisation est udev + systemd côté hôte, pas de code d'agent.

Fichiers

  • 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

Flux : dongle branché (RNDIS) → udev s'active → mifi-adb-enable.service → le script active l'interface RNDIS, curl usbdebug.html → le dongle redémarre en mode ADB → se réénumère avec l'interface ADB → la règle udev CT-102 (ci-dessous) remet le nœud au conteneur → l'adb de l'agent le voit. Lors de la réénumération en mode adb, le script s'exécute à nouveau, détecte l'interface ADB (ff/42/01) et se termine — pas de boucle.

Changement udev de passage USB CT-102 (REQUIS)

Le VID Qualcomm du dongle 05c6 doit être remis au conteneur, et le groupe doit être plugdev (gid hôte 100046), pas root du conteneur, sinon l'adb de l'agent (utilisateur omniweb-agent, membre de plugdev) ne peut pas ouvrir le nœud. Il en va de même pour les règles du téléphone Android : elles étaient GROUP="100000" (root du conteneur) auquel l'agent n'a pas accès — les périphériques ne fonctionnaient que pendant que l'adb détenait le fd depuis le temps d'énumération et étaient abandonnés à chaque réénumération. Corrigé en GROUP="100046".

Dans /etc/udev/rules.d/99-ct102-android.rules, toutes les règles de téléphone utilisent OWNER="100000", GROUP="100046", MODE="0660", plus le VID du 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"

Ces changements côté hôte sont appliqués en direct dans le laboratoire mais devraient être codifiés dans le rôle ansible d'OmniCore (surveillance/hôte) afin qu'ils survivent à une reconstruction de l'hôte.