ITead Zigbee 3.0 USB dongle/stick/adapter based on Silicon Labs EFR32MG21

FYI, apparently the engineer of this ITead stick missed connecting RTS and CTS between the EFR32 chip and the CH340E chip, meaning it will not be possible to build firmware with hardware flow control:

https://github.com/xsp1989/zigbeeFirmware/issues/15

You will of course still be able to use software flow control with ZHA and that should be to work as well from an end-user perspective as long as all other components are properly implemented and stable.

Note! Developers and users who tested this as a Zigbee coordinator now believe that device paring issues with this Zigbee 3.0 dongle from ITead seem to be due to extreme sensitivity to component and environmental noise or interferences as they discovered that device pairing works much better if use a long USB extension cable and get it as far away from other electronic appliances as possible (including the computer that you run your home automation application software on as well as any devices such as example external harddrives or storage devices, and power-supplies, etc.).

Their troubleshooting has revealed that CCA fail count gets much lower with a USB extension cord.

It is true that using a USB extension cable and trying to keep it away from other possible sources that can interfere with receiving signals is the general recommendation for all RF radio dongles for home automation control, but in this specific case, the interference symptoms are so extreme that users are reporting not being able to pair any devices at all unless getting it some distance away from their computer plus devices/appliances like external harddrives (and of course any WiFi access points, etc.).

Note! As you can see from the pictures the radio chip and the crystal does circuit does not have a EMF shielding (metal plate cover) which means that this board will be very sensitive with its current hardware design will have very high receive sensitivity to electromagnetic interference (EMI) / radio-frequency interference (RMI). This means that it will be extra important to keep it away from any other electronic devices or appliances that may generate an electromagnetic field (EMF or EM Field) or send our interfering radio signals. That includes the computer that you run your home automation application software on as well as any devices such as for example external harddrives or storage devices, power-supplies, etc., and of course any Wi-Fi access points or routers nearby. It also means that the dongle in its current hardware revision is unlikley to ever pass FCC certification. If adding electromagnetic shielding to your other devices/appliances is not possible then one workaround is to use the dongle with a long USB extension cable to get it away as far as possible from any sources of electromagnetic interferances.

PS: I also understand that the EFR32 board antenna design of the “SM-011 V1.0” Zigbee module used inside ITead’s Sonoff ZBBridge share the same antenna design have very high receive sensitivity to electromagnetic interference (EMI) / radio-frequency interference. This means that it will be extra important to keep it too away from any other electronic devices or appliances that may generate an electromagnetic field (EMF or EM Field) or send our interfering radio signals.

Too bad ITead didn’t add SMA (or IPEX) connector + external antenna or used a ceramic chip antenna.

Solder points for PCB trace antenna look too small for an average DIY thinker like myself for soldering on a RG316 SMA-Female to PCB solder pigtail antenna cable, but maybe others are willing to do it?

There are guides to solder SMA connector PCB trace antenna path so can use external antenna, ex:

https://www.instructables.com/External-Antenna-for-ESP8266/

https://community.home-assistant.io/t/how-to-add-an-external-antenna-to-an-esp-board/131601

https://community.openhab.org/t/esp8266-antenna-mod-extend-wifi-range/78982

Most of those guides use RG316 SMA-Female to PCB solder pigtail cable and a 2.4GHz WiFi antenna:

https://www.amazon.com/Pigtail-Antenna-Extension-Connector-Lsgoodcare/dp/B072LFYHHN

Note that there are of couse a huge difference in quality between different external antennas for Zigbee:

https://notenoughtech.com/home-automation/testing-9-external-antennas-with-cc2531-zigbee-coordinator/

PS: New dongles with only integrated antenna should use a ceramic antenna, not a PCB trace antenna.

Has anybody started this dongle with zigbee2mqtt in HA ?

FYI, Silicon Labs EZSP (v8) support in zigbee-herdsman (which Zigbee2MQTT depends on) was just recently added and as such is not mature and currently only available in Zigbee2MQTT dev branch. They are however looking for testers that want to experiment and help out testing it. Initial development has been started on experimental (pre-alpha stage) support for various Zigbee coordinatior adapters based on Silicon Labs EFR32 SoC families with EmberZNet NCP 6.7.8 firmware or later via EZSP version 8 (EmberZNet Serial Protocol) interface. This include all hardware based on SoCs/Modules from Silabs EFR32MG21/MGM210 and EFR32MG12/MGM12 series. More information and discussion available in the Zigbee-herdsman repository on GitHub:

https://github.com/Koenkk/zigbee-herdsman/issues/319

Note! All the issues regarding interference that I posted above of course also apply to Zigbee2MQTT, as such this is not the best hardware to test EZSP with because any problems can be due to interferance.

FYI, other than using a very long USB extension cable with your dongle and adding electromagnetic shielding to your other devices/appliances (like your Raspberry Pi enclosure), another tip is to add electromagnetic shielding to all the parts of the dongle circuit board that is not the PBC trace antenna.

This type of electromagnetic shielding can done by first wrapping it in one layer of some kind of isolating film or tape around it and then wrapping a layer of conductive metallic tape on top of that.

Just make sure to not cover the antenna and as well as electrically grounding the conductive metallic tape to the USB jacketing (which act as a point of the electrical ground) checking it makes contact.

Rather than using just any tape lying around a better solution would probably be a good idea try using either heat-shrink tubing or kapton-tape as the isolation layer (both types are widely available online).

https://en.wikipedia.org/wiki/Heat-shrink_tubing

https://en.wikipedia.org/wiki/Kapton

Also, rather than using any metallic tape, suggested consider buying conductive copper tape (checking that the adhesive/glue on the metallic tape really is a “conductive” variant as “non-conductive” variant also exist, as then it should be easy to ground that conductive tape by just wrapping part of the USB mantel/jacketing as the point of the electrical ground). Tip is to just search for “conductive metal tape”.

https://en.wikipedia.org/wiki/Electrically_conductive_adhesive

https://en.wikipedia.org/wiki/Copper_tape

…once I get around to this myself I probably do it overkill style; i.e.:

  1. First wrap a layer of Kapton-tape (no need to touch USB mantel, and making sure not to cover the PCB trace antenna on the board),
  2. Then wrap a layer of conductive metallic tape, (that needs to touch USB mantel/jacketing, and making sure not to cover the PCB trace antenna on the board).
  3. Lastly heat-shrink tubing over everything (here you could probably choose if you also want to cover PCB trace antenna or not).

Again, be sure to touch USB to ground copper-tape but not to cover the tip of the dongle/stick circuit board which has PCB trace antenna!

Reference:

https://en.wikipedia.org/wiki/Electromagnetic_shielding

PS: If you are using a Raspberry Pi or other single-board-computer with wired Ethernet and you do not need to use its WiFi or Bluetooth then you can also add a layer of electromagnetic shielding to its enclosure as well (or just buy a metal case for it).

I cannot find the hardware address of the Itead zigbee stick under Supervisor->Hardware. I’ve tried both USB2.0 and USB3.0 ports…is there a secret I’m missing?

Got it working. Had to enter the /dev/serial/by-id information manually, plus change port speed to 115200. Finally found the stick.

Any idea why my Itead device won’t add any Aqara sensors? Trying to add water sensor but dongle won’t pair. It’s on a long USB cable…

I found when pairing Aqara sensors, I had to press the button regularly after it had gone into pairing mode in order for HA to pick it up.

1 Like

All the Aqara and Xiaomi devices are infamous for having loads of compatibility issues with most Zigbee implementations that are not their own. Suggest check out this post on Hubitat which have pairing tips:

PS: Also read other dongle tip on about adding conductive metallic tape as electromagnetic shielding:

I bought the Zigbee 3.0 USB dongle together with their button switch directly from ITead. I plugged it into a USB 2.0 on my RPI4 with a long USB lead. When I install the ZHA integration, it picks it up and installs it but I get the following error:

Screenshot (18)

Screenshot (19)

Screenshot (21)

Screenshot (17)

And this is the error I get on the logs:

Logger: homeassistant.components.zha.core.gateway
Source: components/zha/core/gateway.py:152
Integration: Zigbee Home Automation (documentation, issues)
First occurred: August 11, 2021, 10:04:49 PM (98 occurrences)
Last logged: 12:18:45 AM

Couldn't start EZSP = Silicon Labs EmberZNet protocol: Elelabs, HUSBZB-1, Telegesis coordinator
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/asyncio/tasks.py", line 492, in wait_for
    fut.result()
asyncio.exceptions.CancelledError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/zha/core/gateway.py", line 152, in async_initialize
    self.application_controller = await app_controller_cls.new(
  File "/usr/local/lib/python3.9/site-packages/zigpy/application.py", line 74, in new
    await app.startup(auto_form)
  File "/usr/local/lib/python3.9/site-packages/bellows/zigbee/application.py", line 109, in startup
    self._ezsp = await bellows.ezsp.EZSP.initialize(self.config)
  File "/usr/local/lib/python3.9/site-packages/bellows/ezsp/__init__.py", line 83, in initialize
    await ezsp.reset()
  File "/usr/local/lib/python3.9/site-packages/bellows/ezsp/__init__.py", line 98, in reset
    await self._gw.reset()
  File "/usr/local/lib/python3.9/site-packages/bellows/uart.py", line 223, in reset
    return await asyncio.wait_for(self._reset_future, timeout=RESET_TIMEOUT)
  File "/usr/local/lib/python3.9/asyncio/tasks.py", line 494, in wait_for
    raise exceptions.TimeoutError() from exc
asyncio.exceptions.TimeoutError

Anny assistance in getting this integrated and working please?

I also get this error in the log:

Logger: zigpy.application
Source: /usr/local/lib/python3.9/site-packages/zigpy/application.py:78
First occurred: 12:30:47 AM (9 occurrences)
Last logged: 12:38:04 AM

Couldn't start application

:face_with_symbols_over_mouth:

Looks like you don’t have entered/selected correct Serial Device Path as the full path should be longer.

Supervisor > System > Host System > dot menu > Hardware have a list of available device paths.

PS: Unrelated but by the way, also make sure you upgrade firmware on ITead Zigbee 3.0 USB dongle.

Thank you @Hedda, greatly appreciate your assistance. I got the correct Device Path from the hardware section, and installed it manually and it work. You are STAR!

I figured I am on version 678 but did not bother to upgrade it to 679, as after reading the link you sent, don’t have a clue on how to do it.

You can upgrade via either of these two tools/scripts as long as provide the correct firmware image file:

PS: Tips is that easier to upgrade on a other computer than the one running your Home Assistant, and any operating system will work as long as you first install Python (though command syntax will differ).

FYI, ITead just announced an upcoming “Sonoff Zigbee 3.0 USB Dongle Plus” based on TI CC2652P:

https://community.home-assistant.io/t/itead-sonoff-zigbee-3-0-usb-dongle-plus-based-on-texas-instruments-cc2652p-coming-soon/340705

I understand ITead only went with CC2652P instead of Silicon Labs EFR32MG21 for this “Plus” dongle version because of the current silicon chip shortage (which Silabs parts suffered for more than most).

Hopefully, we will also see ITead release a new fixes revision of their cheaper Zigbee 3.0 USB dongle with proper RF shielding and either corrected PCB antenna design or better yet a ceramic chip antenna.

As we know, ITead’s existing ‘non-Plus Zigbee 3.0 USB dongle’ is based on Silabs EFR32MG21 SoC which is just as powerful but sadly was proven that ITead’s first Zigbee 3.0 USB Dongle PCB board revision had a badly designed integrated PCB antenna and no electromagnetic shielding which caused huge issues, and to this date, it has been listed as “out-of-stock” since after the initial batch was sold.

FYI, ITead has now released Silabs EmberZNet 6.10 (v6.10.3) firmware for their EFR32MG21 dongle:

https://github.com/xsp1989/zigbeeFirmware/tree/master/firmware/Zigbee3.0_Dongle

Not tested but will probably work on ZB-GW02, ZB-GW03, ZB-GW04, and Sonoff ZBBridge as well?

I understand they all use same radio board design based on “SM-011 V1.0” radio module by CoolKit:

https://github.com/zigpy/zigpy/discussions/586

xsp1989 also announced the good news is that a router firmware “will be released soon” (so probably).

https://github.com/xsp1989/zigbeeFirmware/issues/18

FYI; Zigbee Router firmware for EFR32MG21 adapters has now been released by xsp1989 on GitHub.

From readme it sounds tested with ITead Zigbee 3.0 USB Dongle and an SM-011 based USB adapter.

The same “SM-011 V1.0” Zigbee radio modules by CoolKit Technologies is also used inside some Zigbee gateways/hubs like the popular ITead Sonoff ZBBridge and ZB-GW03 eWeLink Ethernet Zigbee Gateway sold by EACHEN and SmartWise, so could perhaps be that the same Zigbee Router firmware could maybe also be used on the SM-011 Zigbee module in all or some of those products as well?

https://github.com/xsp1989/zigbeeFirmware/tree/master/firmware/Zigbee3.0_Dongle/RouterForDongle

https://github.com/xsp1989/zigbeeFirmware/blob/710a60451f6631cad46f5d5107b65198558709c3/firmware/Zigbee3.0_Dongle/RouterForDongle/README.md

https://github.com/xsp1989/zigbeeFirmware/issues/16

https://github.com/xsp1989/zigbeeFirmware/issues/2

FYI, ITead has now also released a new Zigbee dongle based on the same EFR32MG21 SoC however the new one features the same external antenna + metal-enclosure as ITead’s dongle that is based on Texas Instruments CC2652P, as well as shipping in similar retail packaging to make it more attractive for sale in brick and mortar stores:

https://community.home-assistant.io/t/itead-s-sonoff-zigbee-3-0-usb-dongle-plus-based-on-silicon-labs-efr32mg21-20dbm-radio-mcu-now-sold-for-19-99/442695

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

image verses image versus image

Feature/Model ZBDongle-P ZBDongle-E 9888010100045
Radio 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 (9dBm firmware available from Koenkk) Yes (20dBm firmware available from ITead) Yes (20dBm firmware available from ITead)
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 (first need to run update script if from first hardware batch shipped) None (no USB chip EEPROM)
Home Assistant USB Auto Disovery Yes Yes (but way need to run update script if from first hardware batch shipped) 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 Experimental support as still in development by zigbee-herdsman dev, see https://github.com/Koenkk/zigbee-herdsman/issues/319 Experimental support as still in development by zigbee-herdsman dev, see https://github.com/Koenkk/zigbee-herdsman/issues/319
IoBroker Supported Experimental support as still in development by zigbee-herdsman dev, see https://github.com/Koenkk/zigbee-herdsman/issues/319 Experimental support as still in development by zigbee-herdsman dev, see https://github.com/Koenkk/zigbee-herdsman/issues/319
OpenHAB ZigBee Binding Not yet, see request and discussion Supported Supported
Domoticz Zigbee Plugin Supported Supported Supported
Jeedom Zigbee Plugin Supported Supported Supported
4 Likes