Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

Port LAN yang tiba-tiba kehilangan koneksi adalah salah satu masalah paling menjengkelkan pada STB berbasis Amlogic S905X yang menjalankan Armbian — karena perangkat ini sering difungsikan sebagai server kecil yang seharusnya berjalan tanpa pengawasan terus-menerus.
Masalah ini umumnya muncul dalam dua skenario yang berbeda penyebabnya, sehingga penanganannya pun berbeda:
Skenario 1 — Setelah mati lampu: STB menyala dalam 20–30 detik, jauh lebih cepat daripada modem atau router yang butuh waktu 1–3 menit. Di titik ini, permintaan DHCP tidak mendapat respons. Secara default, NetworkManager menganggap ini kegagalan fatal dan mematikan eth0 — tidak mencoba lagi.
Skenario 2 — Setelah warm reboot: Chip Ethernet PHY internal pada Amlogic S905X kadang tidak ter-reset dengan bersih oleh bootloader. Hasilnya, eth0 terjebak dalam status NO-CARRIER seolah kabel tidak terpasang, padahal secara fisik kabel sudah benar.
Artikel ini membahas perbaikan permanen untuk kedua skenario tersebut.
root (SSH atau langsung)Secara default, NetworkManager pada Armbian dikonfigurasi dengan parameter ipv4.may-fail: "false". Artinya, jika router belum siap memberikan alamat IP pada saat permintaan DHCP dikirim, NetworkManager menganggap koneksi gagal secara permanen dan menonaktifkan eth0. Tidak ada percobaan ulang otomatis.
Solusinya adalah mengubah perilaku ini agar NetworkManager terus mencoba tanpa batas waktu.
nmcli connection modify "netplan-eth0" ipv4.may-fail yes connection.autoconnect-retries 0
Penjelasan parameter:
| Parameter | Nilai | Keterangan |
|---|---|---|
ipv4.may-fail | yes | NetworkManager tidak memutus interface jika DHCP gagal |
connection.autoconnect-retries | 0 | Nilai 0 berarti retry tanpa batas waktu (forever) |
nmcli -f connection.autoconnect-retries,ipv4.may-fail connection show "netplan-eth0"
Output yang benar:
connection.autoconnect-retries: 0 (forever)
ipv4.may-fail: yes
nmcli connection up "netplan-eth0"
Chip Meson GXL Internal PHY pada S905X kadang tidak menyelesaikan proses reset saat warm reboot. Kernel sudah selesai booting, NetworkManager sudah aktif, tapi eth0 tetap melaporkan NO-CARRIER — tidak ada aktivitas fisik sama sekali meski kabel terpasang.
Solusinya adalah membuat sebuah watchdog kecil berbasis systemd: script yang berjalan satu kali setiap boot, memeriksa kondisi carrier eth0, dan melakukan power cycle pada level kernel jika PHY terbukti macet.
cat << 'EOF' > /usr/local/bin/check-eth0.sh
#!/bin/bash
# Beri jeda 25 detik agar proses inisialisasi awal sistem selesai
sleep 25
CARRIER=$(cat /sys/class/net/eth0/carrier 2>/dev/null)
if [ "$CARRIER" != "1" ]; then
echo "[$(date)] eth0 tidak mendeteksi sinyal fisik (NO-CARRIER). Mereset port..." >> /var/log/eth0-watchdog.log
ip link set eth0 down
sleep 3
ip link set eth0 up
sleep 5
nmcli connection up "netplan-eth0" 2>/dev/null
fi
EOF
chmod +x /usr/local/bin/check-eth0.sh
Script ini membaca nilai /sys/class/net/eth0/carrier — nilai 1 berarti carrier terdeteksi (kabel terhubung dan PHY aktif), nilai selain itu berarti PHY bermasalah. Jika bermasalah, script melakukan ip link set eth0 down lalu up untuk memaksa chip PHY bernegosiasi ulang, kemudian meminta NetworkManager memulihkan koneksi.
Jeda 25 detik di awal diberikan agar NetworkManager dan layanan jaringan lain sudah selesai diinisialisasi sebelum script berjalan.
cat << 'EOF' > /etc/systemd/system/eth0-watchdog.service
[Unit]
Description=Check and recover eth0 carrier on boot
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/check-eth0.sh
RemainAfterExit=true
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable eth0-watchdog.service
Verifikasi service terdaftar dengan benar:
systemctl is-enabled eth0-watchdog.service
Output harus menampilkan enabled.
Lakukan reboot untuk menguji kedua perbaikan sekaligus:
reboot
Tunggu 1–2 menit, lalu masuk kembali melalui SSH. Periksa status service watchdog:
systemctl status eth0-watchdog.service
Status Active: active (exited) dengan kode status=0/SUCCESS menandakan script berjalan tanpa error.
Untuk melihat riwayat kejadian PHY reset yang pernah dilakukan watchdog:
cat /var/log/eth0-watchdog.log
Jika log kosong, berarti PHY berhasil diinisialisasi dengan normal pada boot tersebut — watchdog tidak perlu mengintervensi.
# --- Bagian 1: DHCP Infinite Retry ---
nmcli connection modify "netplan-eth0" ipv4.may-fail yes connection.autoconnect-retries 0
nmcli -f connection.autoconnect-retries,ipv4.may-fail connection show "netplan-eth0"
nmcli connection up "netplan-eth0"
# --- Bagian 2: PHY Watchdog ---
# Buat script
cat << 'EOF' > /usr/local/bin/check-eth0.sh
#!/bin/bash
sleep 25
CARRIER=$(cat /sys/class/net/eth0/carrier 2>/dev/null)
if [ "$CARRIER" != "1" ]; then
echo "[$(date)] eth0 tidak mendeteksi sinyal fisik (NO-CARRIER). Mereset port..." >> /var/log/eth0-watchdog.log
ip link set eth0 down
sleep 3
ip link set eth0 up
sleep 5
nmcli connection up "netplan-eth0" 2>/dev/null
fi
EOF
chmod +x /usr/local/bin/check-eth0.sh
# Buat dan aktifkan service
cat << 'EOF' > /etc/systemd/system/eth0-watchdog.service
[Unit]
Description=Check and recover eth0 carrier on boot
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/check-eth0.sh
RemainAfterExit=true
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable eth0-watchdog.service
# Verifikasi setelah reboot
systemctl status eth0-watchdog.service
cat /var/log/eth0-watchdog.log
Artikel ini disusun berdasarkan pengujian langsung pada lingkungan berikut:
netplan-eth0Kedua perbaikan ini bersifat komplementer dan direkomendasikan untuk diterapkan sekaligus. Perbaikan Bagian 1 menangani skenario mati lampu; Bagian 2 menangani skenario warm reboot. Keduanya bekerja secara independen dan tidak saling bertentangan.