🛠 Gadget USB : Ethernet sur le port OTG + relais Wi-Fi
Objectifs
Utiliser le port micro-USB données (OTG, BCM2835) en mode gadget : la Zero W s'énumère comme carte Ethernet sur n'importe quel PC tout en relayant Internet par son Wi-Fi — le « Linux USB stick », sans rien configurer côté PC.
Matériel
- 1 Raspberry Pi Zero W (boot legacy : partition FAT avec config.txt, pas d'EEPROM)
- 1 câble micro-USB données vers le PC
Étapes
- Activez le contrôleur : dans
/boot/config.txtajoutezdtoverlay=dwc2, etmodules=dwc2sur la lignedwc_otg.lpm_enable=0 console=...de/boot/cmdline.txt. - Créez le gadget Ethernet via configfs/libcomposite (
modprobe libcomposite,usb0eng_etherRNDIS/CDC). - Reliez les deux faces réseau : activez le routage
sysctl -w net.ipv4.ip_forward=1et masqueradez derrièrewlan0:iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE. - Sur le PC, l'interface apparaît (usb0 / « Remote NDIS ») et obtient une adresse en DHCP via dnsmasq côté carte.
Vérification
ip a montre usb0 UP ; depuis le PC, ping vers une IP publique sort par le Wi-Fi de la Zero W.
Erreurs fréquentes
- Brancher sur le port PWR : purement alimentation, aucun signal USB.
- Confondre OTG device et host : la Zero W n'a pas de port USB hôte ni de hub — le gadget mode est la seule voie USB.
- Oublier le NAT ou ip_forward : le PC voit le lien mais ne sort pas sur Internet.
Autres tutoriels pour cette carte
- Premier démarrage headless de la Zero W (Wi-Fi + SSH)
- Suder le header 40 broches et faire clignoter une LED
- Se connecter au Wi-Fi en ligne de commande (nmcli)
- Pi-hole : bloqueur de pub DNS sur Zero W
- Balise BLE : diffuser un beacon avec le CYW43438
- Nœud capteur autonome sur batterie : énergie et fiabilité
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash