community italiana di domotica personale
 
Backup, flash/restore e cancellazione del firmware di un ESP32 via esptool

Backup, flash/restore e cancellazione del firmware di un ESP32 via esptool

SCOPI DELLA GUIDA:
  • Eseguire un backup, un restore e/o una cancellazione del firmware presente su un Sonoff (o su dispositivi equivalenti comunque basati su SOC ESP32)
  • Livello di difficoltà: medio
CONCETTI AFFRONTATI:
  • Gestione firmware
Componenti software utilizzate:
Dispositivi fisici utilizzati:
  • il modulo sul quale effettuare l’intervento
  • un computer di appoggio (Apple, Windows o Linux).
GUIDA maggiormente DEDICATA A utenti:
Tutti gli ambienti
NOTE E DISCLAIMER
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata e realizzata SOLO da personale qualificato;
  • qualsiasi modifica non prevista attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno infatti puro scopo didattico) e fa decadere garanzia, omologazioni e certificazioni di qualità; dei dispositivi interessati;
  • tutte le tecniche descritte si intendono applicate a software e firmware aggiornati alle ultime versioni disponibili;
  • gli articoli di inDomus sono totalmente indipendenti e non sponsorizzati. Se mai questo cambiasse, verrà segnalato chiaramente sulle pagine oggetto di sponsorizzazione;
  • questa pagina è materialmente scritta e manutenuta da più individui: non ci si aspetti né si pretenda un supporto personale. In caso di difficoltà, chiedere supporto alla community sul nostro forum o sulla nostra chat;
  • se hai bisogno di orientarti, c'è la mappa.
Revisione guida: 1.0

Abstract

ESP32, come molti sanno, è un piccolo SOC (“System-on-a-chip”) particolarmente apprezzato in domotica personale (e non solo) per la sua grandissima versatilità e tramite il quale è possibile, a fronte di costi davvero irrisori, prototipare in libertà e realizzare davvero piccole meraviglie.

Solitamente ESP32 viene montato su delle board di sviluppo le quai forniscono pinout (collegamenti diretti esterni analogici e digitali) nonché alimentazione e interfacciamento USB; altre volte lo si trova all’interno di dispositivi più complessi, di mercato, come cuore del sistema (o supporto laterale per specifiche funzioni).

NodeMCU ESP32
un esempio di ESP32 implementato su una board NodeMCU.

Dato che può rendersi necessario effettuare un backup del firmware (specialmente quello originale di fabbrica) per provvedere magari, in un secondo momento, al ripristino, questa guida illustra l’utilizzo del tool gratuito “esptool” (utilizzabile su Windows, Mac, Linux) a tale scopo.

Si parte

Installazione esptool

esptool è un tool software gratuito basato su Python espressamente concepito per permettere ai nostri computer di comunicare col boot loader dei chip SOC ESP8266 e ESP32.

Per installarlo sul computer di appoggio scelto per programmare l’ESP32, seguire questa guida:

esptool

Connessione

Per effettuare backup, restore o cancellazione della flash memoria del componente in questione è necessario collegarvisi tramite una porta USB dell’host che ospita il tool esptool. In caso questo non fosse possibile, è necessario utilizzare un adattatore USB/TTL (FTDI), un semplice dispositivo che permette di mettere in comunicazione il nostro computer e il cuore del modulo basato su ESP32.

Porta COM

Dopo aver effettuato la connessione tra il device ESP32 e il computer di appoggio, recarsi presso il pannello di controllo del computer (in base al proprio sistema operativo) e, presso l’elenco delle USB, capire quale porta si stata assegnata all’USB/TTL.

Su Windows solitamente queste porte sono chiamate “COM1“, “COM2” eccetera, mentre su linu sono chiamate “/dev/ttyUSB0“, “/dev/ttyUSB1” ecc.

NOTA per gli utenti Apple: il sistema operativo macOS potrebbe identificare una porta diversa dalla classica COMx. Si ricordi sempre di installare il corretto driver per Mac del proprio adattatore USB/TLL, in caso di utilizzo.

BACKUP

Siamo finalmente pronti ad effettuare il backup del modulo, il quale è connesso al computer in “flash mode”, conosco la porta e posso quindi eseguire, da terminale/prompt del comandi, il seguente comando:

PER SOC DA 1MB DI MEMORIA:
python esptool.py -b 115200 --port COMx read_flash 0x000000 0x100000 flash_1M.bin 

dove ovviamente COMx è la porta di comunicazione e flash_1M.bin il nome del file che conterrà il firmware salvato.

PER SOC DA 4MB DI MEMORIA:
python esptool.py -b 115200 --port COMx read_flash 0x00000 0x400000 flash_4M.bin 

dove ovviamente COMx è la porta di comunicazione e flash_4M.bin il nome del file che conterrà il firmware salvato.


Se tutto andrà bene, l’output sarà più o meno simile al seguente:

esptool.py vX.X
Serial port COMX
Connecting....
Detecting chip type... ESP32
Chip is ESP32EX
Features: WiFi
MAC: xx:xx:xx:xx:xx:xx
Uploading stub...
Running stub...
Stub running...
4194304 (100 %)
4194304 (100 %)
Read 4194304 bytes at 0x0 in 402.0 seconds (83.5 kbit/s)...
Hard resetting via RTS pin...

Al termine sarà stato creato un file nominato come da comando.

RESTORE (Flash)

Avendo già a disposizione un precedente backup (o comunque di un compilato realizzato ad hoc), il comando di “restore”, ovvero di ripristino, o di flash (da eseguire sempre dopo aver collegato il modulo in “flash mode”), sarà il seguente:

PER SOC DA 1MB DI MEMORIA:
python esptool.py -b 115200 --port COMx write_flash 0x00000 0x100000 flash_1M.bin

dove “flash_1M.bin” sarà il nome del file di backup precedentemente realizzato.

PER SOC DA 4MB DI MEMORIA:
python esptool.py -b 115200 --port COMx write_flash 0x00000 0x400000 flash_4M.bin

dove “flash_4M.bin” sarà il nome del file di backup precedentemente realizzato.

ERASE

Infine potrebbe essere utile “pulire” la flash memory del modulo. Per effettuare una cancellazione totale, eseguire il seguente comando:

esptool.py --port COMx erase_flash

Il quale produrrà la cancellazione totale della flash memory.

Questa pagina è redatta, manutenuta e aggiornata dallo staff di inDomus, un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, sul forum e sulla chat del sito. Alcuni link sono taggati in qualità di affiliati Amazon e riceviamo un compenso dagli acquisti idonei, utile al sostenimento del sito, ma le nostre recensioni sono tutte indipendenti e non sponsorizzate. Se ti sei perso, a tua disposizione c'è la mappa.