本页目录

本页目录

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。

开始前

  1. 先备份,再动 IEEE。没有备份又写不了 IEEE,只能重新配对
  2. 记下旧 IEEE,例如 00:12:4B:00:AA:BB:CC:DD(工具里可去掉开头的 0x)
  3. 写完二级 IEEE 后,多数工具还要 再刷一遍协调器固件并保留 secondary IEEE,否则协议栈仍用工厂主地址
  4. 网页上看到的 IEEE 常常是 出厂主地址,看起来没变是正常的。以 Z2M / ZHA 里显示的 Coordinator IEEE 为准

官方步骤总览:Zigbee2MQTT:复制协调器 IEEE。

1. 记下旧 IEEE,并备份网络

Zigbee2MQTT

  1. 网页 Settings → About → Coordinator IEEE Address
  2. 也可打开数据目录里的 database.db,第一行 Coordinator 的 ieeeAddr
  3. 复制 / 下载 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(推荐有网页的场合)

按 Z2M:XZG Multi-tool:

  1. 用 Chrome / Edge 打开 XZG Multi-tool(源码 xyzroe/XZG-MT)
  2. 芯片选 CC2652,串口选 ETH 的 TCP 网关IP:6638,或 USB-Zigbee 串口
  3. 连上后 Device Info 里的主 IEEE 往往仍是出厂值
  4. IEEE 一节先 Read,填入旧协调器 IEEE,再 Write(TI 上这是二级地址)
  5. 按工具提示 再刷协调器固件,并保留 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. 让设备回到网上

  1. 给家里的 Zigbee 路由断电 至少 15 秒(灯、插座多时,拉一次总闸很常见)
  2. 在 Z2M / ZHA 里确认 Coordinator IEEE 已是旧地址,设备既能上报也能受控
  3. 旧网关若还要当 Router 用,先改成别的 IEEE,或保持断电。同一信道上不要两台相同 IEEE

常见问题

现象原因处理
网页 / 刷写工具仍显示出厂 IEEETI 界面多半显示 主地址看 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 协调器