On this page
On this page
ETH-52P / ETH-52P7 change IEEE (coordinator migration)
When you replace an ETH-52P or ETH-52P7, restoring a Zigbee2MQTT / ZHA backup is often not enough. Some devices look up the coordinator by IEEE (EUI-64). A new dongle factory IEEE then looks like “reports still work, commands fail,” or joining never completes.
This page writes the old TI coordinator IEEE onto the new gateway as a secondary IEEE, then restores the same zstack backup. Power the old coordinator down. Two radios must not advertise the same IEEE on the air.
Applies to: ETH-52P / ETH-52P7 (ESP32 + TI CC2652P / CC2652P7, adapter: zstack). The old radio must also be TI Z-Stack / CC26xx-class.
Does not apply to: ETH-MG21 / ETH-MG24 (including PoE), ZBT-1P, ZBM-MG21 / MG24. Those are Silicon Labs — use ETH-MG web change IEEE (coordinator migration).
ETH defaults: web UI http://dongle.local/, Zigbee2MQTT tcp://dongle.local:6638, ZHA socket://dongle.local:6638. If mDNS is flaky, use the LAN IP.
Before you start
- Back up before touching IEEE. No backup and no IEEE copy means a full re-pair
- Record the old IEEE, for example
00:12:4B:00:AA:BB:CC:DD(tools usually accept it without a leading0x) - After the secondary IEEE write, most tools still need a coordinator reflash that retains secondary IEEE, or the stack keeps the factory primary
- The gateway UI often still shows the factory primary. That is expected. Trust the Coordinator IEEE in Z2M / ZHA
Canonical overview: Zigbee2MQTT: copying the coordinator IEEE.
1. Record the old IEEE and back up the network
Zigbee2MQTT
- Frontend Settings → About → Coordinator IEEE Address
- Or open
database.dbin the data folder; the first Coordinator row hasieeeAddr - Copy / download
coordinator_backup.json
ZHA
Note the coordinator IEEE. Migrate adapter takes an automatic backup; keep an export if you use one.
Optional CLI (Z2M / ZHA already stopped on the old gateway)
zigpy-znp uses socket://, not Zigbee2MQTT’s tcp://:
pip install zigpy-znp
python -m zigpy_znp.tools.network_backup socket://OLD_IP:6638 -o network_backup.json
See zigpy-znp TOOLS.md.
2. Write the old IEEE as secondary
Option A — XZG Multi-tool (good when you want a browser UI)
Follow Z2M: XZG Multi-tool:
- In Chrome / Edge open XZG Multi-tool (source: xyzroe/XZG-MT)
- Chip family CC2652. Serial is TCP
GATEWAY_IP:6638, or the USB-Zigbee port - After connect, Device Info may still show the factory primary IEEE
- IEEE section: Read, enter the old coordinator IEEE, Write (secondary on TI)
- Reflash coordinator firmware and retain secondary IEEE if the tool offers that
Option B — cc2538-bsl (LAN BSL)
Repo: JelmerT/cc2538-bsl. Enable BSL, then:
python cc2538-bsl.py -p socket://GATEWAY_IP:6638 -evw \
--ieee-address 00:12:4b:aa:bb:cc:dd:ee \
./MATCHING_COORDINATOR.hex
Replace the IEEE and hex. -evw is erase, write, verify. See Z2M: cc2538-bsl.
Option C — TI FLASH-PROGRAMMER-2 (USB)
Enter BSL over USB, write the old IEEE under Secondary Address → IEEE 802.15.4 MAC, reflash, and check Retain secondary IEEE. Z2M: FLASH-PROGRAMMER-2.
3. Restore the backup
Return the radio to normal coordinator firmware (reboot the gateway if needed). Keep the old coordinator off.
Zigbee2MQTT
Put the old coordinator_backup.json in the Z2M data folder (replace any empty new backup):
serial:
port: tcp://dongle.local:6638
# port: tcp://GATEWAY_IP:6638
adapter: zstack
socat:
enabled: false
Start only this Zigbee2MQTT instance. Full YAML: Zigbee2MQTT with an Inswift coordinator.
ZHA
Configure → Migrate adapter, new port socket://dongle.local:6638 (or the IP). If asked, enable Permanently replace the radio IEEE address. See Home Assistant ZHA: migrate to a new adapter.
Optional zigpy-znp restore
python -m zigpy_znp.tools.network_restore socket://GATEWAY_IP:6638 -i network_backup.json
Keep NVRAM-level restores inside the same CC2652 / Z-Stack generation.
4. Bring devices back
- Power-cycle Zigbee routers for ≥ 15 seconds (a whole-house cut is common when many mains routers exist)
- In Z2M / ZHA, confirm Coordinator IEEE is the old address, and devices both report and accept commands
- If you reuse the old gateway as a router, change its IEEE first, or leave it unpowered. Do not run two identical IEEE values on the same channel
Troubleshooting
| Symptom | Likely cause | What to try |
|---|---|---|
| UI / flasher still shows factory IEEE | TI screens often show the primary | Trust Z2M / ZHA Coordinator IEEE; test a command |
| Reports OK, commands fail | Secondary IEEE not active, or reflash did not retain it | Rewrite IEEE, reflash with retain, restore the backup again |
adapter state does not match / extpanid mismatch | Backup and IEEE are from different networks | Use the IEEE from that backup; do not mix files |
Tool cannot open …:6638 | Z2M/ZHA still connected, or not in BSL | Stop the stack, Enable BSL again; fall back to USB-Zigbee |
| Coming from a Silabs chip | Wrong stack | Do not use this page. See FAQ: migrating |
Related
Zigbee2MQTT setup · ZHA setup · FAQ · ETH-52 web upgrade · ETH host USB flash · ETH-52P / ETH-52P7
Docs: Copy IEEE · Z2M migrate adapters · Discussion: replace a CC2652 coordinator