Modern Guide to Thread on a Sonoff Zigbee 3.0 USB Dongle Plus V2

I spent over an hour fussing with an Sonoff Zigbee 3.0 USB Dongle Plus V2 trying to get it to act as a Thread Border Router. Looking back, all the information I needed does exist somewhere, but as a new user doing it very recently, all I found was third party guides that turned out to be outdated, and feeling like the HA documentation only covered their official hardware/ dongle, with not a word of guidance about 3rd party dongles.

This was the first article that I worked from: Enabling Thread and Matter on Sonoff ZBDongle-E - SmartHomeScene
This website is a great resource, but the article is 2 years old. It has us install the Multi-PAN (RCP) firmware onto the dongle. However, after doing so and attempting to proceed, I saw in the Silabs Multiprotocol Addon addons/silabs-multiprotocol at master · home-assistant/addons · GitHub that:

Multiprotocol is no longer supported and will be removed in the near future!

So we move on. Here are the actual steps to follow. Note that this means that your dongle will only speak Thread afterwards, and no longer be able to speak Zigbee. You would likely need separate dongles if you wish to have a mix of Zigbee and Thread devices talking to HA.

  1. This is the same flasher that the article above has us use. We still use it, but flash the Openthread firmware:
    Silabs Firmware Flasher | Web based flasher for ZB-GW04 and ZBDongle-E. MultiPAN RCP firmware enables these devices to be used with Silabs Multiprotocol Addon in Home Assistant. Allow Zigbee and Thread to co-exist on the same dongle. Get ahead of the tech an experiment with Matter!

    Follow the instructions on that page. Use a Chrome-based browser. Heed the warnings about the CP2102 driver potential issues on Windows. I gave up on fussing with Windows and used my Macbook for this. Wait until Openthread firmware is successfully flashed on your dongle, then disconnect it.
  2. You will want to get deeply acquainted with this part of the documentation: Thread - Home Assistant
    In my case, I would follow: Turning Home Assistant into a Thread border router and then Case 1: Making Home Assistant your first Thread network. But if you have existing Thread networks/ routers, another section may apply to you.
    Plug your flashed USB dongle into your Home Assistant server/ host device.
    Install the Thread integration in HA under SettingsDevices & servicesThread.

    Then I opened it up and for me it was empty/ showed no devices, as I did not have any Thread devices yet and the Thread dongle is not yet set up.
  3. Install the OpenThread Border Router add-on , not the integration you just saw as an option in the last step. Navigate to it and you will see the Info, Documentation, Configuration, and Log tabs at the top.
    Now, you need to configure it, and while I now know that all the information was right in front of me in docs I have already linked above, I didn’t know what was relevant to me at the time as I tried to fuss with all of this. This was the topic I kept getting led to, and used as a starting point, but there are differences for the Sonoff dongle, so follow my config options below instead. Sonoff ZBDongle-E with Openthread RCP - #5 by francisp
    • Select your USB device from the options/ list.
    • The Baudrate for the Sonoff dongle is 460800
    • Turn Hardware flow control off !!!
    • Turn Automatically flash firmware off as it will not help you anyways, you are not using official HA hardware.
    • leave OTBR firewall on
    • leave NAT64 off
    • in my Network section, I already had port 8080 in use, so I changed it to 8082 and kept the second line as 8081. You should handle this if needed based on your own setup.

      Save all your Config settings. Go to the Info tab and start the add on. Watch Logs from the Log tab. If you put incorrect settings in Configuration above, you will see errors here, like I did. Not seeing errors and seeing INFO: Successfully sent discovery information to Home Assistant. is a great success point!
  4. Exercise patience. I would open a new tab of Home Assistant and navigate to SettingsDevices & services. Perhaps refresh it after a few minutes. Our goal is for the Open Thread Border Router integration to automatically show up in your list of integrations. Remember how you didn’t add this integration earlier? Good. You shouldn’t have to add it now. It should show up by itself. If you don’t see it after a few minutes, I suggest to restart Home Assistant. That’s what got things going for me.
  5. After the Open Thread Border Router integration has shown up,

    we want to click on the Thread integration.

    and press on the gear icon here:

    You should see something like this:

    The little i icon in the top right of is where the network information lives. That also took me a little while to figure out. Click it.

    I won’t show a screenshot of that particular modal that pops up as it is all your own private Thread network information.
    You don’t need to copy every line/ entry one by one.
    To configure ESPHome, just copy the last long line under Active dataset TLVs:



If you wish to set up an ESPHome device using Thread, you will need a compatible chipset. The ESP32-C6 supports Wifi, Bluetooth, and Thread, but to use Thread, you’ll need to turn the Wifi off. The ESP32-H2 does not speak Wifi. If you want to play, I suggest getting a ESP32-C6-DevKitC-1. Other options also exist, which the
Read this in great detail:

If you want to play, I suggest getting a ESP32-C6-DevKitC-1. Other options also exist, which this wonderful article also talks about:

Here I show a screenshot of my test ESPHome config of the C6-Devkit. I purposefully leave it as a screenshot only, as all the options are copied from the 2 articles linked above. Read them and you too shall have all the resources you need.
As I said, Wifi needs to be disabled to enable Thread.

I have the RGB LED on the dev board in Home Assistant!

You can OTA update over Thread! It takes a minute (seriously). It’s not molasses slow, but it is noticeably slower than USB or Wifi flashing. And that was with the ESP talking directly to the dongle, a foot apart, with no other nodes in between. But still, the fact that it’s possible amazes me. For your playing/ development, I suggest saving yourself some perception units and connecting to the ESP32-C6 dev board over USB for flashing and reading the logs afterwards.

And lastly, if you’ll recall the config that I changed to port 8082, this is what lives there! You can load that up in your browser, and go to the Topology tab to see what your Thread network is up to :slight_smile:

I hope this helps someone!

22 Likes

Thank you so much for sharing this. Incredibly useful guide, cut through all of the other outdated fluff.

2 Likes