Easiest way to migrate from CC1352P-2 to zzh?

Short version:
What is the easiest way to migrate from CC1352P-2 to zzh? This is a different type of chip, so I most likely have to change the pan_id and repair everything?

Full story:
As my Zigbee network is getting larger, I recently decided to upgrade my adapter. I was running zigbee2mqtt as Hassio add-on, using a CC2531 (with antenna soldered) with around 50 devices (17 routers). I replaced this adapter by the CC1352P-2.

As this requires changing the pan_id, and therefore repairing all devices, I decided to just remove the old add-on and re-install it after changing the dongle. Although I completely removed the add-on and all configuration/storage files, I still had to change the pan_id, is this normal?

I started re-pairing all devices, but some devices re-paired automatically (most likely because they couldn’t reach the ‘old’ coordinator). However, in the next days, some of these devices were getting unstable, and I had to manually re-pair an re-configure them. Again: is this normal? And would it be better to delete them and/or manually re-pair them to prevent this?

The CC1352P-2 is more powerfull but a bit big (and better suited for debugging), so I just ordered the zzh stick and will use this one instead. As this is a different chipset (CC2652R) I most likely will have to change the pan_id again and re-pair all devices. What is the best approach to do this?

  • Start with a clean install, or just change the pan_id and restart zzh?
  • If changing the pan_id is required, would it be possible to re-use my initial pan_id (which is no longer used by any device now)
  • Unpair/remove devices (routers) from network or not? I will manually reset them when possible
  • When re-pairing: remove devices that auto-joined?

Many thanks for your suggestions! Or if there is any way to migrate without re-pairing, I would be happy to hear!

I’m sorry, I don’t have the answer for you. I would like to convert my network from CC2531 to zzh. I read on the website that I should change the pan id. But I’d like to know: change it to what?

I don’t remember setting the pan_id when I started with zigbee and my cc2531. So what would be the correct pan_id if I decide to switch to the zzh?

Also; would this require to re-add all my devices in home assistant as well?

If you migrate from a CC2531, you most likely will have to change the pan_id or zigbee2mqtt won’t start. Just increase the old value by 1, for example if your current pan_id is 6754, change it to 6755 in configuration.yaml. If you haven’t configured the pan_id yet, zigbee2mqtt uses the default value (=0x1a62 in hex or 6754 in decimal).

Unfortunately, this requires repairing of all devices, as explained on https://www.zigbee2mqtt.io/information/FAQ.html#requires-repairing

For anyone wondering: I was able to replace the CC1352P-2 by the zzh stick without any issues, no need to repair or change the pan_id (most likely because they use a similar chipset, in contrast to the chipset used on the CC2531).


Ok, so I know what to change the pan ID to. Now I am wondering why it is required to change the pan (why wouldn’t zigbee2mqtt start) while this isn’t required for the upgrade you did: from CC1352P-2 to zzh. What does it do? Or is that too hard to explain?

I am not an expert, but this is how I understand it:

The pan_id is used by the coordinator (your CC2531 stick) to create a Personal Area Network, using the configured channel and network key. In this context, the pan_id is just an ID to identify your mesh network. All devices (routers and endpoints) in the network share and know this pan_id, and it is defined during the initial startup phase of the coordinator (when in automatic mode, the coordinator selects an unused pan_id).

When I upgraded from my CC2531 to the CC1352P-2, zigbee2mqtt wouldn’t start because the coordinator detected that the pan_id was already in use. Even when configuring a clean zigbee2mqtt instance, I kept getting this error. Although the coordinator was gone, the old devices still knew this pan_id and therefore the coordinator could not use it. Note that this is most likely something related to the ZigBee standard, and not zigbee2mqtt specific. I guess that if you remove all devices first (but for endnodes this is a bit tricky wen they are battery powered) you could really re-use the old PAN ID if needed (but the easier solution would be to just change it… this has no effect on performance or whatsoever).

When upgrading from CC1352P-2 to zzh however I did not have to change the pan_id, I just replaced the dev board by the zzh dongle, restarted zigbee2mqtt and everything seemed ok. The zzh dongle however uses the CC2652R which is quite similar to CC1352P-2 (but the latter one also supports sub-Ghz, and now that I think of it, it is very likely that the same chip is used for zigbee as on the CC2652R), so this is most likely the explanation why it works.

Note that when you replace your CC2531by a different CC2531 stick, you also don’t have to change anything. Just restart zigbee2mqtt and everything works. Changing the adapter by a different type of adapter (like the 2652/1352/zzh) however requires this, I guess this is because the drivers are different and the old zigbee network cannot be re-used - but this is really a pure guess.

TL;DR: if you replace the CC2531 by zzh (or a different Ti 1352/2651 board), you will have to change the pan_id, unless you manage to remove all devices from the network first (including the coordinator) and start with a fresh/clean install.

Ok I understand. Thank you for the explanation.

Since you have the experience, would you recon it’s a good idea to replace the CC2531 with the zzh? Currently I have only one CC2531, and it can hardly reach my attic. From what I read so far, the zzh should perform much better. Did you experience this as well? Of course you didn’t go from CC2531 to zzh directly, but I guess if both changes give better result, CC2531 --> zzh should also yield better results.

A different dongle could significantly improve the range, and both zzh/1352/2651 are good candidates for that. However, if you could place an additional router in between your CC2531 and the device with poor connection, you could also extend the reach and solve your problem. In my case, I have several (IKEA) smart plugs and some basic lightbulbs in storage rooms distributed in my house to be used as routers, but off course you could also use additional CC2531 sticks.

So in my case, range was not the issue, I had good coverage with the CC2531 and around 17 routers. However, as my network was rapidly increasing in size, it was becoming slow (the CC2531 is good for smaller networks, but once you go over 40 devices the chip is just not powerful enough to handle all the zigbee traffic).

So, if range is your only concern and your network is fairly small, you can stick with the CC2531 for now. If your network is however increasing in size, and you need a faster adapter that can cope with the increased amount of traffic, upgrade the adapter. Oh, a nice bonus: because the zzh/1352/2651 adapters are much more powerful and have a better range, (re-)pairing is much easier and faster compared to using a CC2531!

1 Like

I wonder if you have any news to this topic.
I am about to migrate from CC1352P-2 to the slaesh stick (CC2652RB). I understand you had only to swap the two devices without any re-pairing or configuration changes. I would love that would be the same process for me. :slight_smile:
What is your experience days, weeks, months after the migration to the zzh device?

I am still running the zzh stick without any issues, the slaesh stick uses the same chipset I think so upgrading should be possible without repairing: just flash the stick with the latest firmware, replace the old stick, restart zigbee2mqtt and it should work just like that!

I even replaced the zzh stick after a few weeks (because I had one of the faulty batch, which was replaced for free) and this also went very smooth - luckily because I have tons of devices and having to re-pair them is a very time consuming process. When upgrading my intel nuc server, I even used a raspberry pi for a few days with zigbee2mqtt using the same stick, just by exporting/importing the zigbee2mqtt configuration and this also went smooth - no need to change the pan_id or repair any devices!

Note that you will not notice much difference in performance between the slaesh stick and the CC1352P-2. The main difference is the size (CC1352P-2 is very big to hide or to put in an enclosure), and the CC1352P-2 is also capable of sub-gigahertz (but this is not used by zigbee…).

Good luck!

Thanks four your reply!
I just gave it a try and it worked like a charm. I had to do an update from zigbee2mqtt v1.14.2 to v1.18.1 in the same step.
I was a bit nervous because I got more than 100 devices in my house and definitely don’t want to re-pair all of them. It was only a matter of stopping zigbee2mqtt, swap the coordinators, change the serial port in the configuration and start zigbee2mqtt again. Within a couple of minutes the whole network was up again. :slight_smile:
My intention of changing to the slaesh stick was not performance but range and on the first sight it looks to me as the range increased.