community italiana di domotica personale
 
Riprogrammare il firmware di ITEAD Sonoff ZigBee 3.0 USB Dongle Plus v2 (ZBDongle-E)

Riprogrammare il firmware di ITEAD Sonoff ZigBee 3.0 USB Dongle Plus v2 (ZBDongle-E)

SCOPI DELLA GUIDA:
CONCETTI AFFRONTATI:
  • Riprogrammazione firmware
COMPONENTI SOFTWARE UTILIZZATE:
DISPOSITIVI FISICI UTILIZZATI:
PROGETTO MAGGIORMENTE INDICATO PER:

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;
  • questa pagina è materialmente scritta e manutenuta da più individui: non ci si aspetti né si pretenda un supporto personale. In presenza di difficoltà, chiedere supporto alla community sul nostro forum o sulla nostra chat.
Revisione guida: 1.3

Abstract

Ogni dispositivo elettronico contiene a grandi linee una piccola porzione software, chiamata firmware, che ne determina funzioni e comportamento. La nostra automobile è dotata di diversi firmware; ne possiede uno la lavatrice, il nostro telecomando, persino una radiosveglia è dotata di un proprio mini-firmware.

Sonoff ZigBee 3.0 USB Dongle Plus ZBDongle-E - PackageITEAD Sonoff ZigBee 3.0 USB Dongle Plus v2 (ZBDongle-E) è un piccolo ed economico componente che permette, abbinato al software ZigBee2MQTT (o altri analoghi) di definire un BRIDGE/Gateway ZigBee↔︎MQTT utile ad amministrare una rete ZigBee nella propria domotica personale (e quindi accessori basati su questo standard); il componente per lo più è pronto all’uso, ma talvolta si rende necessaria una riprogrammazione del firmware per l’aggiornamento (o la sostituzione) dello stesso.
Inoltre, il coordinator è anche Thread-ready per usi futuri in merito a questa tecnologia applicata all’emergente standard Matter.

Questa guida illustra una delle modalità di riprogrammazione tramite un computer di supporto (qualsiasi modello) e senza la necessità di ulteriori dispostivi di collegamento grazie all’ausilio di questo progetto Open Source. Tale riprogrammazione si rende necessaria in presenza di aggiornamenti del firmware presente sul device oppure per la volontà, per motivi propri, di cambiarne versione, tipologia od origine.


Naturalmente si possono seguire le indicazioni ufficiali ITEAD, che prevedono l’utilizzo di un software che supporti XModem. Spulciando in rete abbiamo però trovato e testato il già citato “Elelabs Firmware Update Utility“: si tratta sostanzialmente di uno script redatto in Python utile a flashare il firmware su prodotti Elelabs Zigbee e Thread/Matter, nonché utilizzabile anche su altri prodotti dotati di generici chip EZSP (come appunto, il ZBDongle-E di ITEAD). Diversamente da quanto previsto nel PDF ufficiale, con questo script possiamo evitare di scaricare altri software accessori ed utilizzare la stessa procedura su qualunque sia il Mini PC/Micro PC/PC o altro utilizzati per flashare la chiavetta: basta che su di essi siano disponibili Python 3 e pip.

Si parte

Coordinator (NCP) o Router?

La procedura qui descritta è valevole per quasiasi firmware compatibile con ITEAD Sonoff ZigBee 3.0 USB Dongle Plus v2 (ZBDongle-E). Noi però descriveremo il caso più tipico, ovvero che la chiavetta venga utilizzata col un firmware per l’uso coordinator ZigBee oppure come router ZigBee, firmware direttamente messo a disposizione da ITEAD.

In soldoni, nel primo caso (coordinator) la chiavetta farà da nodo centrale per la propria rete Zigbee; nel secondo (router), fungerà da ripetitore di segnale di una rete ZigBee già presente. Tutte gli approfondimenti in merito sono spiegati qui.

Smontare la chiavetta (se serve)

In alcuni casi (non sempre, dipende dalla release hardware) si rende necessario, per impostare il coordinator in modalità di riprogrammazione, di premere un pulsante presente sulla board, definito “boot button“:

Sonoff ZigBee 3.0 USB Dongle Plus ZBDongle-E - Board

Procedere quindi alla riprogrammazione come spiegato nei paragrafi che seguono in primis senza smontare alcunché: se non si riesce a scrivere il firmware, solo allora accedere alla board interna del coordinator tramite smontaggio.

Assunti

Importante: prima di cominciare qualunque operazione di riprogrammazione, accertarsi che eventuali software che utilizzano la chiavetta (eg. ZHA, ZigBee2MQTT eccetera) siano stati opportunamente fermati.

Driver

Se si utilizza, per la riprogrammazione, un computer dotato di sistema operativo Apple MacOS o Microsoft Windows, prima di iniziare è necessario installare il driver di gestione del dongle USB.

Tali driver sono disponibili qui:

Firmware da utilizzare

