Raspberry Pi 4 и Pi 5 (и Compute Module 4) используют Broadcom BCM54213PE Ethernet PHY. По дефолту у чипа включён EEE (Energy Efficient Ethernet, 802.3az) — стандарт энергосбережения, переводящий линк в LPI (Low Power Idle) когда нет трафика.
Проблема: реализация EEE в BCM54213PE дефективна. При переходе в LPI и обратно возникает race, вызывающий:
- Link flaps (
bcmgenet eth0: Link is Down/Upза секунды) - Packet loss
- Периодический freeze всей системы через 5-30 минут после первого flap
- В kern.log:
truncated packet from <own IP>(сигнатура фрагментированных пакетов) - В syslog:
dockerd resolver: network is unreachable→ тишина → полный silent hang
Проблема хорошо документирована на Raspberry Pi Forums и Paraphraser gist.
Проверка
sudo ethtool --show-eee eth0
# EEE settings for eth0:
# EEE status: enabled - inactive ← ВКЛЮЧЁН, готов активироваться при idle
# Tx LPI: disabledЕсли enabled - active или enabled - inactive — баг живёт.
Fix — отключить EEE
Живой (до ребута):
sudo ethtool --set-eee eth0 eee offПостоянный (переживает reboot) — systemd unit:
# /etc/systemd/system/disable-eee-eth0.service
[Unit]
Description=Disable Energy Efficient Ethernet on eth0 (Pi 4 BCM54213PE PHY bug)
After=sys-subsystem-net-devices-eth0.device
Wants=sys-subsystem-net-devices-eth0.device
Before=network-pre.target
Wants=network-pre.target
[Service]
Type=oneshot
ExecStart=/sbin/ethtool --set-eee eth0 eee off
RemainAfterExit=yes
StandardOutput=journal
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now disable-eee-eth0.service
sudo ethtool --show-eee eth0 | grep 'EEE status'
# EEE status: disabledАльтернатива — добавить в /etc/rc.local (Pi OS Bullseye+ runs rc.local late enough):
/sbin/ethtool --set-eee eth0 eee offПочему это так важно диагностически
Симптомы EEE-bug на Pi 4 точно совпадают с симптомами “деградации PHY”:
- Silent freeze с обрывом journalctl без panic
- Первым умирает eth0 (
network is unreachable) - Через 5–30 минут — полный hang
- Cooling + fan уменьшают частоту (меньше нагрузки → меньше EEE-переходов), но не лечат
Легко ошибиться и назвать это “thermal degradation” — а истинная причина в energy-saving логике чипа. Всегда проверяй EEE до более радикальных диагнозов (замена PHY, USB-Ethernet adapter, замена Pi).
Источники
- Gigabit Ethernet “EEE” causing trouble between Pi 4 boards
- Do your Raspberry Pi’s Network Interfaces freeze? — Paraphraser gist
- Disabling EEE on Raspberry Pi 5 GbE port
Связано
- Ethernet PHY деградация от перегрева на Raspberry Pi — thermal ошибочно рассматривался первым, но обычно виноват EEE
Мета
Область:: 00 Linux