ITead's "Sonoff Zigbee 3.0 USB Dongle Plus" (model "ZBDongle-P") based on Texas Instruments CC2652P +20dBm radio SoC/MCU

Sharing my experience here.

I got my dongle today.
When I opened it, the PCB reads v1.3, with a date in July 2021, so definitely one of those old batch.
Did the firmware update to CC1352P2_CC2652P_launchpad_coordinator_20211217, went fine. I did have to update the cp210x driver via windows update before I could proceed with the TI Programmer tool.

I ran the name change tool also, using my Win10 laptop. It went fine. The name is now usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxx-port0, instead of Silicon Lab something.

So far so good.

1 Like

Where exactly did you get working name change tool you used? Could you share the source link?

Also, did you run the binary blog (compiled executable) version or the Python script version of it?

Update to the latest Z-Stack firmware and make sure to use a long USB extension cable to get it away from any sources of electromagnetic fields it like most Zigbee adapters are susceptible to interference.

Follow tips here:


If you have Aqara, Xiaomi, or Tuya devices then it is not uncommon to need re-try paring MANY times!

Follow your comment above, to the sonoff facebook page:
SONOFF - :tada:A new update on the current ZigBee 3.0 USB… | Facebook
… and then follow the last link on that page, to an rar file in sonoff’s Synology Drive:
… click the download icon to the right:

… and then unzip, go to the unzipped folder, run this one when your dongle is connected
There is a .docx file in Mandarin (per google). Thanks to google translate I believe the relevant bits are:

… so I did that, the command line window popped with 3 lines. It was instant and I saw the second line saying gpfn28 config success.
Plug the dongle back to my HAOS, and I got this:

Hope this helps.


FYI, seen many reporting that the Sonoff ZBMINI-L does not have Zigbee Router config in its firmware.

But, new Sonoff S26R2ZB is also based on CC2652 so might maybe it works as a good Zigbee Router?

FYI, ITead also updated their tutorial with instruction on how to use their tool to new update description:

Note that is only the parts regarding the "Product Description String” that applies in that tutorial as only that will write new product description to USB chip (and not the part about flashing Z-Stack firmware).

"As the “Product Description String” of the dongle plus’ CP2102N serial chip has been customed to a unique identifier “Sonoff Zigbee 3.0 USB Dongle Plus”, which has been also added to Home Assistant’s whitelist of auto-discovered devices, the configuration of the dongle in Hass can be very simple. Just plug the dongle into your computer, it will be automatically discovered, click “CONFIGURE” to complete the configuration automatically, and then add sub-devices to use.

If your dongle’s descriptor hasn’t been customed, you can use the tool linked below to change it to “Sonoff Zigbee 3.0 USB Dongle Plus”.

If your dongle still can’t be auto-discovered, it may be because your version of Hass hasn’t integrated this feature yet, you can follow the normal configuration steps below."

I can however still not get that to work on my Windows 10 computer with the latest Silabs CP210x drives from (including rebooting Windows after and checking that the USB dongle is discovered as a COM port).

I first tried to run the included ManufacturingTool.exe binary executable after inserting the dongle into a USB port and seeing it discovered, then also tried installing Python for Windows and running the .py Python script provided without any luck with it writing the new product description to the CP2102 chip.

At least I’m not alone:

Again, sad that ITead did not release a script based on this open-source cp210x-program by VCTLabs:

Think would be better if an open-source script was posted in a new ITead GitHub repo instead by them:

Such open-source script could then be repurposed on other Zigbee and Z-Wave dongles with CP210x.

Might be a stupid question here, but do you guys use a separate PC to flash the dongle?

I have HA installed on a Ubuntu OS natively, was wondering if I can just flash it while HA is running ?
I know I should shutdown HA to be safe but cant seem to find the shutdown option, just restart.

Maybe I should just use my windows PC :rofl: :rofl:

Flashing from Linux CLI seems easier to me, but I’m the type that does most of my Windows server management from the CLI.

Disabling/Reenabling the integration/addon that actually talks to the stick is all that is necessary, no need for a full HA shutdown.

1 Like

Yes, I run Home Assistant Operating System on Home Assistant Blue, (could disable ZHA but I usually shutdown the whole host), and update both Zigbee and Z-Wave dongles on a Windows 10 computer.

Yes you can flash serial adapters such as a Zigbee coordiantor while Linux while Hone Assistant is running but you first need to stop the specific application/service/deamon (like the ZHA integration or Zigbee2MQTT) connected to the serial device because serial devices can only have one connection.

If you run Home Assistant Operating System then there is a “SHUTDOWN HOST” option under Host.

1 Like

For what it’s worth, I’m using three Lutron Aurora dimmers with this Sonoff dongle, but with Zigbee2mqtt rather than ZHA.

1 Like

