🛠 Configurer le réseau Ethernet (via USB 2.0) d'un CM3+
Objetivos
El CM3+ no dispone de un controlador Ethernet en el módulo: en la CMIO3, el puerto RJ45 es gestionado por un chip USB (LAN9514 en la CMIO3) conectado al único puerto USB 2.0 host/OTG del módulo. Una consecuencia de la arquitectura que se debe comprender bien: Ethernet, memorias USB, cámaras web y adaptadores comparten el ancho de banda de un único bus USB 2.0 (~30 MiB/s útiles). Este tutorial configura una IP estática robusta con systemd-networkd y mide el caudal real.
Material
- CM3+ sobre CMIO3 (Ethernet integrado) o placa personalizada con chip Ethernet USB
- Cable Ethernet hacia un switch, servidor iperf3 en un PC de la red
- Para un diseño personalizado sin chip USB: Ethernet no existe de forma nativa en el SODIMM (ni PCIe), solo es posible la vía USB
Código completo
# 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
Verificación esperada
ip addr muestra la IP estática en eth0, el ping funciona y iperf3 muestra un caudal TCP del orden de 20-30 MiB/s — el techo del bus USB 2.0 compartido, por debajo de los 100 Mbit/s teóricos del puerto. lsusb lista el chip Ethernet, prueba de que se trata de un dispositivo USB y no de un controlador nativo.
Errores frecuentes
- Esperar gigabit: el CM3+ solo conoce Ethernet 100M mediante chip USB; el gigabit solo llega con el CM4 (vía PCIe) — toda la gama CM3+ está limitada a USB 2.0.
- Acumular cámara web USB + transferencia de red: el bus único es compartido, las imágenes se entrecortan en cuanto la red se satura — aislar en un segundo módulo o reducir la resolución.
- Conflicto NetworkManager / systemd-networkd: los dos gestores activos interfieren entre sí; desactivar uno de los dos correctamente.
- Olvidar
systemctl restart systemd-networkdtras editar el archivo .network: la IP no cambia y se cree que es una regresión. - En una placa personalizada, cablear un PHY RMII «como en un Pi 3»: el SODIMM del CM3+ no expone una interfaz Ethernet nativa, solo USB 2.0 — el chip USB-Ethernet es obligatorio.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash