This tutorial uses zigbee2mqtt functionalities to test for the NVRAM NIB-table length and cleans the NVRAM using scripts/zStackEraseAllNvMem.js
. We seperated some commands into scripts, it's easier for you to repair your controller. The scripts are for Linux. If you are a windows user, please feel free to reach out to us to help you with it.
git clone
cp fix.template.conf fix.conf
Change the values accordingly:
# the filepointer of the device you want to repair
FIX_UART_DEVICE=/dev/ttyAMA0
# folder where zigbee2mqtt github project is checked out
FIX_TEMPDIR=~/tmp/cc2538fix # location where code is checked out
nodejs, npm, python
for ubuntu/debian:
sudo apt install nodejs npm python
./clonez2m.sh
This script can take some time since it's also installing dependencies from NPM repository. After the script has completed, check with echo $?
if the script was run successfully. If the return value is 0, everything is okay.
source fix.conf
ls -l /proc/[0-9]*/fd/* | grep $FIX_UART_DEVICE
example output:
lrwx------ 1 root dialout 64 Sep 12 10:30 /proc/14683/fd/3 -> /dev/ttyAMA0
Then you send a kill signal to the process, in this case it's kill -15 14683
.
Check again, if the shutdown was successful and no process uses your serial device.
source fix.conf
cd $FIX_TEMPDIR
npm start
Once you see a message which shows
Zigbee2MQTT:info 2021-03-19 11:38:35: Coordinator firmware version: '{"meta":{"maintrel":2,"majorrel":2,"minorrel":7,"product":2,"revision":20201010,"transportrev":2},"type":"zStack30x"}'
You can press Ctrl-C to close zigbee2mqtt
./checkLen
output:
Table length is 110
If the table length is 116, everything is okay and you can go to phase 3.
If the table length is 110, you need to continue.
source fix.conf
cd $FIX_TEMPDIR
rm data/coordinator_backup.json
node scripts/zStackEraseAllNvMem.js $FIX_UART_DEVICE
sudo reboot
Start zigbee2mqtt, check lenght with script. If length is 116, all is good and you continue with phase 3. If length is still 100, repeat whole phase 2 until it works.
1. In your usual software which uses zigbee, please make sure that the zigbee controller backup is deleted.
Usually, for zigbee2mqtt you find the controller backup in /opt/zigbee2mqtt/data/coordinator_backup.json. If it's not that exact path, try to remember where you edited the configuration.yaml. The coordinator_backup.json you're supposed to delete is in the same folder.
TODO
TODO
rm -rf cc2538-fix
Dieses Tutorial nutzt die Funktionalitäten von zigbee2mqtt, um die Länge der NIB-Tabelle im NVRAM zu testen und das NVRAM mit scripts/zStackEraseAllNvMem.js
zu bereinigen. Wir haben einige Befehle in Skripte aufgeteilt, es ist einfacher für Sie, Ihren Controller zu reparieren. Die Skripte sind für Linux. Wenn Sie ein Windows-Benutzer sind, können Sie sich gerne an uns wenden, damit wir Ihnen dabei helfen.
1. Klonen Sie dieses Repository auf Ihren Linux-Rechner, an dem Sie den Controller angeschlossen haben.
git clone
cp fix.template.conf fix.conf
Ändern Sie die Werte entsprechend:
# den Dateizeiger des Geräts, das Sie reparieren wollen
FIX_UART_DEVICE=/dev/ttyAMA0
# den Ordner, in dem das zigbee2mqtt-Github-Projekt ausgecheckt ist
FIX_TEMPDIR=~/tmp/cc2538fix # Ort, an dem der Code ausgecheckt wird
nodejs, npm, python
für ubuntu/debian:
sudo apt install nodejs npm python
./clonez2m.sh
Dieses Skript kann einige Zeit in Anspruch nehmen, da es auch die Abhängigkeiten aus dem NPM-Repository installiert. Nachdem das Skript abgeschlossen ist, überprüfen Sie mit echo $?
, ob das Skript erfolgreich ausgeführt wurde. Wenn der Rückgabewert 0 ist, ist alles in Ordnung.
Quelle fix.conf
ls -l /proc/[0-9]*/fd/* | grep $FIX_UART_DEVICE
Beispiel-Ausgabe:
lrwx------ 1 root dialout 64 Sep 12 10:30 /proc/14683/fd/3 -> /dev/ttyAMA0
Dann senden Sie ein Kill-Signal an den Prozess, in diesem Fall ist es kill -15 14683
.
Prüfen Sie noch einmal, ob das Herunterfahren erfolgreich war und kein Prozess Ihr serielles Gerät benutzt.
Quelle fix.conf
cd $FIX_TEMPDIR
npm starten
Sobald Sie eine Meldung sehen, die zeigt
Zigbee2MQTT:info 2021-03-19 11:38:35: Coordinator firmware version: '{"meta":{"maintrel":2,"majorrel":2,"minorrel":7,"product":2,"revision":20201010,"transportrev":2},"type":"zStack30x"}'
Sie können Strg-C drücken, um zigbee2mqtt zu schließen
./checkLen
Ausgabe:
Tabellenlänge ist 110
Wenn die Tabellenlänge 116 ist, ist alles in Ordnung und Sie können zu Phase 3 übergehen.
Wenn die Tabellenlänge 110 ist, müssen Sie fortfahren.
3. Gehen Sie wieder in den Ordner zigbee2mqtt, löschen Sie das coordinator_backup und führen Sie das clear-nvram-script aus.
Quelle fix.conf
cd $FIX_TEMPDIR
rm data/koordinator_backup.json
node scripts/zStackEraseAllNvMem.js $FIX_UART_DEVICE
sudo reboot
Starten Sie zigbee2mqtt, prüfen Sie die Länge mit dem Skript. Wenn die Länge 116 ist, ist alles gut und Sie fahren mit Phase 3 fort. Wenn Länge immer noch 100 ist, wiederholen Sie die gesamte Phase 2, bis es funktioniert.
1. In Ihrer üblichen Software, die Zigbee verwendet, stellen Sie bitte sicher, dass das Backup des Zigbee-Controllers gelöscht ist.
Normalerweise finden Sie bei zigbee2mqtt das Controller-Backup in /opt/zigbee2mqtt/data/coordinator_backup.json. Wenn es nicht genau dieser Pfad ist, versuchen Sie sich zu erinnern, wo Sie die configuration.yaml bearbeitet haben. Die coordinator_backup.json, die Sie löschen sollen, befindet sich im selben Ordner.
TODO
TODO
rm -rf cc2538-fixscript
Übersetzt mit www.DeepL.com/Translator (kostenlose Version)