🛠 Benchmark Ethernet iperf3 : mesurer le piège 10/100 vs gigabit
Objectives
Move from theory to proof: measure the actual throughput of your PINE A64's Ethernet port with iperf3 and document the historical Kickstarter pitfall — buyers of the base version discovering ~11 MB/s while expecting gigabit. You will learn to (1) verify the negotiated speed, (2) measure application-level throughput, (3) prove that the port is the SoC's internal EMAC, and (4) recognize the PHY power supply issue (DC1SW rail "vcc-phy") that causes unstable links on improperly corrected device trees.
Hardware
- 1 × PINE A64 or A64+ running Armbian (
sudo apt install iperf3 ethtool) - 1 × Desktop PC on the same LAN (iperf3 server)
- Cat5e minimum Ethernet cable, gigabit switch (otherwise the switch is the bottleneck)
- Serial console or SSH (note: SSH will lag during the benchmark on a 10/100 card — this is normal)
Complete Code
# Côté PC (serveur) :
iperf3 -s
# Côté Pine64 (client, 20 s) :
iperf3 -c 192.168.1.10 -t 20
# Interprétation :
# PINE A64 de base (RTL8201, RMII) : plafond ~94 Mbit/s (10/100)
# PINE A64+ (RTL8211, RGMII) : jusqu'à ~600+ Mbit/s (gigabit)
# Vitesse négociée et état du lien :
sudo ethtool eth0 | grep -E 'Speed|Link'
# Prouver que c'est l'EMAC interne (pas un NIC USB) :
ls -l /sys/class/net/eth0/device # -> .../1c30000.ethernet
# Lien instable ? Le noyau mainline impose un délai d'alimentation du PHY :
# regulator-enable-ramp-delay sur DC1SW/vcc-phy — commentaire du DTS :
# « Ethernet PHY needs 30ms to properly power up and some more to initialize »
dmesg | grep -iE 'eth|phy|link'
Expected Verification
On a base card, iperf3 caps around 94 Mbit/s — the "sender" line hovers around 11 MB/s: this is the signature of the RTL8201 10/100 PHY, not a defect. On an A64+, you will significantly exceed 100 Mbit/s (600+ Mbit/s expected in gigabit). The sysfs link 1c30000.ethernet confirms the integrated EMAC controller: the rumor of "gigabit via USB2" on this card is not confirmed by any schematic or device tree — both variants indeed start from the internal EMAC, only the PHY changes (RMII vs RGMII).
Common Errors
- Blaming the card for being dead because it caps at 94 Mbit/s: first check
compatibleandethtool Speed— the base version is documented as 10/100. - Benchmarking through a 100 Mbit/s switch or poor-quality powerline adapter: the weak link is rarely the card; test directly card↔PC if possible.
- SSH freezing during iperf3 on the base card: the test traffic saturates the 10/100 link — work via serial console during measurement.
- Link not coming up or dropping intermittently: the PHY power supply rail (DC1SW "vcc-phy") requires a ramp of approximately 100 ms; DTs without the mainline fix
regulator-enable-ramp-delayshow unstable up links. Use an up-to-date image. - Confusing Mbit/s and MB/s: 94 Mbit/s ≈ 11.3 MB/s — iperf3 figures and
free/ddare not in the same units. - Forgetting RAM in CPU-intensive measurements: the 512 MB model saturates much faster; its supported distributions are also limited to Arch/Debian.
Other tutorials for this board
- Premier boot d'Armbian sur la PINE A64 (microSD, console série, rootfs)
- PINE A64 ou PINE A64+ ? Le pièg du réseau gigabit dès le premier regard
- Faire clignoter une LED avec libgpiod (numérotation GPIO du A64 : PB0 = 32)
- Lire un capteur I²C (BME280) sur le bus i2c-1 du connecteur Pi-2
- Un serveur maison qui consomme 2,5 W : Docker léger sur la PINE A64
- Construire sa propre image Armbian pour la PINE A64 (armbian/build)
Code examples for this board
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash