Remote Firmware Upgrade

Remote Firmware Upgrade è un progetto nato per semplificare e rendere più sicura la procedura di aggiornamento firmware dei dispositivi MeshCore installati in postazioni remote, come repeater, nodi in quota, installazioni outdoor, siti radio, rifugi, tralicci o punti difficilmente raggiungibili.
L’obiettivo principale è permettere l’aggiornamento di un nodo MeshCore collegato tramite USB seriale a un Raspberry o a un piccolo sistema Linux remoto, evitando per quanto possibile interventi fisici sul posto e riducendo il rischio operativo durante le operazioni di manutenzione.
Il progetto è stato pensato in modo volutamente conservativo: non nasce per effettuare installazioni da zero, cancellazioni complete o procedure invasive, ma per aggiornare firmware MeshCore già installati su board ESP32 compatibili, mantenendo un approccio prudente e orientato alla continuità operativa.

Perché nasce questo progetto

Con la crescita della rete MeshCore e la diffusione di repeater installati in postazioni remote, può diventare complicato dover raggiungere fisicamente ogni nodo per eseguire un semplice aggiornamento firmware. Molti dispositivi vengono posizionati in luoghi strategici per la copertura radio: punti panoramici, montagne, terrazzi, tralicci, siti tecnici, rifugi o aree isolate. In questi scenari, anche un aggiornamento ordinario può richiedere tempo, spostamenti, accessi autorizzati e condizioni meteo favorevoli.
MeshCore Remote Firmware Upgrade nasce proprio per rispondere a questa esigenza: fornire uno strumento semplice da terminale Linux, installabile su Raspberry, capace di guidare l’utente nella selezione della board, nella scelta del firmware corretto e nell’aggiornamento del dispositivo collegato via USB.

Principio di funzionamento

Il sistema si basa su un concetto molto semplice: il nodo MeshCore da aggiornare viene collegato via USB dati a un Raspberry o a un dispositivo Linux presente nella postazione remota.
L’utente, collegandosi da remoto al Raspberry tramite SSH, può avviare il tool da terminale e seguire una procedura guidata che rileva la porta seriale, verifica la comunicazione con la board, scarica il firmware compatibile e procede all’aggiornamento.
Il tool utilizza esptool per comunicare con la board ESP32 e per eseguire le operazioni necessarie. Prima di procedere con l’aggiornamento, viene effettuata una verifica della comunicazione seriale e, se richiesto, può essere creato un backup completo della flash.
Questa impostazione permette di trasformare un Raspberry remoto in una piccola postazione di manutenzione firmware per dispositivi MeshCore.

Una procedura prudente e non distruttiva

Uno degli aspetti più importanti del progetto è l’approccio alla sicurezza operativa. Il tool non esegue procedure di wipe, non cancella totalmente la flash e non utilizza immagini firmware di tipo merged. Questa scelta è intenzionale e serve a ridurre il rischio di compromettere un nodo remoto durante l’aggiornamento.
Per le postazioni raggiungibili fisicamente, un eventuale errore può essere risolto collegando direttamente la board a un computer. Su un sito remoto, invece, un aggiornamento sbagliato potrebbe rendere necessario un intervento sul posto. Per questo motivo il progetto adotta una logica prudente: aggiorna solo quando è disponibile un firmware compatibile di tipo update e interrompe la procedura se il catalogo propone solo file non adatti a un aggiornamento sicuro. Il firmware viene scritto all’indirizzo previsto per l’update, evitando procedure invasive e mantenendo una gestione più controllata dell’operazione.

Caratteristiche principali

MeshCore Remote Firmware Upgrade include diverse funzioni pensate per rendere più ordinata e sicura la manutenzione da remoto.

Il sistema rileva le porte seriali disponibili e privilegia, quando presente, il percorso stabile sotto /dev/serial/by-id/, più affidabile rispetto ai nomi dinamici come /dev/ttyUSB0 o /dev/ttyACM0, che possono cambiare dopo riavvii o ricollegamenti.

