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

EDIT: Ok I see the recommended fw is 20211217, but shouldn’t this work out of the box without fw upgrade anyway? Maybe I got a lemon.

Hi all,

I’m in need of some help… just received my Sonoff dongle last week and got it setup on Zigbee2MQTT just fine. Logs report connected to MQTT and all. Terminal shows it on ttyUSB0. Noticed the fw for coordinator is 20210708 though and i haven’t done an upgrade yet because I wanted to test if it works as-is first. Sure enough, it doesn’t pick up any zigbee devices I throw into pairing mode, from two different Sengled LED bulbs to Visonic MCT-340 E door/window sensors, to Iris motion sensors.

Think I have a dud Sonoff stick? Or do I absolutely have to upgrade fw first to make this work? It’s plugged directly into RPi3b’s USB port without USB extension. Have brought the devices right next to the antenna to attempt pairing as well.

Also tried ZHA and also nada.

Zigbee2MQTT log:

[quote]s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
cont-init: info: running /etc/cont-init.d/
[01:48:33] INFO: Socat not enabled, marking service as down
cont-init: info: /etc/cont-init.d/ exited 0
cont-init: info: running /etc/cont-init.d/
cont-init: info: /etc/cont-init.d/ exited 0
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
services-up: info: copying legacy longrun socat (no readiness notification)
services-up: info: copying legacy longrun zigbee2mqtt (no readiness notification)
[01:48:38] INFO: Handing over control to Zigbee2mqtt Core …

