community italiana di domotica personale
 
Riprogrammare il firmware del dongle USB CC2531 tramite Raspberry Pi e senza CC Debugger

Riprogrammare il firmware del dongle USB CC2531 tramite Raspberry Pi e senza CC Debugger

SCOPI DEL PROGETTO:
  • Riprogrammare il firmware di un dongle USB CC2531 (nell’esempio useremo la versione richiesta per l’uso con ZigBee2MQTT)
  • Livello di difficoltà: basso
CONCETTI AFFRONTATI:
  • Riprogrammazione firmware
COMPONENTI SOFTWARE UTILIZZATE:
DISPOSITIVI FISICI UTILIZZATI:
PROGETTO MAGGIORMENTE INDICATO PER:

Raspbian - Linux

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 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.5

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 firmware.

Il dongle USB CC2531 è un piccolo ed economico componente che permette, abbinato al software ZigBee2MQTT, di definire un BRIDGE/Gateway ZigBee↔︎MQTT utile ad amministrare una rete ZigBee nella propria domotica personale (e quindi accessori basati su questo standard); sfortunatamente, il componente non è pronto all’uso (come, differentemente, altri componenti analoghi tipo il ConBee, i quali però costano di più) ma prevede, a monte, una riprogrammazione del suo firmware al fine di renderlo operativo. 

Questa guida illustra una delle modalità di riprogrammazione tramite un Raspberry Pi di supporto (qualsiasi modello) e senza la necessità di dispostivi di collegamento come il CC Debugger e il download cable per CC2531. In caso si posseggano questi componenti – o si preferisca a prescindere quest’altra tecnica perché non si possiede un Raspberry Pi – la guida appropriata è questa. Tale riprogrammazione si rende necessaria in presenza di aggiornamenti del firmware presente sul device oppure per la volontà, per motivi propri, di cambiarne versione od origine.

La guida, ovviamente, è utilizzabile anche con altri firmware compatibili con CC2531.

Si parte

Descrizione procedura

La procedura è davvero molto, molto semplice. È infatti sufficiente collegare quattro contatti presenti sul dongle USB CC2531 con altrettanti quattro presenti sul Raspberry Pi (qualsiasi modello, anche Pi Zero), collegare poi il dongle a una delle porte USB del Raspberry Pi e infine eseguire un comando specifico.

Ciò di cui bisogna disporre è:

Connessioni fisiche

In primis è necessario collegare i due dispositivi rispettando il seguente schema:

PIN CC2531 con PIN Raspberry Pi
GND   GND
RST   35
DC   36
DD   38

I contatti da interconnettere tramite i cavi Dupont (lato CC2531 l’enclosure nero presente sulla femmina del cavo Dupont va rimossa, così da liberare il connettore di giusta dimensione) sono i seguenti:

ATTENZIONE: lo schema relativo al Raspberry Pi riporta quello del Raspberry 2/3/4, ma la la piedinatura è la stessa anche su Raspberry Pi Zero.

Una volta collegati i pin tra loro inserire il dongle USB CC2531 a una delle porte USB del Raspberry, dopodiché collegarsi via SSH al proprio Raspberry. In caso fosse spento, provvedere ad accenderlo.

Riprogrammazione

VERIFICA WIRINGPI

In primis è necessario verificare la presenza del software WiringPi. Per effettuare tale verifica, da terminale (una volta connessi via SSH al Raspberry), eseguire il seguente comando:

gpio -v

Il quale dovrebbe fornire una riposta analoga alla seguente:

gpio version: 2.50
Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

ottenuta questa risposta, si ha conferma di aver a bordo il software necessario.
In caso invece si ottenga un errore, sarà allora necessario installare il software tramite il comando:

sudo apt-get install wiringpi
N.b. Se si hanno problemi a installare il pacchetto, provare con le indicazioni di questa guida.
INSTALLARE flash_cc2531

Ora è necessario installare il software flash_cc2531 usando il comando:

git clone https://github.com/jmichault/flash_cc2531.git

Terminata la breve installazione, accedere alla cartella “flash_cc2531” e eseguire il comando di verifica:

cd flash_cc2531
./cc_chipid

In risposta, il comando dovrebbe fornire l’ID “b524“. In caso sia diverso, verificare le connessioni.

SCARICARE IL FIRMWARE

A questo punto è necessario scaricare il firmware che ci interessa installare sul dongle USB C2531. Nell’esempio che segue installeremo il firmware Z-Stack (quello più compatibile e stabile con ZigBee2MQTT), disponibile qui. Il file che ci interessa inizia con il prefisso “CC2531_DEFAULT_“, mentre il prefisso varia rispetto alla data di compilazione.

Eseguire dunque:

cd ~/flash_cc2531
wget https://github.com/Koenkk/Z-Stack-firmware/raw/master/coordinator/Z-Stack_Home_1.2/bin/default/CC2531_DEFAULT_XXXXXXXX.zip

avendo cura di adeguare il comando in base al nome del file disponibile sul repository

Esempio: con nome file “CC2531_DEFAULT_20190608.zip“,il  comando finale è:

wget https://github.com/Koenkk/Z-Stack-firmware/raw/master/coordinator/Z-Stack_Home_1.2/bin/default/CC2531_DEFAULT_20190608.zip

Infine, eseguire l’unzip:

unzip CC2531_DEFAULT_20190608.zip

sempre adeguando il nome del file.

RIPROGRAMMAZIONE

Ora possiamo eseguire i due comandi necessari alla riprogrammazione, il primo che cancella la memoria del dongle e il secondo che lo riprogramma:

./cc_erase
./cc_write CC2531ZNP-Prod.hex -m 300

Terminata la procedura, il dongle USB CC2531 sarà pronto all’uso con ZigBee2MQTT (o col software che si sia scelto di implementare).

DISCONNESSIONE

Per terminare la procedura, disconnettere il dongle dalla porta USB e successivamente disconnettere i cavi Dupont.

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.