Prima dell’aggiornamento verifica la comunicazione con la board tramite esptool, controllando che il dispositivo risponda correttamente. Il firmware viene scaricato dal catalogo ufficiale MeshCore, permettendo all’utente di selezionare board, ruolo e versione tra quelle disponibili.

Il tool rifiuta automaticamente file flash-wipe e immagini *-merged.bin, poiché non adatti a una procedura di aggiornamento prudente da remoto.

Prima della scrittura del nuovo firmware, l’utente può scegliere di creare un backup completo della flash, utile come ulteriore misura di sicurezza e documentazione dell’intervento.

Requisiti

Per utilizzare il progetto è necessario disporre di un Raspberry o di un sistema Linux con accesso a Internet, privilegi sudo e una board ESP32 compatibile MeshCore collegata tramite cavo USB dati.
È importante utilizzare un cavo USB realmente dati e non un semplice cavo di sola alimentazione. In caso contrario, il dispositivo potrebbe accendersi ma non essere rilevato dal sistema Linux.
Il progetto è particolarmente indicato per Raspberry installati presso siti remoti, dove il nodo MeshCore rimane fisicamente collegato alla porta USB del Raspberry e può essere gestito tramite accesso SSH.

Installazione e pagina GitHub del progetto

Tutti i riferimenti aggiornati per l’installazione, il codice sorgente, gli script e le istruzioni operative sono disponibili nella pagina GitHub ufficiale del progetto:

https://github.com/xpinguinx/meshcore-remote-firmware-upgrade

All’interno del repository sono presenti i file principali del progetto, tra cui lo script di installazione, il tool Python di aggiornamento, il file delle dipendenze e la documentazione tecnica di base. Per l’installazione locale, dopo aver scaricato o clonato il progetto sul proprio Raspberry o sistema Linux, è possibile eseguire dalla cartella del progetto:

bash install.sh

È inoltre prevista una modalità di installazione da GitHub con un solo comando, utile per predisporre rapidamente il tool su una macchina remota:

curl -fsSL https://raw.githubusercontent.com/xpinguinx/meshcore-remote-firmware-upgrade/main/install.sh | bash -s -- --repo xpinguinx/meshcore-remote-firmware-upgrade

Dopo l’installazione, il comando principale disponibile da terminale è:

meshcore-update

Questo comando avvia la procedura guidata di aggiornamento firmware.
Per il solo rilevamento delle porte seriali disponibili è possibile utilizzare:

meshcore-update --detect

Per verificare la comunicazione con la board collegata:

meshcore-update --verify

Per eseguire un controllo dell’installazione e delle dipendenze:

meshcore-update --self-test

È possibile anche specificare manualmente la porta seriale da utilizzare:

meshcore-update --port /dev/serial/by-id/usb-XXXXX

Oppure filtrare la board desiderata indicando il tipo di scheda (esempio Heltec):

meshcore-update --board Heltec

oppure (esempio LilyGo):

meshcore-update --board LilyGo

La pagina GitHub del progetto rappresenta quindi il riferimento principale per consultare eventuali aggiornamenti, modifiche al codice, nuove versioni degli script, immagini dimostrative e note operative.

Comandi principali

Il comando principale è:

meshcore-update

Questo avvia la procedura guidata di aggiornamento.


Per rilevare le porte seriali disponibili è possibile utilizzare:

meshcore-update --detect

Per verificare la comunicazione con la board collegata:

meshcore-update --verify

Per eseguire un controllo dell’installazione e delle dipendenze:

meshcore-update --self-test

È inoltre possibile indicare manualmente la porta seriale da utilizzare:

meshcore-update --port /dev/serial/by-id/usb-XXXXX

Oppure filtrare la board desiderata:

meshcore-update --board [tipo di board/scheda]

Questi comandi rendono il tool flessibile sia per un utilizzo guidato sia per interventi più mirati da parte di utenti esperti.

INIZIO PROCEDURA UPGRADE
SELEZIONE DELLA BOARD
Esempio di utilizzo operativo