[email protected] start
node index.js
Zigbee2MQTT:info 2022-06-26 01:48:52: Logging to console and directory: ‘/config/zigbee2mqtt/log/2022-06-26.01-48-52’ filename: log.txt
Zigbee2MQTT:info 2022-06-26 01:48:52: Starting Zigbee2MQTT version 1.25.2 (commit #unknown)
Zigbee2MQTT:info 2022-06-26 01:48:52: Starting zigbee-herdsman (0.14.34)
Zigbee2MQTT:info 2022-06-26 01:48:56: zigbee-herdsman started (resumed)
Zigbee2MQTT:info 2022-06-26 01:48:56: Coordinator firmware version: ‘{“meta”:{“maintrel”:1,“majorrel”:2,“minorrel”:7,“product”:1,“revision”:20210708,“transportrev”:2},“type”:“zStack3x0”}’
Zigbee2MQTT:info 2022-06-26 01:48:56: Currently 0 devices are joined:
Zigbee2MQTT:warn 2022-06-26 01:48:56: permit_join set to true in configuration.yaml.
Zigbee2MQTT:warn 2022-06-26 01:48:56: Allowing new devices to join.
Zigbee2MQTT:warn 2022-06-26 01:48:56: Set permit_join to false once you joined all devices.
Zigbee2MQTT:info 2022-06-26 01:48:56: Zigbee: allowing new devices to join.
Zigbee2MQTT:info 2022-06-26 01:48:56: Connecting to MQTT server at mqtt://
Zigbee2MQTT:info 2022-06-26 01:48:57: Connected to MQTT server
Zigbee2MQTT:info 2022-06-26 01:48:57: MQTT publish: topic ‘zigbee2mqtt/bridge/state’, payload ‘{“state”:“online”}’
Zigbee2MQTT:info 2022-06-26 01:48:57: Started frontend on port
Zigbee2MQTT:info 2022-06-26 01:48:57: MQTT publish: topic ‘zigbee2mqtt/bridge/state’, payload ‘{“state”:“online”}’
Zigbee2MQTT:info 2022-06-26 01:49:59: Zigbee: disabling joining new devices.
Zigbee2MQTT:info 2022-06-26 01:50:00: MQTT publish: topic ‘zigbee2mqtt/bridge/response/permit_join’, payload ‘{“data”:{“time”:254,“value”:false},“status”:“ok”,“transaction”:“o1lxk-1”}’
Zigbee2MQTT:info 2022-06-26 01:50:00: Zigbee: allowing new devices to join.
Zigbee2MQTT:info 2022-06-26 01:50:00: MQTT publish: topic ‘zigbee2mqtt/bridge/response/permit_join’, payload ‘{“data”:{“time”:254,“value”:true},“status”:“ok”,“transaction”:“o1lxk-2”}’
Zigbee2MQTT:info 2022-06-26 01:54:13: Succesfully changed options
Zigbee2MQTT:info 2022-06-26 01:54:13: MQTT publish: topic ‘zigbee2mqtt/bridge/response/options’, payload ‘{“data”:{“restart_required”:false},“status”:“ok”,“transaction”:“o1lxk-3”}’
Zigbee2MQTT:info 2022-06-26 01:54:19: Zigbee: disabling joining new devices.
Zigbee2MQTT:info 2022-06-26 01:54:19: Succesfully changed options
Zigbee2MQTT:info 2022-06-26 01:54:19: MQTT publish: topic ‘zigbee2mqtt/bridge/response/options’, payload ‘{“data”:{“restart_required”:false},“status”:“ok”,“transaction”:“o1lxk-4”}’
Zigbee2MQTT:info 2022-06-26 01:54:23: Zigbee: allowing new devices to join.
Zigbee2MQTT:info 2022-06-26 01:54:23: MQTT publish: topic ‘zigbee2mqtt/bridge/response/permit_join’, payload ‘{“data”:{“time”:254,“value”:true},“status”:“ok”,“transaction”:“o1lxk-5”}’[/quote]

Try with an extension lead and/or with a different Zigbee channel.

Thanks. Changed to CH 20, but still no joy. Waiting on an extension lead to arrive, but I didn’t think not having one would outright make the sonoff not even see a device sitting right next to antenna, but rather affected its total range.

FYI, I collected all my general tips here are highly recommend following them all before troubleshooting:

@neoshi My guess is that the root cause of your problem is probably not using a USB extension cable because the most commonly seen problem is with EMF/EMI/RFI interference (and not just range). Regardless, I was you then I would regardless go ahead and also upgrade the firmware to 20220219.

Thanks. I did try many of those actions, as I’ve seen that list or a similar one somewhere.

However, I think I found the problem… I saw an Amazon user report that they had a defective antenna, so just as a test, I started to wiggle my antenna base (or rather push it and keep it pushed in any direction at the base of the antenna) and sure enough, devices were seen. However, when I stopped pushing the antenna base, the pairings failed to complete. Likewise, if I did this after the devices paired, pushing the antenna would produce real time contact state change reports, but not pushing on the base would missed reports. I think I have a bad antenna connection here.

I think I’m just going to request a replacement at this time from Sonoff. I didn’t want to commit to a FW upgrade until I had some idea of what was the culprit and also just in case a FW upgrade failed, I didn’t want to be stuck with a bricked stick without recourse from Sonoff.

FYI, ITead has now also released a new “ZBDongle-E” Zigbee dongle based on Silabs EFR32MG21 with similar specifications that will be sold side-by-side as an alternative option to the CC2652 dongle:

Comparing “ZBDongle-P” vs. “ZBDongle-E” vs. barebone EFR32MG21 dongle

image verseu image versus image

Feature/Model ZBDongle-P ZBDongle-E 9888010100045
SoC/MCU chip Texas Instruments CC2652P Silicon Labs EFR32MG21 Silicon Labs EFR32MG21
Zigbee Stack (Serial Interface Protocol API/CLI) Z-Stack v3 (ZNP 3) EmberZNet (EZSP v8) EmberZNet (EZSP v8)
Optional Zigbee Router firmware Yes Yes Yes
USB to UART/Serial Converter Chip CP2102 or CP2102N CH9102F CH340
USB EEPROM Product Description ID SONOFF Zigbee 3.0 USB Dongle Plus SONOFF Zigbee 3.0 USB Dongle Plus V2 None (no USB chip EEPROM)
Home Assistant USB Auto Disovery Yes Not yet Not possible
Flow Control None by default (Hardware flow control optional with alternative firmware and flipped dip-switch) Software flow control Software flow control
RF Transmit Output Power 9dBm (firmware hardcoded), Max: 20dBm 20dBm (default) 20dBm (default)
Antenna External (rotatable and tiltable) External (rotatable and tiltable) Onboard circuit board antenna
Enclosure/case Aluminum all-metal shell casing Aluminum all-metal shell casing None
Length 63mm 52mm ?
Packaging Retail-box with manual Retail-box with manual Anti-static bag only
Home Assistant ZHA Supported Supported Supported
Zigbee2MQTT Supported In development by zigbee-herdsman dev In development by zigbee-herdsman dev
IoBroker Supported In development by zigbee-herdsman dev In development by zigbee-herdsman dev
OpenHAB ZigBee Binding Not yet Supported Supported
Domoticz Zigbee Plugin Supported Supported Supported
Jeedom Zigbee Plugin Supported Supported Supported

Is it supported by Z2M yet?

Yes if asking about new “ZBDongle-E” Zigbee dongle but please discuss it in the other thread instead:

In case anyone is interested, I found an easy way to update the firmware using docker compose (no need to unplug or touch the dongle in any way)

Just make sure you stop Home Assistant or anything else using the dongle.

version: '3'
    image: "ckware/ti-cc-tool"
      FIRMWARE_URL: ""
      - /dev/ttyUSB0:/dev/ttyUSB0
    command: [ "-ewv", "-p", "/dev/ttyUSB0", "--bootloader-sonoff-usb" ]

Shouldn’t take more than a minute.
Then restart Home Assistant and should be everything in place.

Hope this helps.


FYI, ITead have now raised the price of this Texas Instruments CC2652P-based “ZBDongle-P ” adapter to $19.99, matching the price of their new Silicon Labs EFR32MG21-based “ZBDongle-E” adapter:

ITead’s have tried to make it clear that they plan on continuing to sell their CC2652P-based variant of “Sonoff Zigbee 3.0 USB Dongle Plus” (non-“V2” that has recently been rebranded to “ZBDongle-P”) side-by-side as an alternative to the new “ZBDongle-E” so that potential buyers have the option to buy eother a Texas Instruments and Silicon Labs based USB adapter because different home automation applications currently do not offer the same support for all SoC manufacturers.

Again, the “ZBDongle-P” variant is not supported by for example OpenHAB, while the “ZBDongle-E” " variant is not yet well supported by Zigbee2MQTT (though their developers are working on improving it).

Found a new, at least for me, version of the FW. I believed 20220219 was latest version, however found this in another thread. I believe it is a new version of the FW called 20220726 for the ZBDongle-P. Anybody tried it with HA and Z2M?

Not tested it myself yet but yes Koenkk’s Z-Stack-firmware repository tree has “master” and “develop” branches where “master” has well-tested FW and “develop” branch has not-well-tested FW images:

20220726 Changelog says:

  • Increase request retry attempts
  • Increase routing table sizes
  • SimpleLink SDK (changelog) and SimpleLink SDK (changelog)

So for fixed issues also need to look into these upstream changelogs (under “TI Z-Stack”) as well:

ID Summary
ZIGBEE-1779 “TxPower” API should set maximum power to 2dBM in some channels in RSIP
ZIGBEE-1741 Interpan messages crash stack because of network task idle state

FYI, Zigbee2MQTT testers discuss + report issues develop and master firmware images together here:


Hedda, as always I learn something new when you post. Thanks.

I will stay on the master (stable), like I do on HA and the rest of home automation system

I’ve bought a second Sonoff Zigbee 3.0 USB Dongle Plus to use a router/range extender. I’ve flashed it with router firmware.

I’ve tried flashing both these, with a successful and verified write.


I don’t know what to do next now. I’ve plugged the dongle into a USB power source, but think I should add it to the zigbee network somehow? It doesn’t appear on the network map, and doesn’t show if I try to pair it, I’m missing a step and haven’t been able find what to do next by searching.

I’m using z2mqtt, any pointer in the right direction appreciated.

I’ve made progress.

I connected it to HA, added through integrations when it then it got discovered it was also and added as a device in the z2mqtt list. After that I disconnected and plugged it into a power source, it seems like it then acts as a router, the network map shows an error when loading, but it looks like it’s connected.

The log shows a couple of errors

Failed to execute LQI for 'Zigbee Sonoff USB Router

Error: {“address”:1356,“clusterId”:32817,“sequence”:226} after 10000ms at Timeout._onTimeout (/app/node_modules/zigbee-herdsman/src/utils/waitress.ts:64:35) at listOnTimeout (node:internal/timers:559:17) at processTimers (node:internal/timers:502:7)

An unpaired Sonoff ZBDongle-P stick goes into pairing mode at power on, but doesn’t stay in pairing mode very long before going idle.

My steps:

  1. Flash with the LAUNCHPAD variant of the router firmware
  2. Unlpug router stick from USB power
  3. Place z2m into “Permit Join” mode
  4. Plug router stick into usb power source
  5. Wait for joining interview to complete
  6. Restart the z2m container or add on

The step 6 restart is my own suggestion.

Without the z2m restart after pairing, either the stick doesn’t respond to z2m availability pings, or z2m doesn’t correctly process the ping, and z2m will mark the stick as offline (but it still continues to function as a router).

After the z2m restart everything works 100%.

I don’t know what the “real” issue is, and the restart may be overkill, but it is simple and works without touching any extra settings like reporting interval.

I’ve flashed six or so sticks myself, re-flashed and tested several of those with and without the restart a few times, and confirmed with several users on-line that the restart step resolves the timeout/offline issues. Still, no promises, YMMV.

1 Like

Thank you, I think I wasn’t attempting to pair quick enough, except for the time I plugged back into HA, when I made the mistake of also adding as a device thinking that was what paired it.

Thanks for your guide, I removed it completely and started again from scratch and now its connected as router on the network.

Much appreciated.

1 Like

Good evening everyone, I have a ZBDongle-P that I use in ZHA, I have a doubt about what I need to do to update the firmware without losing my zigbee configuration. First I have to backup the coordinator in zha, then I turn off home assistant, I remove the dongle and update the firmware. Then once reconnected do I have to restore the backup of the dongle?

Basically yes, however, if the dongle config is reset during the firmware update (which it is not always) then the ZHA integration the latest Home Assistant should indicate that no configured Zigbee network is found on the radio and offer to restore the backup for you, so that last step should be less complexed than it sounds.

Also remember to stop/disable the ZHA integration before removing the dongle in order to upgrade it, (technically you do not need to remove it as could update on the same computer but it should be easier just to remove the dongle and update firmware on the other computer).

Awaiting this dongle for tomorrow, wish to change an existing installation with Conbee2.

Just realised that my DILC Nuc mini pc has only USB 3 type, and I read i should connect only to USB 2!(which I don’t have).

What will happen attached to a USB 3?