In fase di riprogrammazione di questo dongle vari possono essere i firmware utilizzabili. Ne elenchiamo alcuni:

  • ZigBee: per l’uso come coordinator (quindi come nodo centrale della propria rete ZigBee), è possibile utilizzare quello disponibile QUI, adatto a BRIDGE/Gateway come ZigBee2MQTT o ZHA;
  • ZigBee: per l’uso come router (quindi ripetitore di segnale ZigBee), è possibile utilizzare quello disponibile QUI;
  • Thread (Matter): per utilizzare questa antenna come coordinator Thread su Home Assistant, il firmware da utilizzare è disponibile QUI (questo firmware è ancora assolutamente beta e non stabile e comprovatamente funzionante).

In tutti e tre i casi è necessario ricavare l’indirizzo RAW del firmware da installare (servirà più avanti) cliccando sul nome del file firmware, poi col tasto destro del mouse sopra il pulsante “Download” sulla destra, “copia indirizzo”.

Riprogrammazione

Su Raspberry OS, Linux Debian, ecc.

Prima di provvedere alla riprogrammazione è necessario verificare che l’ambiente operativo sia correttamente predisposto. Diamo per scontato che il sistema operativo sia Linux-like: gli esempi che seguono sono calati su Linux Debian o Raspberry Pi OS, ma sono facilmente mutuabili anche su altre derivazioni/distribuzioni Linux come MacOS o altro.

Colleghiamoci dunque via terminale (da CLI o via SSH) ed eseguiamo il seguente comando per verificare che Python sia installato:

python3 --version

in caso non sia installata almeno la versione 3, provvedere ad installarla con:

sudo apt-get install python3

aggiornare poi la versione di pip e installare i pacchetti necessari come pre-requisiti:

python3 -m pip install --upgrade pip

clonare poi il progetto di Elelabs tramite il seguente comando:

git clone https://github.com/Elelabs/elelabs-zigbee-ezsp-utility.git
cd elelabs-zigbee-ezsp-utility
python3 -m pip install -r requirements.txt

portiamoci poi nella directory appena creata e scarichiamo il firmware.
Prima però colleghiamoci a uno degli indirizzi indicati sopra e troviamo il percorso Internet corretto e completo per il firmware che ci serve, che sia coordinator o router.

Se per esempio l’ultima Coordinator fosse ncp-uart-sw_EZNet6.10.3_V1.0.1.gbl, i comandi saranno, utilizzando l’URL RAW della fonte del file:

wget https://github.com/itead/Sonoff_Zigbee_Dongle_Firmware/raw/master/Dongle-E/NCP/ncp-uart-sw_EZNet6.10.3_V1.0.1.gbl

Ora siamo pronti alla riprogrammazione. Prima però, sempre da terminale, verificare la porta logica assegnata tramite il nostro script o in altri modi (potrebbe essere /dev/ttyACM0), tipo: /dev/ttyACM0 – ITEAD_SONOFF_Zigbee_3.0_USB_Dongle_Plus_V2_XXXXXXXXXXXXXX

Infine, oprima di riprogrammare verfichiamo la versione del firmware presente a bordo col comando (adeguando la porta logica, se necessario):

python3 Elelabs_EzspFwUtility.py restart -m btl -p /dev/ttyACM0

il che dovrebbe dare un output tipo:

Generic Zigbee EZSP adapter detected:
Firmware: x.xx.xxx
EZSP v8
Launch in bootloader mode
EZSP adapter in bootloader mode detected:
Gecko Bootloader vx.xx.xx
N.b. In caso il comando dia luogo a un errore “access denied“, eseguire il comando:

sudo usermod -aG dialout nome_utente

adeguando quindi nome_utente al proprio nome utente Linux in uso. Uscire poi dalla sessione SSH/bash e rientrare col medesimo utente.

a questo punto il device risponde ed è pronto per la riprogrammazione, che avviene tramite uno specifico comando (adeguando anche qui la porta logica e il nome del file, se necessario), per esempio:

python3 Elelabs_EzspFwUtility.py flash -p /dev/ttyACM0 -f ./ncp-uart-sw_EZNet6.10.3_V1.0.1.gbl

Se andrà tutto bene, la procedura riporterà il seguente log:

EZSP adapter in bootloader mode detected:
Gecko Bootloader vx.xx.xx
Allready in bootloader mode. No need to restart
Successfully restarted into X-MODEM mode! Starting upload of the new firmware... DO NOT INTERRUPT(!)
...
Firmware upload complete
Rebooting
Generic Zigbee EZSP adapter detected:
Firmware: x.xx.xxx
EZSP v8

A questo puntio la chiavetta è pronta all’utilizzo col nuovo firmware.

Su Windows

Su Window – salvo voler utilizzare la stessa procedura qui sopra per Linux utilizzando Python 3 per Windows, adattandola dove necessario – si rimanda alle indicazioni ufficiali di ITEAD.

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. Se ti sei perso, a tua disposizione c'è la mappa.