Lewati ke konten

Firmware dan OTA

Tiap model punya nomor versi sendiri, tiga angka polos (mis. 0.21.1). Berkas firmware bernama edge-snt-g1-idf-<versi>.bin. Setiap image memuat penanda model, dan node menolak image model lain (image untuk model lain: SNT-G2 (perangkat ini SNT-G1)), baik lewat OTA gateway, rollout Celestian, maupun unggah web.

Versi yang berjalan tampil di LCD (menu Device), di config/reported.fw, dan di status.

Cara Kapan
OTA lewat gateway pemasangan sehari-hari: node mengunduh dari server OTA gateway di LAN rak
Rollout dari Celestian banyak node bertahap; berkas diteruskan gateway dari Celestian
Unggah dari web unit tanpa jalur ke broker atau server OTA (Antarmuka web)
USB pertama kali di meja (flash bootloader, partisi, dan aplikasi)

Mode flash harus tetap QIO 80 MHz: bootloader dengan mode berbeda dari aplikasi dapat merusak penyimpanan konfigurasi. Pasang bootloader dan aplikasi dari build yang sama.

Server menyatakan versi yang diinginkan; node memasangnya sendiri.

Key Keterangan
fw_version versi target, mis. 0.21.1. Kosong = tidak ada target
fw_url alamat berkas .bin. Diawali / = diambil dari gateway (http://<gateway>:8080/…)
fw_sha256 SHA-256 berkas (64 heksadesimal). Bila diisi, firmware hanya diaktifkan kalau hash cocok

Alur: bila fw_version berbeda dari versi yang berjalan, node mengunduh fw_url, memeriksa SHA-256, memasang, lalu restart. Statusnya di fw_status pada config/reported:

fw_status Arti
current tidak ada target, atau versi yang berjalan sudah sama dengan target
updating to <versi> sedang mengunduh dan memasang
installed <versi>, rebooting terpasang, node akan restart
failed: <alasan> gagal (HTTP error, unduhan terputus, SHA-256 tidak cocok, fw_url kosong). Dicoba lagi tiap 10 menit, atau langsung saat config dikirim ulang
mismatch: terpasang <a>, target <b> firmware sudah dipasang tetapi melaporkan versi lain. Node tidak memasang lagi sampai fw_version diganti

Menghitung SHA-256 berkas:

Terminal window
shasum -a 256 edge-snt-g1-idf-0.21.1.bin
{"action":"ota","url":"/fw/snt-g1/edge-snt-g1-idf-0.21.1.bin","sha256":"<64 heksadesimal>"}

URL relatif (/fw/…) disusun terhadap host broker yang efektif. Di mode gateway itu Gateway DC; di mode langsung, IP gateway dari DHCP. Berkas ada di Gateway/firmware/snt-g1/ (OTA di gateway).

Image yang baru dipasang lewat OTA belum dianggap valid. Node menandainya valid hanya setelah Ethernet dan MQTT tersambung terus 60 detik. Bila image belum sehat dalam batas waktu setelah boot, atau crash, macet (watchdog 30 detik), atau reboot sebelum valid, node kembali sendiri ke versi sebelumnya. Dilaporkan di config/reported:

Field Arti
fw_pending_verify: true image yang berjalan belum terbukti sehat; belum boleh dianggap berhasil karena masih bisa dibatalkan
fw_rolled_back: "<versi>" versi firmware yang dibatalkan bootloader. Ada selama slot itu belum ditimpa OTA berikutnya
  • OTA lewat HTTPS belum memverifikasi sertifikat server; OTA lewat gateway memakai HTTP di LAN rak. Keutuhan berkas dijaga SHA-256 bila fw_sha256 diisi — selalu isi.
  • Proteksi anti-kloning (flash encryption dan secure boot) belum diaktifkan pada versi ini.