ETH-52P / ETH-52P7修改IEEE(协调器迁移)
换一个 ETH-52P 或 ETH-52P7 时,只恢复 Zigbee2MQTT / ZHA 备份往往不够:有些设备按协调器的 IEEE(EUI-64) 找网关。新 dongle 工厂 IEEE 不同,就会出现「状态还能报、控制发不出去」,或入网一直失败。
本页做法:把旧 TI 协调器的 IEEE 写到新网关的 二级 IEEE,再恢复同一套 zstack 备份。旧网关必须断电,两台不能同时以同一 IEEE 在空中广播。
适用: ETH-52P / ETH-52P7(ESP32 + TI CC2652P / CC2652P7,adapter: zstack)。旧设备也必须是 TI Z-Stack / CC26xx 一类。
不适用: ETH-MG21 / ETH-MG24(含 POE)、ZBT-1P、ZBM-MG21 / MG24。那些是芯科方案,走 ETH-MG web修改 IEEE(协调器迁移)。
ETH 默认:网页 http://dongle.local/,Z2M tcp://dongle.local:6638,ZHA socket://dongle.local:6638。dongle.local 不稳时改局域网 IP。
开始前
- 先备份,再动 IEEE。没有备份又写不了 IEEE,只能重新配对
- 记下旧 IEEE,例如
00:12:4B:00:AA:BB:CC:DD(工具里可去掉开头的0x) - 写完二级 IEEE 后,多数工具还要 再刷一遍协调器固件并保留 secondary IEEE,否则协议栈仍用工厂主地址
- 网页上看到的 IEEE 常常是 出厂主地址,看起来没变是正常的。以 Z2M / ZHA 里显示的 Coordinator IEEE 为准
官方步骤总览:Zigbee2MQTT:复制协调器 IEEE。
1. 记下旧 IEEE,并备份网络
Zigbee2MQTT
- 网页 Settings → About → Coordinator IEEE Address
- 也可打开数据目录里的
database.db,第一行 Coordinator 的ieeeAddr - 复制 / 下载
coordinator_backup.json
ZHA
记下协调器 IEEE。后面用 ZHA 的 Migrate adapter 时会自动备份;有导出备份也可以一并保存。
可选:命令行(旧网关已停 Z2M / ZHA)
zigpy-znp 用 socket://,不要写成 Z2M 的 tcp://:
pip install zigpy-znp
python -m zigpy_znp.tools.network_backup socket://旧网关IP:6638 -o network_backup.json
工具说明:zigpy-znp TOOLS.md。
2. 把旧 IEEE 写成二级地址
方式 A:XZG Multi-tool(推荐有网页的场合)
- 用 Chrome / Edge 打开 XZG Multi-tool(源码 xyzroe/XZG-MT)
- 芯片选 CC2652,串口选 ETH 的 TCP
网关IP:6638,或 USB-Zigbee 串口 - 连上后 Device Info 里的主 IEEE 往往仍是出厂值
- IEEE 一节先 Read,填入旧协调器 IEEE,再 Write(TI 上这是二级地址)
- 按工具提示 再刷协调器固件,并保留 secondary IEEE
方式 B:cc2538-bsl(局域网 BSL)
仓库:JelmerT/cc2538-bsl。先 BSL,再:
python cc2538-bsl.py -p socket://网关IP:6638 -evw \
--ieee-address 00:12:4b:aa:bb:cc:dd:ee \
./对应芯片的协调器.hex
把 IEEE 和 hex 换成你的。-evw 是擦除、写入、校验。说明见 Z2M:cc2538-bsl。
方式 C:TI FLASH-PROGRAMMER-2(USB)
USB 进入 BSL 后,把旧 IEEE 写到 Secondary Address → IEEE 802.15.4 MAC,再刷固件并勾选 Retain secondary IEEE。Z2M:FLASH-PROGRAMMER-2。
3. 恢复备份
写入完成后让射频回到正常协调器固件(需要时重启网关)。旧协调器保持断电。
Zigbee2MQTT
把旧的 coordinator_backup.json 放进 Z2M 数据目录(覆盖空的新备份),然后:
serial:
port: tcp://dongle.local:6638
# port: tcp://网关IP:6638
adapter: zstack
socat:
enabled: false
只启动这一套 Z2M。完整 YAML 见 Zigbee2MQTT 配置 Inswift 协调器。
ZHA
Configure → Migrate adapter,新口填 socket://dongle.local:6638(或 IP)。若提示 Permanently replace the radio IEEE address,勾选。步骤见 Home Assistant ZHA:迁移到新适配器。
可选:zigpy-znp restore
python -m zigpy_znp.tools.network_restore socket://网关IP:6638 -i network_backup.json
只在同一代 CC2652 / Z-Stack 之间做 NVRAM 级恢复。
4. 让设备回到网上
- 给家里的 Zigbee 路由断电 至少 15 秒(灯、插座多时,拉一次总闸很常见)
- 在 Z2M / ZHA 里确认 Coordinator IEEE 已是旧地址,设备既能上报也能受控
- 旧网关若还要当 Router 用,先改成别的 IEEE,或保持断电。同一信道上不要两台相同 IEEE
常见问题
| 现象 | 原因 | 处理 |
|---|---|---|
| 网页 / 刷写工具仍显示出厂 IEEE | TI 界面多半显示 主地址 | 看 Z2M / ZHA 的 Coordinator IEEE,并实测开关灯 |
| 能上报、不能控制 | 二级 IEEE 没生效,或刷固件时没保留 | 再写 IEEE,按工具要求重刷并保留 secondary,再恢复备份 |
adapter state does not match / extpanid 对不上 | 备份和 IEEE 不是同一套网 | 用这份备份里的协调器 IEEE,不要混两份 backup |
工具打不开 …:6638 | 还在被 Z2M/ZHA 占用,或没进 BSL | 停软件,重新 Enable BSL;仍失败改 USB-Zigbee |
| 从芯科芯片迁过来 | 协议栈不同 | 不要走本页。见 FAQ:换新协调器 |
相关
Zigbee2MQTT 配置 · ZHA 接入 · 常见问题 FAQ · ETH-52 网页升级 · ETH 主机 USB 烧录 · ETH-52P / ETH-52P7
官方说明:复制 IEEE · Z2M 换适配器 · 社区讨论:换 CC2652 协调器