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