Zigbee2mqtt inkl. Coordinator-Firmware aktualisieren
Vor einiger Zeit habe ich Zigbee2mqtt auf einem Turris Omnia in einem Python Virtual Environment installiert (siehe Turris Omnia: Zigbee2mqtt im LXC-Container). Nachdem das einige Zeit lang recht zuverlässig funktioniert hat, war mal ein Update fällig. Dabei wollte ich nicht nur die Zigbee2mqtt-Software sondern auch die Firmware des Coordinators aktualisieren.
Controller-Firmware aktualisieren
Da die ganzen Einstellungen zum Zigbee-Netzwerk in Zigbee2mqtt gespeichert werden, muss zur Aktualisierung lediglich der Controller mit der aktuellen Firmware neu geflasht werden. Wie das für einen CC1352P-2 Controller funktioniert folgendermaßen:
Zunächst muss die Software UniFlash von Texas Instruments heruntergeladen und installiert werden. Danach wird der Coordinator per USB angeschlossen und die Software UniFlash gestartet. Auf dem Startbildschirm wird nun der entsprechende Adapter ausgewählt:
Nachdem der Start-Button gedrückt wurde, muss zunächst die alte Firmware gelöscht werden. Dazu wird im Abschnitt Settings & Utilities > Manual Erase
der Button Erase Entire Flash
ausgewählt:
Hinweis: Gelegentlich will UniFlash vorher noch die Firmware des Programmers aktualisieren. Ist das der Fall so wird eine Warnung in der Console ausgegeben, die ungefähr so lautet:[WARNING] IcePick_C: Warning: A firmware update is required for the XDS110 probe. The current firmware is version 3.0.0.7. The probe must be upgraded to firmware version 3.0.0.12 to be compatible with this software. Click the "Update" button to update the firmware. DO NOT UNPLUG THE DEBUG PROBE DURING THE UPDATE. (Emulation package 9.1.1.00002)
Tritt beim Flashen der Programmer-Firmware ein Fehler auf, so kann es helfen, den Controller kurz vom USB-Port zu trennen. Funktioniert es dann noch immer nicht, so sollte nach Möglichkeit ein USB 2.0 Port ausprobiert werden.
Wichtig: Nachdem der Flash-Speicher des Coordinators erfolgreich gelöscht wurde, so muss der Adapter unbedingt vom USB-Anschluss getrennt und dann wieder angeschlossen werden, damit die nächsten Schritte funktionieren.
Es muss nun geprüft werden, ob der Flash-Speicher des Coordinators erfolgreich gelöscht wurde. Dazu wird im Menü Settings & Utilities > Program Load
der Eintrag All Unprotected Sectors
ausgewählt und anschließend der Button Perform Blank Check
gedrückt:
Zu guter Letzt wird die eigentliche Coordinator-Firmware geflasht. Dazu muss die Firmware auf GitHub heruntergeladen werden (siehe Z-Stack-firmware auf GitHub). Es ist dabei darauf zu achten, dass die passende Coordinator-Firmware ausgewählt wird. Für den CC1352P-2 habe ich mich z.B. für die Firmware Z-Stack_3.x.0 entschieden.
Nachdem das Firmware-Archiv entpackt wurde, wird das Image unter Program > Select and Load Images
auf den Adapter geladen:
Ob dies erfolgreich war, kann man an den Meldungen in der Console erkennen:
Zigbee2mqtt aktualisieren
Jetzt muss noch die Zigbee2mqtt-Installation aktualisiert werden. Wurde Zigbee2mqtt wie im Artikel Turris Omnia: Zigbee2mqtt im LXC-Container beschrieben installiert, so lässt sich das mit folgenden Befehlen im entsprechenden LXC-Container erledigen:
# zigbee2mqtt stoppen und in den richtigen Benutzerkontext wechseln
systemctl stop zigbee2mqtt
sudo -u zigbee -i
# Python venv aktivieren
source bin/activate
# Backup configuration
DATE=$(date +%Y%M%d-%H%m)
cp -R data data-backup${DATE}
# Update
git checkout HEAD -- npm-shrinkwrap.json
git pull
npm ci
# Restore configuration
cp -R data-backup${DATE}/* data
# Deactivate environment
deactivate
exit
# Start zigbee2mqtt
systemctl start zigbee2mqtt
Damit sollte die aktualisierte Zigbee2mqtt-Version mit dem aktualisierten Coordinator wieder laufen. Es kann sein, dass die Schaltvorgänge nicht sofort wieder funktionieren, da sich das Zigbee-Netzwerk erst wieder initialisieren muss. Um den Vorgang zu beschleunigen, kann es helfen ein paar Schaltvorgänge abzusetzten.
Sollten wieder erwartend Fehler auftauchen, so kann ein Blick in die Zigbee2mqtt-Logs im Verzeichnis <zigbee-root>/data/log
helfen.
Quellen
[1] Zigbee2mqtt
[2] Texas Instruments UniFlash (Download)
[3] GitHub - Z-Stack-Firmware
[4] Zigbee2mqtt - CC2531 flashen
[5] Zigbee2mqtt - Flashing via Uniflash
[6] Running Zigbee2mqtt
[7] Running Zigbee2mqtt in Virtual Environment
Kommentare