You can now backup your Zigbee ZHA network for safe keeping – or even restore the backup on a new stick or Sonoff ZBBridge to seamlessly migrate your zigbee network without having to re-pair all devices.
I recently used this mechanism to backup my 114 device network from my HUSBZB-1 to a Elelabs ELU13 all without having to repair everything.
Keeping a backup file is also just a good precaution in case something happens to your stick or if the thought of re-pairing everything makes you shudder – like it does to me.
Requirements and notes:
- EZSP compatible stick/coordinator like the HUSBZB-1, Elelabs, or flashed Sonoff ZBBridge
- Direct and exclusive access to the stick with Home Assistant stopped - Home Assistant OS (hass.io) users will need to pull their stick and run this procedure on another system
- Home Assistant 0.115 or higher
- Python 3.8
- For seamless migration, you need to overwrite the EUI64 on your target stick/bridge. This is a one time operation and can not be undone or changed in future (without a SWD flasher) so this should only be done if you are sure of the change. If you do not overwrite the EUI64 the binding tables on your devices will be incorrect and they will need to be reset and rejoined. That said, there is very little downside to overwriting the EUI64 – You can have two sticks/hubs with the same EUI64 online at the same time with out any conflicts if you create a new network on one of the two sticks. (
bellows leave && bellows form
) - The backup only stores the network level information for your Zigbee stick. You still need your Home Assistant backups that contain all the device/entity information for all your ZHA devices.
- For HUSBZB-1 users, the Z-wave side of the stick is not backed up, affected or changed in any way.
- If you migrate to a new stick and then want to go back to your original stick, you may need to restore the backup on it as well as the nwkUpdateID may be behind the current network setting.
Backup Procedure
- Find the /dev/ttyUSBx of your stick - Re-plug stick in and run
dmesg
- Or for Sonoff ZBBridge make sure you have the current IP - Make sure bellows is installed and up to date. Run
sudo pip3 install bellows
- Run
sudo bellows -d /dev/ttyUSBX info
to make sure bellows can talk to your stick.
- Replace
/dev/ttyUSBX
with the correct path for your device. - For Sonoff ZBBridge use
socket://<ip>:8888
for the device. - For Elelabs and/or Sonoff you may need/want to run
sudo bellows -d /dev/ttyUSBX -b 115200 info
(If that is the case, add-b 115200
for all futurebellows
commands)
- Make a note of the EUI64 (first line of output), the extendedPanId, the nwkUpdateId and the trustCenterLongAddress.
- Backup your stick to a file
sudo bellows -d /dev/ttyUSBX backup > backup.txt
Restore Procedure
- Follows steps 1 through 4 of the above backup procedure, making sure you have the correct
-d
device location for your new stick/bridge. - Restore the backup you took. Run
sudo bellows -d /dev/ttyUSBX restore --i-understand-i-can-update-eui64-only-once-and-i-still-want-to-do-it -B backup.txt
- Verify backup was restored correctly. Run
sudo bellows -d /dev/ttyUSB1 info
and check that EUI64 (first line outputed), and extendedPanId, nwkUpdateId and trustCenterLongAddress match what your noted in step five of the backup procedure. - If the values do not match, run the restore again like this
sudo bellows -d /dev/ttyUSBX -f -B backup.txt
- This is ommiting the
--i-understand-i-can-update-eui64-only-once-and-i-still-want-to-do-it
and adding-f
flag
bellows info`
That’s it! Now move the stick back to your Home Assistant host, or restart Home Assistant.
Final Notes
- If your new stick changed /dev paths (or baud rates) you will need to update Home Assistant with the new information by either removing ZHA integration and adding it back or by editing the
.storage/core.config_entries
file. - Information migrating to a new stick for zigbee2mqtt users
- I have a docker image for advanced users that also lets you do firmware upgrades and has migration/backup/restore procedures