In uno scenario reale, un repeater MeshCore installato in quota potrebbe essere collegato via USB a un Raspberry presente nello stesso contenitore tecnico o nella stessa postazione.
L’amministratore si collega da remoto al Raspberry tramite SSH, esegue il comando meshcore-update --detect per verificare la presenza della board, poi utilizza meshcore-update --verify per controllare la comunicazione.
Successivamente avvia meshcore-update, seleziona la board corretta, sceglie la versione firmware disponibile, crea eventualmente un backup completo della flash e conferma l’aggiornamento.
Al termine della procedura, il dispositivo viene riavviato e viene eseguita una verifica finale della comunicazione.

A chi è rivolto

MeshCore Remote Firmware Upgrade è pensato per utenti tecnici, sperimentatori, amministratori di rete MeshCore, gestori di repeater, radioamatori, maker e persone che installano dispositivi MeshCore in postazioni difficilmente accessibili. Non è uno strumento pensato per chi deve effettuare una prima installazione completa del firmware, né per chi deve cancellare totalmente la memoria della board. Per queste operazioni è preferibile utilizzare gli strumenti ufficiali di flashing da computer locale, soprattutto quando si ha accesso fisico al dispositivo. Il valore del progetto emerge soprattutto nelle installazioni remote, dove la priorità è aggiornare il firmware riducendo al minimo il rischio di rendere inutilizzabile il nodo.

Vantaggi del progetto

Il principale vantaggio è la possibilità di aggiornare un nodo MeshCore senza raggiungere fisicamente il sito di installazione, purché la board sia collegata via USB a un Raspberry raggiungibile da remoto.
Un altro beneficio importante è la riduzione degli errori: il tool guida l’utente, propone solo firmware compatibili, verifica la comunicazione con la board e blocca le immagini considerate rischiose per un aggiornamento remoto.
La possibilità di creare un backup della flash prima dell’aggiornamento aggiunge un ulteriore livello di prudenza, utile soprattutto in contesti sperimentali o in installazioni già operative.
Infine, l’uso di percorsi seriali stabili sotto /dev/serial/by-id/ rende la procedura più affidabile nel tempo, specialmente su sistemi Linux dove i nomi delle porte possono cambiare.

Limiti e avvertenze

Il progetto deve essere utilizzato con consapevolezza. Pur adottando scelte conservative, ogni aggiornamento firmware comporta sempre un margine di rischio, soprattutto quando il dispositivo si trova in una postazione remota.
È fondamentale verificare il modello esatto della board, utilizzare firmware compatibili, controllare la stabilità dell’alimentazione e assicurarsi che il collegamento USB sia affidabile.
Il tool non sostituisce la documentazione ufficiale MeshCore e non deve essere considerato una garanzia assoluta contro errori o malfunzionamenti. Deve essere interpretato come uno strumento di supporto alla manutenzione, pensato per ridurre il rischio operativo ma non per eliminarlo completamente.
Prima di eseguire aggiornamenti su nodi strategici o difficilmente raggiungibili, è consigliabile testare la procedura su una board locale dello stesso modello.

Conclusione

MeshCore Remote Firmware Upgrade rappresenta un progetto pratico e utile per la gestione evoluta della rete MeshCore, soprattutto in presenza di repeater o nodi installati in luoghi remoti. La possibilità di aggiornare firmware già installati attraverso un Raspberry collegato via USB consente di semplificare la manutenzione, ridurre gli interventi sul campo e migliorare la gestione operativa dei nodi distribuiti sul territorio.

Il progetto si inserisce nello spirito di MeshCore Italia: sperimentazione, resilienza, condivisione tecnica e sviluppo di strumenti concreti a supporto di una rete radio libera, decentralizzata e sempre più efficiente.

L'ELENCO E LA RELATIVA VERSIONE DEI FIRMWARE VIENE AGGIORNATA IN TEMPO REALE DIRETTAMENTE DAL SITO UFFICIALE DI MESHCORE
BACKUP VECCHIO FIRMWARE
AGGIORNAMENTO FIRMWARE
FINE PROCEDURA AGGIORNAMENTO