🛠 Le tour de passe-passe « clé USB Linux » : Ethernet sur USB (g_ether)
Objectifs
Transformer la Zero 2 W en « Linux sur clé USB » : le port données est un port OTG, et la ligne Zero laisse l'OTGID flottant — sans carte SD, la carte démarre d'ailleurs en mode périphérique USB. En chargeant les modules g_ether, le port se fait passer pour une carte réseau USB. Résultat : un laptop, un seul câble données + un câble d'alimentation, et un SSH direct sans écran, sans clavier et sans routeur.
Matériel
- 1 Raspberry Pi Zero 2 W avec une image Raspberry Pi OS (pré-seedée SSH)
- 1 câble micro-USB données + 1 adaptateur USB-A/USB-C vers le laptop
- 1 alimentation 2 A sur le port POWER (le port données ne fournit pas le courant)
- Optionnel : un câble en Y ou un hub OTG pour ne faire qu'un câble
Code complet
# 1) /boot/firmware/config.txt — activer le contrôleur USB en mode périphérique :
dtoverlay=dwc2
# 2) /boot/firmware/cmdline.txt — AJOUTER À LA FIN DE L'UNIQUE LIGNE du fichier :
modules-load=dwc2,g_ether
# 3) /etc/network/interfaces — IP statique côté gadget :
auto usb0
allow-hotplug usb0
iface usb0 inet static
address 10.0.0.1
netmask 255.255.255.0
# 4) Activer SSH :
sudo systemctl enable --now ssh
Puis reboot, brancher le port données sur le laptop : « ssh pi@10.0.0.1 ». Sous Linux/macOS le laptop voit apparaître une interface « USB Ethernet » (il faut parfois activer le partage de connexion ou mettre une IP statique 10.0.0.2 côté laptop).
Vérification attendue
Le laptop détecte une nouvelle interface réseau USB (sous Linux : « ip a » montre un interface usb0/enX nouveau). « ping 10.0.0.1 » répond et le SSH passe — sans réseau Wi-Fi ni écran. Bonus : sans AUCUNE carte SD, la Zero 2 W branchée au PC énumère un périphérique USB 0a5c: — c'est le mode récupération (voir le tuto usbboot).
Erreurs fréquentes
- Ajouter modules-load= sur une nouvelle ligne de cmdline.txt : ce fichier doit contenir UNE seule ligne, tout doit être concaténé.
- Modifier /boot/config.txt au lieu de /boot/firmware/config.txt selon la version de l'image : vérifier où sont bootcode.bin/start.elf.
- Oublier le câble d'alimentation sur le port POWER : le port données en mode gadget ne fournit pas d'énergie.
- Côté Windows : pas de driver RNDIS/ECM immédiat, prévoir le driver USB Ethernet ou tester depuis Linux/macOS.
- Attendre le DHCP : sans serveur, le laptop doit être configuré en IP statique dans le même sous-réseau que 10.0.0.1.
Autres tutoriels pour cette carte
- Premier démarrage de la Zero 2 W sans écran (headless)
- Se connecter au Wi-Fi (et comprendre les limites 2,4 GHz / WPA2)
- Surveiller la température et la fréquence de la Zero 2 W
- GPIO en Python : LED et bouton avec gpiozero
- Serveur de blocage de pub réseau avec Pi-hole
- Remettre une Zero 2 W en état de boot : usbboot et boot files
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash