🛠 Configurer le réseau Ethernet (via USB 2.0) d'un CM3+

Raspberry Pi Compute Module 3+ (CM3+ / CM3+ Lite) · intermediaire · Schéma : un module CM3+ sur carte CMIO3, câble Ethernet branché sur le port RJ45 — la puce Ethernet est reliée au bus USB 2.0 unique du module, illustré par un petit goulot d'étranglement sur le bus.

Objectives

The CM3+ does not have an Ethernet controller on the module: on the CMIO3, the RJ45 port is driven by a USB chip (LAN9514 on the CMIO3) connected to the module's single USB 2.0 host/OTG port. An architectural consequence to understand clearly: Ethernet, USB drives, webcams, and adapters share the bandwidth of a single USB 2.0 bus (~30 MiB/s effective). This tutorial configures a robust static IP with systemd-networkd and measures the actual throughput.

Hardware

Complete code

# 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

Expected verification

ip addr shows the static IP on eth0, ping works, and iperf3 displays a TCP throughput of around 20-30 MiB/s — the ceiling of the shared USB 2.0 bus, below the port's theoretical 100 Mbit/s. lsusb lists the Ethernet chip, proving it is a USB device and not a native controller.

Common errors

Other tutorials for this board

Code examples for this board

← Back to the board 🛠 All tutorials