For what it’s worth, I did the above (on Fedora Linux) using cc2538-bsl and the instructions at Supported Adapters | Zigbee2MQTT and it worked fine. I had a bit of a panic as it didn’t come back up and work immediately — not sure exactly why, but after some reboots and restarts and poking (but with no real changes) it suddenly showed up as detected in HA and then everything worked. But other than that — which I think may have just been me not knowing what to expect — it was easy and painless.

1 Like

Thanks guys for the tips. Was trying it today, basically I disabled the ZHA integration then kicked off the flash but I got

harvin@nuc–server:~/update_sonoff/cc2538-bsl-master$ python3 -p /dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_841414222e1aec118d6e77e5f01c6278-if00-port0 -evw --bootloader-sonoff-usb CC1352P2_CC2652P_launchpad_coordinator_20211217.hex
ERROR: [Errno 13] could not open port /dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_841414222e1aec118d6e77e5f01c6278-if00-port0: [Errno 13] Permission denied: ‘/dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_841414222e1aec118d6e77e5f01c6278-if00-port0’

Seems like disabling the integration didnt actually release the stick :frowning:

Try sudo python3 …

1 Like

[Errno 13] Permission denied” mean that Python don’t have permissions/rights to access file, see:

FYI, there is also more tips from testers here →

For example, try the ttyUSB USB port (example -p /dev/ttyUSB0) instead of device ID path you used.

python -evw -p /dev/ttyUSB0 --bootloader-sonoff-usb CC1352P2_CC2652P_launchpad_coordinator_20211217.hex

Might as well need to use ./ for it to use and firmware in directory are in if file is there.

python ./ -evw -p /dev/ttyUSB0 --bootloader-sonoff-usb ./CC1352P2_CC2652P_launchpad_coordinator_20211217.hex

Also be sure to download cc2538-bsl master from JelmerT’s repository on GitHub or via PyPI via pip:

You have to get latest master from GitHub since there is no release package with the sonoff fix yet (so cc2538 2.1.0 release package and PyPI/pip does not have that fix and not be able to use the new --bootloader-sonoff-usb parameter option for

Once inside folder (either cloned from master or downloaded and unpacked the downloaded file) run:

python install

That from unpacked directory of cc2538-bsl master branch downloaded from GitHub should install/upgrade needed dependencies however might want to pip install/upgrade command(s) to verify:

pip3 install --upgrade pip setuptools wheel pyserial intelhex python-magic

If not running the Home Assistant Operating System then maybe first need to install pip as root or? Ex:

sudo apt update

and then?

sudo apt-get install python3-pip

Then run inside unpacked directory of cc2538-bsl master branch downloaded from GitHub?

sudo python install


sudo pip3 install --upgrade pip setuptools wheel pyserial intelhex python-magic

Disclaimer: Only from google search as I did not actually test commands myself now in any Linux distro.

1 Like

Quick question; can I flash the firmware of this device in future “non-destructively” using Flash Programmer 2 on Windows?

I’ve already updated the firmware of Zigbee 3 dongle to the December firmware and I’m pretty happy with the performance now for 30 or so devices in Zigbee2mqtt. But I’m concerned about needing to re-pair devices if I need to flash a firmware update in future for bug fixes etc. Thanks

You should be OK.

If by “non-destructively” just mean without re-pairing then answer is maybe, so always create backups!

I bought this Dongle recently and in Home Assistant it was seen as a Zwave coordinator. Which I ignored and set it up with Zigbee2Mqtt and it works fine (and worked fine before in ZHA also). But I have noticed the LQI ratings aren’t that brilliant. Even of devices quite close. Functionally I don’t experience any issues.

  • Is there a way for me to see what firmware version is flashed on it?
  • Would flashing newer firmware have a change of improving signal strength?
  • Will flashing newer firmware cause me to have to pair everything again or set the dongle up again in Zigbee2Mqtt?
  • As I’ve never in my life flashed firmware. I see lots of tutorials about how to do this. But they are all Windows based. I’m Mac based. I tried searching for a tutorial there but didn’t find anything. Does anybody know what would be the main differences? using the /dev/serial/by-id link is usually the right thing to do. The only problems I am aware of (ironically) are programs which follow that link and cache the result. (Podman used to do that, but it’s fixed now.)

This isn’t necessary, because python looks in the current directory for files (as is usual) rather than following a search path. If you want to chmod +x; ./, then you’ll need that.

Note also that sudo pip3 install is a recipe for breaking your distro — it can mess with system packages. Better to only run pip as a non-root user.


Yikes, so my update of the stick worked. However I wasnt able to recover my network :frowning:

I had a backup, but I wasnt unable to restore it using the zha toolkit, something about invalid param although I had just copied the command from help page.

Wife was not pleased and had to get the baby to bed so didnt have much time to debug…

Re-paired all my 86 devices in a couple of hours, all working now. The pairing process was alot easier though, seems like the update did make a difference compared to the July release I was on before. Not going to attempt this again though!

Sigh, turned out to be a real pain in the butt

1 Like