🛠 Console série sur USB-OTG : dépanner sans réseau ni câble UART
Objectifs
Quand le Wi-Fi est mal configuré ou le réseau cassé, le BPI-M2 Zero garde un as de la manche : son port micro-USB OTG (dr_mode = "otg" dans le device tree) peut se faire passer pour un périphérique série. La configuration Armbian de la carte précharge le module g_serial et déclare ttyGS0 comme console (SERIALCON="ttyS0,ttyGS0") : branchée seule sur un PC, la carte énumère un port CDC-ACM — pas besoin de câble USB-série ni de réseau. C'est la méthode de sauvetage à connaître avant de casser sa configuration.
Matériel
- BPI-M2 Zero sous Armbian (ttyGS0 déjà déclaré en console par la fiche board)
- Câble micro-USB data (pas un câble de charge sans conducteurs données)
- Un PC Linux (sous Windows : pilote CDC-ACM natif, puis un terminal sur le port COM)
- Un premier accès à la carte (SSH, CON3, ou session encore ouverte) pour armer le gadget
Code complet
# Sur la carte (via SSH ou CON3) : charger le gadget et exposer un getty
sudo modprobe g_serial
sudo systemctl enable --now serial-getty@ttyGS0.service
# Rendre le module permanent pour les prochains sauvetages
echo g_serial | sudo tee /etc/modules-load.d/gserial.conf
# Sur le PC : un /dev/ttyACM0 apparaît dès que le câble OTG est branché
sudo apt install -y picocom
picocom -b 115200 /dev/ttyACM0 # invite de login du BPI-M2 Zero
# En cas de plantage réseau, vérifier côté carte quel rôle prend le port
dmesg | grep -i -e gadget -e ttyGS0
Vérification attendue
Dès insertion du câble sur le port OTG, le PC voit un périphérique série USB (lsusb le liste) ; picocom affiche l'invite de login ; après connexion, la commande who montre une session sur ttyGS0. La carte reste accessible même avec un wlan0 mal configuré.
Erreurs fréquentes
- Brancher le câble sur le port micro-USB « Power only » : aucun data, donc aucun ttyACM0 — le port OTG est l'autre.
- Câble de charge bon marché sans broches data : le gadget existe mais rien n'apparaît sur le PC.
- Alimenter la carte par le PC pendant qu'un chargeur est branché sur l'autre port : les lignes Vbus des deux connecteurs micro-USB sont reliées, on se retrouve avec deux sources qui se disputent le 5 V.
- Oublier d'armer g_serial AVANT de perdre l'accès réseau : si le système ne boote plus, il reste la console CON3 (115200 8N1).
- Chercher ttyGS0 côté PC : ttyGS0 est le nom côté carte ; côté PC c'est ttyACM0.
Autres tutoriels pour cette carte
- Flasher Armbian et premier boot du BPI-M2 Zero
- LED et bouton avec libgpiod sur le port 40 broches
- Wi-Fi AP6212 : le piège de l'antenne U.FL non fournie
- Activer le bus SPI0 et piloter un petit écran TFT
- Survivre avec 512 Mo : zram, swap compressé et services légers
- Câbler l'Ethernet 10/100 EMAC avec le carrier Zero-EPHY
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash