{"id":3438,"date":"2026-10-10T14:05:47","date_gmt":"2026-10-10T14:05:47","guid":{"rendered":"https:\/\/rri.my.id\/?p=3438"},"modified":"2026-10-10T14:07:30","modified_gmt":"2026-10-10T14:07:30","slug":"fix-lan-eth0-hg680p-armbian-dhcp-phy","status":"publish","type":"post","link":"https:\/\/rri.my.id\/index.php\/2026\/10\/10\/fix-lan-eth0-hg680p-armbian-dhcp-phy\/","title":{"rendered":"Mengatasi LAN (eth0) Tidak Terhubung di STB HG680P Armbian"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Port LAN yang tiba-tiba kehilangan koneksi adalah salah satu masalah paling menjengkelkan pada STB berbasis Amlogic S905X yang menjalankan Armbian \u2014 karena perangkat ini sering difungsikan sebagai server kecil yang seharusnya berjalan tanpa pengawasan terus-menerus.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Masalah ini umumnya muncul dalam dua skenario yang berbeda penyebabnya, sehingga penanganannya pun berbeda:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Skenario 1 \u2014 Setelah mati lampu:<\/strong> STB menyala dalam 20\u201330 detik, jauh lebih cepat daripada modem atau router yang butuh waktu 1\u20133 menit. Di titik ini, permintaan DHCP tidak mendapat respons. Secara default, NetworkManager menganggap ini kegagalan fatal dan mematikan <code>eth0<\/code> \u2014 tidak mencoba lagi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Skenario 2 \u2014 Setelah warm reboot:<\/strong> Chip Ethernet PHY internal pada Amlogic S905X kadang tidak ter-reset dengan bersih oleh bootloader. Hasilnya, <code>eth0<\/code> terjebak dalam status <code>NO-CARRIER<\/code> seolah kabel tidak terpasang, padahal secara fisik kabel sudah benar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Artikel ini membahas perbaikan permanen untuk kedua skenario tersebut.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Prasyarat<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>STB HG680P (SoC Amlogic S905X) dengan Armbian build Ophub<\/li>\n\n\n\n<li>Akses terminal sebagai <code>root<\/code> (SSH atau langsung)<\/li>\n\n\n\n<li>NetworkManager aktif sebagai network manager<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Bagian 1 \u2014 Mengatasi Masalah Pasca Mati Lampu: DHCP Infinite Retry<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Secara default, NetworkManager pada Armbian dikonfigurasi dengan parameter <code>ipv4.may-fail: \"false\"<\/code>. Artinya, jika router belum siap memberikan alamat IP pada saat permintaan DHCP dikirim, NetworkManager menganggap koneksi gagal secara permanen dan menonaktifkan <code>eth0<\/code>. Tidak ada percobaan ulang otomatis.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Solusinya adalah mengubah perilaku ini agar NetworkManager terus mencoba tanpa batas waktu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Langkah 1 \u2014 Ubah Parameter NetworkManager<\/h3>\n\n\n\n<pre class=\"wp-block-code has-palette-color-5-color has-palette-color-3-background-color has-text-color has-background has-link-color wp-elements-1\"><code>nmcli connection modify \"netplan-eth0\" ipv4.may-fail yes connection.autoconnect-retries 0<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Penjelasan parameter:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Parameter<\/th><th>Nilai<\/th><th>Keterangan<\/th><\/tr><\/thead><tbody><tr><td><code>ipv4.may-fail<\/code><\/td><td><code>yes<\/code><\/td><td>NetworkManager tidak memutus interface jika DHCP gagal<\/td><\/tr><tr><td><code>connection.autoconnect-retries<\/code><\/td><td><code>0<\/code><\/td><td>Nilai <code>0<\/code> berarti retry tanpa batas waktu (<em>forever<\/em>)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Langkah 2 \u2014 Verifikasi Konfigurasi<\/h3>\n\n\n\n<pre class=\"wp-block-code has-palette-color-5-color has-palette-color-3-background-color has-text-color has-background has-link-color wp-elements-2\"><code>nmcli -f connection.autoconnect-retries,ipv4.may-fail connection show \"netplan-eth0\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Output yang benar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>connection.autoconnect-retries:         0 (forever)\nipv4.may-fail:                          yes<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Langkah 3 \u2014 Terapkan Perubahan<\/h3>\n\n\n\n<pre class=\"wp-block-code has-palette-color-5-color has-palette-color-3-background-color has-text-color has-background has-link-color wp-elements-3\"><code>nmcli connection up \"netplan-eth0\"<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Bagian 2 \u2014 Mengatasi Masalah Warm Reboot: PHY Watchdog<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Chip <em>Meson GXL Internal PHY<\/em> pada S905X kadang tidak menyelesaikan proses reset saat warm reboot. Kernel sudah selesai booting, NetworkManager sudah aktif, tapi <code>eth0<\/code> tetap melaporkan <code>NO-CARRIER<\/code> \u2014 tidak ada aktivitas fisik sama sekali meski kabel terpasang.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Solusinya adalah membuat sebuah watchdog kecil berbasis systemd: script yang berjalan satu kali setiap boot, memeriksa kondisi carrier <code>eth0<\/code>, dan melakukan power cycle pada level kernel jika PHY terbukti macet.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Langkah 1 \u2014 Buat Script Recovery<\/h3>\n\n\n\n<pre class=\"wp-block-code has-palette-color-5-color has-palette-color-3-background-color has-text-color has-background has-link-color wp-elements-4\"><code>cat &lt;&lt; 'EOF' > \/usr\/local\/bin\/check-eth0.sh\n#!\/bin\/bash\n# Beri jeda 25 detik agar proses inisialisasi awal sistem selesai\nsleep 25\n\nCARRIER=$(cat \/sys\/class\/net\/eth0\/carrier 2>\/dev\/null)\n\nif &#91; \"$CARRIER\" != \"1\" ]; then\n    echo \"&#91;$(date)] eth0 tidak mendeteksi sinyal fisik (NO-CARRIER). Mereset port...\" >> \/var\/log\/eth0-watchdog.log\n    ip link set eth0 down\n    sleep 3\n    ip link set eth0 up\n    sleep 5\n    nmcli connection up \"netplan-eth0\" 2>\/dev\/null\nfi\nEOF\nchmod +x \/usr\/local\/bin\/check-eth0.sh<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Script ini membaca nilai <code>\/sys\/class\/net\/eth0\/carrier<\/code> \u2014 nilai <code>1<\/code> berarti carrier terdeteksi (kabel terhubung dan PHY aktif), nilai selain itu berarti PHY bermasalah. Jika bermasalah, script melakukan <code>ip link set eth0 down<\/code> lalu <code>up<\/code> untuk memaksa chip PHY bernegosiasi ulang, kemudian meminta NetworkManager memulihkan koneksi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jeda 25 detik di awal diberikan agar NetworkManager dan layanan jaringan lain sudah selesai diinisialisasi sebelum script berjalan.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Langkah 2 \u2014 Buat systemd Service<\/h3>\n\n\n\n<pre class=\"wp-block-code has-palette-color-5-color has-palette-color-3-background-color has-text-color has-background has-link-color wp-elements-5\"><code>cat &lt;&lt; 'EOF' > \/etc\/systemd\/system\/eth0-watchdog.service\n&#91;Unit]\nDescription=Check and recover eth0 carrier on boot\nAfter=network.target\n\n&#91;Service]\nType=oneshot\nExecStart=\/usr\/local\/bin\/check-eth0.sh\nRemainAfterExit=true\n\n&#91;Install]\nWantedBy=multi-user.target\nEOF<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Langkah 3 \u2014 Aktifkan Service<\/h3>\n\n\n\n<pre class=\"wp-block-code has-palette-color-5-color has-palette-color-3-background-color has-text-color has-background has-link-color wp-elements-6\"><code>systemctl daemon-reload\nsystemctl enable eth0-watchdog.service<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Verifikasi service terdaftar dengan benar:<\/p>\n\n\n\n<pre class=\"wp-block-code has-palette-color-5-color has-palette-color-3-background-color has-text-color has-background has-link-color wp-elements-7\"><code>systemctl is-enabled eth0-watchdog.service<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Output harus menampilkan <code>enabled<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Pengujian dan Monitoring<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lakukan reboot untuk menguji kedua perbaikan sekaligus:<\/p>\n\n\n\n<pre class=\"wp-block-code has-palette-color-5-color has-palette-color-3-background-color has-text-color has-background has-link-color wp-elements-8\"><code>reboot<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tunggu 1\u20132 menit, lalu masuk kembali melalui SSH. Periksa status service watchdog:<\/p>\n\n\n\n<pre class=\"wp-block-code has-palette-color-5-color has-palette-color-3-background-color has-text-color has-background has-link-color wp-elements-9\"><code>systemctl status eth0-watchdog.service<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Status <code>Active: active (exited)<\/code> dengan kode <code>status=0\/SUCCESS<\/code> menandakan script berjalan tanpa error.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Untuk melihat riwayat kejadian PHY reset yang pernah dilakukan watchdog:<\/p>\n\n\n\n<pre class=\"wp-block-code has-palette-color-5-color has-palette-color-3-background-color has-text-color has-background has-link-color wp-elements-10\"><code>cat \/var\/log\/eth0-watchdog.log<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jika log kosong, berarti PHY berhasil diinisialisasi dengan normal pada boot tersebut \u2014 watchdog tidak perlu mengintervensi.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Ringkasan Perintah<\/h2>\n\n\n\n<pre class=\"wp-block-code has-palette-color-5-color has-palette-color-3-background-color has-text-color has-background has-link-color wp-elements-11\"><code># --- Bagian 1: DHCP Infinite Retry ---\nnmcli connection modify \"netplan-eth0\" ipv4.may-fail yes connection.autoconnect-retries 0\nnmcli -f connection.autoconnect-retries,ipv4.may-fail connection show \"netplan-eth0\"\nnmcli connection up \"netplan-eth0\"\n\n# --- Bagian 2: PHY Watchdog ---\n# Buat script\ncat &lt;&lt; 'EOF' > \/usr\/local\/bin\/check-eth0.sh\n#!\/bin\/bash\nsleep 25\nCARRIER=$(cat \/sys\/class\/net\/eth0\/carrier 2>\/dev\/null)\nif &#91; \"$CARRIER\" != \"1\" ]; then\n    echo \"&#91;$(date)] eth0 tidak mendeteksi sinyal fisik (NO-CARRIER). Mereset port...\" >> \/var\/log\/eth0-watchdog.log\n    ip link set eth0 down\n    sleep 3\n    ip link set eth0 up\n    sleep 5\n    nmcli connection up \"netplan-eth0\" 2>\/dev\/null\nfi\nEOF\nchmod +x \/usr\/local\/bin\/check-eth0.sh\n\n# Buat dan aktifkan service\ncat &lt;&lt; 'EOF' > \/etc\/systemd\/system\/eth0-watchdog.service\n&#91;Unit]\nDescription=Check and recover eth0 carrier on boot\nAfter=network.target\n\n&#91;Service]\nType=oneshot\nExecStart=\/usr\/local\/bin\/check-eth0.sh\nRemainAfterExit=true\n\n&#91;Install]\nWantedBy=multi-user.target\nEOF\n\nsystemctl daemon-reload\nsystemctl enable eth0-watchdog.service\n\n# Verifikasi setelah reboot\nsystemctl status eth0-watchdog.service\ncat \/var\/log\/eth0-watchdog.log<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Referensi<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/networkmanager.dev\/docs\/api\/latest\/nm-settings-nmcli.html\">NetworkManager \u2014 connection properties<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/docs.armbian.com\/User-Guide_Networking\/\">Armbian Documentation \u2014 Network configuration<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/forum.armbian.com\/topic\/12829-armbian-for-amlogic-s905x-s905w\/\">Armbian Community Forum \u2014 Amlogic S905X networking<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.freedesktop.org\/software\/systemd\/man\/systemd.service.html\">systemd \u2014 oneshot service type<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.kernel.org\/doc\/Documentation\/ABI\/testing\/sysfs-class-net\">Linux kernel \u2014 sysfs network interface carrier<\/a><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Catatan Penutup<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Artikel ini disusun berdasarkan pengujian langsung pada lingkungan berikut:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Perangkat:<\/strong> STB HG680P (SoC Amlogic S905X)<\/li>\n\n\n\n<li><strong>Sistem Operasi:<\/strong> Armbian build Ophub<\/li>\n\n\n\n<li><strong>Network Manager:<\/strong> NetworkManager dengan profil <code>netplan-eth0<\/code><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Kedua 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.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Port LAN yang tiba-tiba kehilangan koneksi adalah salah satu masalah paling menjengkelkan pada STB berbasis Amlogic S905X yang menjalankan Armbian \u2014 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 \u2014 Setelah mati lampu: [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":3439,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[15,46],"tags":[66,17,96,98,16,100,97,95,67,65,52,99],"class_list":["post-3438","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-armbian","category-homelab","tag-amlogic","tag-armbian","tag-dhcp","tag-ethernet","tag-hg680p","tag-lan","tag-networkmanager","tag-phy","tag-s905x","tag-stb","tag-systemd","tag-watchdog"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":8}},"_links":{"self":[{"href":"https:\/\/rri.my.id\/index.php\/wp-json\/wp\/v2\/posts\/3438","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rri.my.id\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rri.my.id\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rri.my.id\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/rri.my.id\/index.php\/wp-json\/wp\/v2\/comments?post=3438"}],"version-history":[{"count":3,"href":"https:\/\/rri.my.id\/index.php\/wp-json\/wp\/v2\/posts\/3438\/revisions"}],"predecessor-version":[{"id":3442,"href":"https:\/\/rri.my.id\/index.php\/wp-json\/wp\/v2\/posts\/3438\/revisions\/3442"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rri.my.id\/index.php\/wp-json\/wp\/v2\/media\/3439"}],"wp:attachment":[{"href":"https:\/\/rri.my.id\/index.php\/wp-json\/wp\/v2\/media?parent=3438"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rri.my.id\/index.php\/wp-json\/wp\/v2\/categories?post=3438"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rri.my.id\/index.php\/wp-json\/wp\/v2\/tags?post=3438"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}