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

I removed the integration, shutdown the host (RPi), added the device in a USB 2.0 slot, booted, reinstalled the integration (seemed to install fine), but still no device pairing :frowning:

I will try and find a way to get the bulbs super close (they are maybe 10ft away now) and try again.
Update: No dice with the bulbs right next to the stick.

Here are a few others across Reddit/HA Community having similar issues:.
Reddit HA Thread
Reddit Sonoff Thread

Can you maybe post some links to those other discussions or perhaps even refer them to this thread?

I think best would be if we could collect all info and links in one place, at least now in the beginning while this device is brand new, that way most of the teething issues can hopefully be sorted out early.

I do not believe that your issue is with the code in upstream bellows library (nor upstream zigpy library) so if you want to open a bug report with debug logs from ZHA then you should first report it via HA core:

https://github.com/home-assistant/core/issues

That process for reporting issues and how-to collect debug logs is summerized in ZHA documentation:

https://www.home-assistant.io/integrations/zha/#reporting-issues

https://www.home-assistant.io/integrations/zha/#debug-logging

But be sure to also read all the general rules and guidelines for reporting issues to Home Assistant:

https://www.home-assistant.io/help/reporting_issues/

Tip is to not cut and paste long logs in issue tracker, but if have longer logs post to pastebin and link it:

https://pastebin.com/

Hi Hedda

Thank you for the thoughtful insight on how to progress with this issue! I have modified by above post with links to the reddit threads referencing the issue. Additionally I followed your linked reporting issues best practices and submitted one to HA Core and included logs at the recommended debug levels using pastebin.

ZHA: Unable to Pair Devices w/ ITEAD Zigbee 3.0 USB Dongle #48592

1 Like

unable to connect socket. i tried socket://192.168.1.31:8888
115200 port.
keeps failing when manual is selected.
when i select /dev/ttyUSB0 - USB Serial, s/n: n/a
i can set it up. but i cannot add any device as child.

1 Like

Work perfect for me. I have to delete zigbee.db
I have 30 zigbee devices all works

Socket is only for connecting to remote port via Serial-to-IP bridge/gateway/proxy over Ethernet or WiFi.

Zigbee adapter connected directly via USB, GPIO or UART should get mapped to a local serial port.

https://www.home-assistant.io/integrations/zha/#configuration—gui

Most devices need at the very least the serial device path, like /dev/ttyUSB0 , but it is recommended to use device path from /dev/serial/by-id folder, e.g., /dev/serial/by-id/usb-Silicon_Labs_HubZ_Smart_Home_Controller_C0F003D3-if01-port0

A list of available device paths can be found in Supervisor > System > Host System > dot menu > Hardware .

If not using Home Assistant OS then do a google search for something like ex. “linux listing serial ports”

oddly i was able to pair the snzb-01 button which i ordered with the adapter. i have some old aqara sensors but i cant seem to get them in pairing mode, and even my hues, i cant get them to pair. im using an rpi with usbip and sharing that with the home-assistant docker setup in my basement. i also did flash the newer fw.
its the 1st time im using the stick, but im not sure if my hues are still paired to the hub (i added and deleted them from the hue app).

this is what the log shows when i press the button:
[0x0000:zdo] ZDO request ZDOCmd.Mgmt_Permit_Joining_req: [60, <Bool.false: 0>]
[0x8a60:1:0x0006] ZCL deserialize: <ZCLHeader frame_control= manufacturer=None tsn=8 command_id=2>
[0x8a60:1:0x0006] ZCL request 0x0002: []
[0x8a60:1:0x0006] No handler for cluster command 2

EDIT: i was able to pair my aqara sensors now. still cant get the hue bulbs in pairing mode i believe.
also i used the add device by ID instead of /dev/ttyUSB0

If a device is not brand new then you always have to first manually reset each device to its factory default before you will be able pair to a other Zigbee coordinator that it has never been paired to before.

Devices that follow standard Zigbee specifications device can probably be paired after a factory reset.

Note that pairing may require multiple attempts and you may need to try again to reset and pair devices.

Understand that resetting devices to factory default settings can be different for each device model and manufacturer and there are also several different methods for factory resetting each type of device.

Recommend lookup each device in Zigbee2mqtt + Blakadder lists for some tips on resetting + pairing

https://www.zigbee2mqtt.io/information/supported_devices.html

https://zigbee.blakadder.com/

I know that just removing Hue devices from Philips Hue Bridge does not reset them to their defaults.

Suggest first read https://www.home-assistant.io/integrations/zha/#add-philips-hue-bulbs-that-have-previously-been-added-to-another-bridge and also check out this other new tip if got a Lutron remote https://github.com/home-assistant/home-assistant.io/issues/16908

Xiaomi / Aqara devices are not fully Zigbee compliant, and are known to suffer from multiple problems.

Tip is that Hubitat has posted quite a few tips and tricks that are specific to Xiaomi and Aqara devices:

https://community.hubitat.com/t/xiaomi-aqara-devices-pairing-keeping-them-connected/623

Pairing Xiaomi / Aqara Devices

Best Practices When Pairing

  • Before anything else, if you haven’t read it already, please read Hubitat’s informative and helpful How to Build a Solid Zigbee Mesh support how-to article. Based on that article, you should:
    • Check that you have enough ZigBee repeater devices, and if you don’t have any, invest in some repeaters that are known to work with Xiaomi / Aqara devices. Please see a list of repeaters confirmed to work near the bottom of this post. However, you should also…
    • Make sure you don’t have any “incompatible” ZigBee repeaters (i.e., reported not to work with Xiaomi / Aqara devices). Again, please check the list near the bottom of this post.
    • Pair your Xiaomi / Device in its intended final location, not next to the hub. As explained in the above linked how-to page, pairing a ZigBee device next to the hub and then moving it can result in a dropped connection or other issues (such as dropped ZigBee messages).
  • Follow the pairing procedure specific to the Xiaomi / Aqara device. In general, please refer to my basic pairing instructions found in this post. Here are links to pairing instructions / recommendations for some specific devices:
  • Be patient. Some users have reported needing to go through numerous pairing attempts before success. As in 10-20+ minutes of attempts.
  • If a Xiaomi / Aqara device just won’t complete the pairing process, there are a few things that can be tried to manually pair it to a Hubitat hub. Please see this post for details.

Possible reasons for pairing difficulties

  • Interference from another nearby Zigbee hub and/or 2.4GHz WiFi router (see this post for more information)
  • The device may simply be difficult to pair with a non-Xiaomi hub, for example: the 2 button Aqara Smart Wall Switch model WXKG02LM.
  • Pairing through an incompatible Zigbee repeater device (see lists, below)
  • The maximum end-device limit has been reached: 32 ZigBee end devices can be connected directly to the Hubitat hub, and any ZigBee repeater devices used to go above that maximum will also have a limit on how many end-devices can be connected through them.
  • A “weak” Zigbee network mesh (e.g., the device is too far from the hub or a repeater)
  • The Zigbee Stick may need to be reset. (There is one reported instance of a reset resolving pairing issues with Xiaomi / Aqara buttons.)
  • Low battery voltage. Some people have reported replacing the battery on their newly received Xiaomi / Aqara devices solved pairing issues.

thank you very much. i did end up pairing the aqara sensors after many attempts and they work well. i ordered a dimmer for the moment as i tried using hue-thief using the docker container, but it literally just hung doing nothing. i saw it was using the s = await util.setup(device, baudrate=57600) so i changed it to 115200, but still no luck resetting them. i’ll wait till the dimmer comes in and try again. thank you.

EDIT: I got the wireless dimmer just now and was able to reset the bulbs. now they are working with the zigbee stick.

cloudfree has plenty in stock

1 Like

FYI, firmware released with it has AT LEAST one serious bug so require a firmware upgrade before use.

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

  • ncp-uart-sw_679_115200.gbl = v6.7.9 (EZSP v8), software flow control, 115200 baud rate
  • ncp-uart-nsw_679_115200.gbl = v6.7.9 (EZSP v8), no flow control, 115200 baud rate
  • ncp-uart-sw_678_115200.gbl = v6.7.8 (EZSP v8), software flow control, 115200 baud rate
  • ncp-uart-nsw_678_115200.gbl = v6.7.8 (EZSP v8), no flow control, 115200 baud rate
  • ncp-uart-sw_655_115200.gbl = v6.5.5 (EZSP v7), software flow control, 115200 baud rate

Home Assistant’s ZHA integration should work with their “sw” (software flow control) firmware images. ITead has regardless not yet provided firmware images preconfigure for “hw” (hardware flow control).

Firmware can be updated via Elelabs EZSP Firmware Update Utility after stop any software that use it.

https://github.com/Elelabs/elelabs-zigbee-ezsp-utility/

Example command:

#python3 Elelabs_EzspFwUtility.py flash -f data/ncp-uart-sw_679_115200.gbl -p /dev/ttyUSB0
#python3 Elelabs_EzspFwUtility.py probe -p /dev/ttyUSB0

Alternatively can update firmware using Docker image → https://github.com/walthowd/husbzb-firmware

Note! FW or HW still has more bugs as per info in https://github.com/home-assistant/core/issues/48592

PS: Maybe unrelated to problems experienced so far but FYI; CH340E (WCH CH340 E) USB to Serial chip the dongle uses is apparently infamously known to have driver issues in both Linux and Mac OS.

2 Likes

I’m using it for my CC2652 USB coordinators. It has issues with my mac for sure, but has been rock solid on Linux.

2 Likes

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.