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.target
sudo 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).

Источники

Связано


Мета

Область:: 00 Linux