🛠 Configurer le réseau Ethernet (via USB 2.0) d'un CM3+
Objectifs
Le CM3+ n'a pas de contrôleur Ethernet sur le module : sur la CMIO3, le port RJ45 est porté par une puce USB (LAN9514 côté CMIO3) branchée sur l'unique port USB 2.0 hôte/OTG du module. Conséquence d'architecture à bien comprendre : Ethernet, clés USB, webcams et adaptateurs se partagent la bande passante d'un seul bus USB 2.0 (~30 Mio/s utiles). Ce tutoriel configure un IP statique robuste avec systemd-networkd et mesure le débit réel.
Matériel
- CM3+ sur CMIO3 (Ethernet embarqué) ou carte custom avec puce Ethernet USB
- Câble Ethernet vers un switch, serveur iperf3 sur un PC du réseau
- Pour un design custom sans puce USB : l'Ethernet n'existe pas en natif sur le SODIMM (ni PCIe), seule la voie USB est possible
Code complet
# 1. Identifier la puce réseau (USB, pas un contrôleur natif)
lsusb
ethtool -s eth0 speed 100 duplex full # si besoin, épingler 100M
# 2. IP statique avec systemd-networkd
sudo tee /etc/systemd/network/08-eth0.network <<'EOF'
[Match]
Name=eth0
[Network]
Address=192.168.1.50/24
Gateway=192.168.1.1
DNS=1.1.1.1
EOF
sudo systemctl disable --now NetworkManager 2>/dev/null
sudo systemctl enable --now systemd-networkd systemd-resolved
sudo systemctl restart systemd-networkd
# 3. Vérification et débit réel sur le bus USB unique
ip -4 addr show eth0 && ping -c3 192.168.1.1
sudo apt install -y iperf3
iperf3 -c 192.168.1.10 # côté PC : iperf3 -s
dmesg | grep -iE 'lan95|smsc' # trace de la puce USB-Ethernet
Vérification attendue
ip addr montre l'IP statique sur eth0, le ping passe, et iperf3 affiche un débit TCP de l'ordre de 20-30 Mio/s — le plafond du bus USB 2.0 partagé, en deçà des 100 Mbit/s théoriques du port. lsusb liste la puce Ethernet, preuve qu'il s'agit d'un périphérique USB et non d'un contrôleur natif.
Erreurs fréquentes
- Attendre du gigabit : le CM3+ ne connaît que l'Ethernet 100M par puce USB ; le gigabit n'arrive qu'avec le CM4 (via PCIe) — toute la filière CM3+ est plafonnée USB 2.0.
- Cumuler webcam USB + transfert réseau : le bus unique est partagé, les images saccadent dès que le réseau sature — isoler sur un second module ou réduire la résolution.
- Conflit NetworkManager / systemd-networkd : les deux gestionnaires actifs se marchent dessus ; désactiver l'un des deux proprement.
- Oublier
systemctl restart systemd-networkdaprès édition du fichier .network : l'IP ne change pas et on croit à une régression. - Sur une carte custom, câbler un PHY RMII « comme sur un Pi 3 » : le SODIMM du CM3+ n'expose pas d'interface Ethernet native, uniquement USB 2.0 — la puce USB-Ethernet est obligatoire.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash