How to Enable Thread and Matter Support on Sonoff ZBDongle-E

UPDATE 14.06.2023: With Silabs Multiprotocol Add-on 2.2.0, the firmware of the dongle must be updated manually to version 4.3.0. The new addon version will fail to start with 4.2.3 firmware, see more here. Darkxst has updated his web flasher, so you can simply click update to 4.3.0 before in the dialog window.

Since the Sonoff ZBDongle-E is based on the EFR32MG21 Multiprotocol SoC chip, it’s capable of both Zigbee and Thread communication thanks to the radio of the module. However, this device is sold solely as a Zigbee dongle by the company and there is no official Thread support at the moment. Whether Sonoff intends to push an update making the device act as a Thread Border Router is unknown at this moment.

Luckily, you can flash the Sonoff ZBDongle-E version with a custom firmware and use it Home Assistant both as a Zigbee Coordinator as well as a Thread Border Router. The process is not difficult, but it does require some additional configuration and setup after you’ve flashed the device.

Thread and Matter Support Sonoff ZBDongle-E Featured

If your purpose is to simply use the device as a Zigbee coordinator, there is no need to flash anything, it ships with NCP firmware version v6.10.3 which is the latest official Zigbee firmware for the ZBDongle-E. If you want to enable Thread support as well, follow along to learn how.

Understanding the process

First and foremost, it’s important to understand what’s at stake before getting into enabling Thread support on the Sonoff ZBDongle-E. As usual with these kind of flashing processes, there is a chance you can brick your dongle beyond repair, so continue at your own risk. Note the following before you start:

  • If you are currently using the Sonoff ZBDongle-E as a Zigbee coordinator, you will have to repair all your devices after flashing the new firmware
  • Standard backup and restore methods of your Zigbee network are possible, although the chance of a successful restore once flashed are slim
  • If you have an existing ZHA integration, you will need to remove it completely than re-add it and form the network around the new multiprotocol firmware
  • If you are running a Zigbee2MQTT network, you need to stop the add-on and change the configuration to access the new multiprotocol firmware

This guide uses a Web Flasher, which will be used to install the latest RCP Multi-PAN firmware on your ZBDongle-E, which will be used to create a Zigbee network as well as provide Thread support as a Border Router.

Different firmware types

Zigbee coordinators, including the ZBDongle-E, rely on a Network Co-Processor (NCP) firmware type. The Zigbee application as well as the network protocol stack is saved on the dongle itself, which manages most of the Zigbee network. The Zigbee integration you are using, simply communicates to the dongle to send/receive commands from devices added to the network.

Recently, Remote Co-Processor (RCP) based firmware has become available for these SoC modules, allowing the Zigbee application to be offloaded to your server completely (in this case, Home Assistant), utilizing only the dongle’s radio at the hardware level.

When using the latter, the hardware capabilities of the dongle can be utilized for creating separate Zigbee and Thread networks by flashing the MultiPAN RCP firmware. This is exactly what we’re going to do.

Flashing the Sonoff ZBDongle-E

This custom firmware was developed by darkxst (Tim L) and works for Home Assistant Yellow and SkyConnect, Sonoff ZBDongle-E and EasyIot ZB-GW04 v1.1/v1.2. He also created a web flasher for the firmware, which is much easier to use than the Universal Silabs Flasher. His work is a fork from the official NabuCasa silabs firmware builder, adding support for additional hardware.

  • Download and install the latest CP210x USB drivers (Windows/Mac)
  • Plug the Sonoff ZBDongle-E to your PC
  • Identify the port number of the dongle
    • Windows: See device manager (example: COM5)
    • Linux: Check with command ls /dev/tty* (example: /dev/ttyACM0)
    • Mac: Check with command ls /dev/tty.usb* (example: /dev/tty.usbserial12345)
  • Open darkxst‘s Web Flasher

1. Click Connect under ZBDongle-E

Enabling Thread and Matter Support on the Sonoff ZBDongle-E: Connecting to Flash

2. Select the dongle from the list of ports

Enabling Thread and Matter Support on the Sonoff ZBDongle-E: Selecting Port

3. Wait for the connection to be established. Click Change Firmware

Enabling Thread and Matter Support on the Sonoff ZBDongle-E: Change Firmware

4. Select Multi-PAN (RCP) from the firmware list and click Install

Enabling Thread and Matter Support on the Sonoff ZBDongle-E: Choose Firmware

5. Wait for the firmware installation

Enabling Thread and Matter Support on the Sonoff ZBDongle-E: Installing Firmware

6. Click Continue and unplug the dongle

Enabling Thread and Matter Support on the Sonoff ZBDongle-E: Success

Once the flashing is complete, you can continue to setup your Zigbee and Thread networks in Home Assistant. Follow the guides bellow for a detailed tutorial.

Home Assistant Setup

Before you continue with the guide, make sure you are running the latest version of Home Assistant. Since Thread and Matter are relatively new integrations actively being developed, updating to the latest version will ensure minimal bugs or glitches. Keep in mind, they are both in Beta and still tagged as experimental.

Silicon Labs Multiprotocol Add-on

An crucial requirement for running both Zigbee and Thread networks on a single Sonoff ZBDongle-E is the Silicon Labs Multiprotocol Add-on. This add-on acts as a gateway between Home Assistant and the Sonoff dongle, essentially allowing you to create separate networks by utilizing the RCP Multi-PAN firmware on the dongle.

Your ZHA, Zigbee2MQTT or Thread Integrations will communicate with the Silicon Labs Multiprotocol Add-on once setup instead of directly with the dongle like before.

Thread Support Sonoff ZBDongle-E Silicon Labs Multiprotocol Installation

To install this add-on, navigate to Settings > Add-ons in Home Assistant. Search for Silicon Labs Multiprotocol and install it but don’t start it yet. Click the Configuration tab at the top and set the settings like in the image bellow:

Thread Support Sonoff ZBDongle-E Silicon Labs Multiprotocol Configuration
  • Select Sonoff ZBDongle-E
  • Baudrate 460800
  • Disable Hardware Flow Control
  • Disable Automatically Flash Firmware
  • Leave the rest as is and click save
  • Go back to the Info tab and Start the add-on

You are now ready to setup ZHA, Zigbee2MQTT or create a Thread network using the Sonoff ZBDongle-E.


Like you normally would, navigate to Settings > Devices & Services > Add Integration and search for ZHA. Select Zigbee Home Automation and follow the process flow with one important difference.

Thread Support Sonoff ZBDongle-E ZHA Setup

When it prompts you for selecting a serial port, choose socket://core-silabs-multiprotocol:9999 instead of the /dev/ttyACM0 - Sonoff dongle.

Click Submit followed by Create a new network. I would suggest not even trying to restore a backup, as it would not work. All your existing devices will be added if you restore, but none would be controllable. The ZHA Integration will now be added and you can start to pair devices like you normally would. I paired a couple of gadgets, they all work normally as they should.

Thread Support Sonoff ZBDongle-E ZHA Done


Setting up Zigbee2MQTT is similar in general, with a few small differences. First, stop the Zigbee2MQTT add-on if it’s already running. If you are installing it fresh, don’t start it before configuring it. Navigate to Settings > Add-ons > Zigbee2MQTT > Configuration tab. Under the Serial field, paste the following:

port: tcp://core-silabs-multiprotocol:9999
adapter: ezsp
Code language: YAML (yaml)

Save the configuration and start the add-on. Zigbee2MQTT tells you whenever something goes wrong, so it’s a good idea to monitor the Logs while the add-on is starting. You should see a message at the end:

Zigbee2MQTT:info 2023-05-30 18:59:58: Zigbee2MQTT started!

The add-on has started successfully and you can continue to create your new Zigbee network.

If you navigate to the About tab of Zigbee2MQTT’s interface, you should see the new EZSP version:

Thread Support Sonoff ZBDongle-E Zigbee2MQTT EZSP Ver

Or you can check the coordinator listed from the Silabs Multiprotocol Add-on in Settings > Serial:

Thread Support Sonoff ZBDongle-E Zigbee2MQTT Serial

Thread Network

If you have a Thread network available, you can now add it to Home Assistant using the Sonoff ZBDongle-E as a Border Router. The Thread Integration should become automatically discovered if you’ve restarted Home Assistant, if not, navigate to Settings > Devices & Services > Add Integration > Thread. Confirm the prompt and the Integration will be added.

Thread Support Sonoff ZBDongle-E Thread Border Router

Thread-based consumer devices use one of the two Home Automation standards: Matter or HomeKit. To actually do anything with a device you need to use one of these integrations for commissioning. Please note, the Thread integration is completely in beta, so it’s a work in progress and much doesn’t work for now.

The Matter integration (and Matter Server add-on) co-ordinates provisioning and control of all Matter Wi-Fi and Thread devices. If you have a Matter certified device that’s based on the Thread protocol, you can add it to HA by using your phone and the companion app.


Enabling Thread, Zigbee and Matter support on the Sonoff ZBDongle-E is beneficial for the tinkerer’s smart home, it basically turns your Home Assistant instance into a powerful multiprotocol hub. It has the hardware capability, so why not actually use it? Credit goes to darkxst, the developer of this firmware fork and web flasher.

The Matter Integration (and Server Add-on) as well as the Thread Integration are all a work in progress. Things are going to change as we head into the second half of the year. I suggest you read this blog post from the official Home Assistant team Matter & Thread: Where we’re at to make things more clear.

The Sonoff ZBDongle-E is a good choice for a multiprotocol coordinator, you can get it on AliExpress ($20) and Amazon ($30). Australians and New Zealanders can get the ZBDongle-e from this store. The same EFR32MG21 module is also found in Home Assistant’s SkyConnect dongle as well as the Easylot ZB-GW04 dongle ($10), for which this firmware also works. is a participant in the Amazon Services LLC Associates Program & AliExpress Portals Affiliate Program.
We may earn a small commission on qualifying purchases from these websites, which incurs no additional cost to you.
SmartHomeScene © 2023 All rights reserved

32 thoughts on “How to Enable Thread and Matter Support on Sonoff ZBDongle-E”

  1. Would love to have instructions on how to run the Silicon Labs Multiprotocol Add-on separately using docker-compose. I have a docker HA install, and hence don’t have access to addons from within HA.

  2. it still is a single point of failure.

    i would instantly implement if i could use two in parallel or an active-passive setup.The zigbee dongles i tested dont properly shutdown / signoff a network once you failover to another dongle, resulting in all kinds of network errors untill you physically unplug.the passive (formerly active) dongle.

  3. So… having had this working yesterday, it not longer is… and I’m confused, as nothing else has changed!

  4. I think the issue is with the Silicon Labs Multiprotocol Add-On…

    Add-on: Silicon Labs Multiprotocol
    Zigbee and OpenThread multiprotocol add-on
    Add-on version: 2.0.0
    You are running the latest version of this add-on.
    System: Home Assistant OS 10.2 (amd64 / qemux86-64)
    Home Assistant Core: 2023.6.0b3
    Home Assistant Supervisor: 2023.06.0
    Please, share the above information when looking for help
    or support in, e.g., GitHub, forums or the Discord chat.
    It doesn’t give an error, but I’m getting:

    [19:23:58:364149] Info : ENCRYPTION IS DISABLED
    [19:23:58:364150] Info : Starting daemon in normal mode
    [19:23:58:374901] Info : Connecting to Secondary…
    [19:24:00:375104] Info : Failed to connect, secondary seems unresponsive

    Then within Z2M:
    [19:25:52] INFO: Preparing to start…
    [19:25:53] INFO: Socat not enabled
    [19:25:53] INFO: Starting Zigbee2MQTT…
    Zigbee2MQTT:debug 2023-06-02 19:25:55: Loaded state from file /config/zigbee2mqtt/state.json
    Zigbee2MQTT:info 2023-06-02 19:25:55: Logging to console and directory: ‘data/log/2023-06-02.19-25-55’ filename: log.txt
    Zigbee2MQTT:info 2023-06-02 19:25:55: Starting Zigbee2MQTT version 1.31.0 (commit #unknown)
    Zigbee2MQTT:info 2023-06-02 19:25:55: Starting zigbee-herdsman (0.14.117)
    Zigbee2MQTT:debug 2023-06-02 19:25:55: Using zigbee-herdsman with settings: ‘{“adapter”:{“concurrent”:null,”delay”:null,”disableLED”:false},”backupPath”:”/config/zigbee2mqtt/coordinator_backup.json”,”databaseBackupPath”:”/config/zigbee2mqtt/database.db.backup”,”databasePath”:”/config/zigbee2mqtt/database.db”,”network”:{“channelList”:[20],”extendedPanID”:[221,221,221,221,221,221,221,221],”networkKey”:”HIDDEN”,”panID”:6754},”serialPort”:{“adapter”:”ezsp”,”path”:”tcp://core-silabs-multiprotocol:9999″}}’
    Zigbee2MQTT:error 2023-06-02 19:26:16: Error while starting zigbee-herdsman
    Zigbee2MQTT:error 2023-06-02 19:26:16: Failed to start zigbee
    Zigbee2MQTT:error 2023-06-02 19:26:16: Check for possible solutions
    Zigbee2MQTT:error 2023-06-02 19:26:16: Exiting…
    Zigbee2MQTT:error 2023-06-02 19:26:16: Error: Connection not initialized
    at Ezsp.execCommand (/app/node_modules/zigbee-herdsman/src/adapter/ezsp/driver/ezsp.ts:551:19)
    at Ezsp.version (/app/node_modules/zigbee-herdsman/src/adapter/ezsp/driver/ezsp.ts:349:35)
    at Driver.startup (/app/node_modules/zigbee-herdsman/src/adapter/ezsp/driver/driver.ts:141:25)
    at EZSPAdapter.start (/app/node_modules/zigbee-herdsman/src/adapter/ezsp/adapter/ezspAdapter.ts:165:16)
    at Controller.start (/app/node_modules/zigbee-herdsman/src/controller/controller.ts:132:29)
    at Zigbee.start (/app/lib/zigbee.ts:58:27)
    at Controller.start (/app/lib/controller.ts:101:27)
    at start (/app/index.js:107:5)

  5. to bad. can’t install it.
    The driver 2102 is not working for my CH9102 Chip on Dongle E.
    Does anyone has another option?

      1. The device is connected. Correctly. After selecting in browser the circle for loading displays and then I get an error that it can‘t be recognised. If I try to install the 210X driver, I get an error from system and it can‘t be detected anymore. Then I flashed the file over xmodem. Now it will be checked but I try to get it work in Hassio.

  6. Can I run two ZBDongle-E’s (on different channels) – my existing one for Zigbee and a new one just for Thread? I don’t want to re-pair all of my Zigbee devices.

      1. Thanks. For another $20., it seems silly to time split the radio and possibly worsen response time on my Zigbee mesh.

  7. Thank you for great article.
    Any suggestion on achieving the same result if I have a separate LXC on Proxmox for Zigbee2MQTT?

    1. I haven’t looked into this, but I know it can be run on docker.
      Might need jumping through additional hoops. I will let you know 🙂

  8. Awesome guide!
    But for me, multi pan create unstable network like no response from some devices. Need to tap 5-6 times to have an update state in HA.
    Using ZSP firmware, it’s stable.

  9. Hi,
    i have an existing zigbee network using the Dongle-E.
    What happend with my existing zigbee network after flashing to the MultiPAN protocol?
    Do i need to start from scratch and re-add all devices or is it possible to import a backup for the zigbee network?

    1. It didn’t work for me and many other people, so I guess the answer is No.
      A backup successfully restores but the devices are unresponsive.
      Would not hurt to try it though, if you decide you want to flash.

  10. I’m using Homebridge + Zigbee 2 MQTT. Is it possible to install Silicon Labs Multiprotocol directly on Linux?

  11. I’ve been trying to get this working, but when I try to add a device through the mobile app, I get the error, “Thread Border Router Required”. I’ve clicked into the Thread integration, and I see the Border Router projected from Silicon Labs.

      1. So I’ve gotten to the point where the websocket is returning a response from postman. So the matter server is receiving requests, but I cant set a thread device. When trying to add a device through the mobile app, the matter addon doesn’t produce any logs. I’m not sure where that add device request is getting gobbled up

      2. So I ended up figuring it out, after a lot of debugging. I was running into the “Thread Border Router Required” issue, and noticed that when trying to connect through my phone, the multi-protocol server would log some activity, but nothing in the matter server. I followed the advice here: and decided to postman the request through a websocket.

        I ran into further issues since the websocket connection kicks off a bluetooth connection when trying to pair the thread device. This process did not like my Pi4 internal bluetooth device. I kept getting bluetooth scanning errors in the matter server logs (yay progress). Eventually I figured out if I go into the bluetoothctl and turn on “scan on”, and stay in that shell, the thread device could connect.

  12. Finaly made the jump installed a VM with HA OS and installed the silicon labs addon. after hours of trial and error I have got both thread over matter and zigbee working. however the pairing process seems a lot worse than with my previous combee stick. my aqara device would no pair except for a switch and a water sensor, all the rest will not pair, my hue bulb did pair but not as easy as with the combee.

    I think I will revert to an only zigbee firmware to test, seems instable to me.

Leave a Comment

Your email address will not be published. Required fields are marked *