Sonoffs Zigbee 3.0 USB Dongle Plus Firmware

Hello. I recently purchased Sonoffs Zigbee 3.0 USB Dongle Plus. People are talking about flashing the dongle in order to upgrade the firmware.

Could you please explain why? And how to know whether a firmware is ‘safe’ and suitable or not?

I purchased this dongle:
There’s a tutorial here: HOW TO - Sonoff Zigbee 3.0 Dongle Plus in Home Assistant (Flash, Update, Zigbeemqtt & MQTT Broker) - YouTube
Which recommend flashing with this firmware: Z-Stack-firmware/coordinator/Z-Stack_3.x.0/bin at master · Koenkk/Z-Stack-firmware · GitHub

Is that the right thing to do?


Watching this thread.

I wondered too. I bought this dongle a few months ago and it’s working fine, right out of the box.
I’ve also seen the flashing videos, but nobody ever says what the reason is… just to be current?
Is there something I’m missing out on… other than being current?
At the moment I’m operating on the, “if it works don’t fix it” plan.


P.S. I’m running this dongle with ZHA, not MQTT anyway.

Early units shipped with firmware that had known issues. Upgrading was a necessity, unless you were very lucky with your device mix.

I don’t know what current firmware units ship with, it could (and should) have been updated by now. What version shows on the device page?

I’ve bought several sticks recently, but haven’t bothered checking what firmware was on them. I scripted the flash process with the first stick I bought, so flashing now takes all of 30 seconds (if that).

Thanks for your feedback. Could you please share a link to where you would download the firmware from? Thanks.

Below is the script I use to update the firmware under Linux. I run it from my HA container since all the cc2538-bsl pre-reqs are already installed.

There is no need to open the dongle and press buttons. Just plug in the stick and run. Much easier than all the Windows nonsense folks like to suggest. You may need to disable ZHA/Z2M if they have control of the port.

This is a VERY QUICK and VERY DIRTY script, it wasn’t really meant for public consumption. Maybe someone can do a proper version.


# $1: dev or master
# $2: router or coordinator
# $3: ttyUSB port number

# There is absolutely NO ERROR CHECKING.

# Must be run from a valid python environment.
# The HA Docker container has all requirements installed.


cd /
rm -rf $basepath
mkdir $basepath
cd $basepath


# No attempt is made to use github api to download latest versions.
# Urls will need to be edited to point to correct files as updates are posted to github.
mkdir master
cd master
# Master branch coordinator as of 5/11/22
for f in *.zip; do unzip $f; done 

cd ..
mkdir dev
cd dev
# Dev branch coordinator as of 5/11/22
for f in *.zip; do unzip $f; done

cd ..
python $basepath/ -evw -p /dev/ttyUSB$3 \
  --bootloader-sonoff-usb  $basepath/$1/*$2*.hex

cd /config
rm -rf $basepath


Didn’t you share the link in your first post?

I shared a link to a repo which belongs to koenkk - which doesn’t seem affiliated to the manufacturer in any ways. So I was wondering if others use the same. Apparently so.

I confirm koenkk’s github is the best and most convenient place to get them.

Thanks for the confirmation!

I’ve gone here (Z-Stack-firmware/coordinator/Z-Stack_3.x.0 at master · Koenkk/Z-Stack-firmware · GitHub) to get the apparent latest update - but I don’t know which link precisely I’m supposed to follow for the download.

If I click the link for “go to file” it merely takes me to a page filled with links… yay for clear & comprehensive web pages. I mean, in my day, going to a file meant - go to a file - not a gigantic stack of files with no explanation. Silly me, eh!

There’s a table in the bin folder that lists which file to use for which hardware.
If your hardware is SONOFF Zigbee 3.0 USB Dongle Plus, then you need this file: CC1352P2_CC2652P_launchpad_*.zip

I flashed mine with python, following this tutorial: Flash Sonoff Zigbee 3.0 USB Dongle Plus With Python For Use In Home Assistant - YouTube


By sheer fluke I happened to stumble upon that somehow too and managed to flash my Sonoff Z3+ using the disassemble method … I just think it a great shame things are not laid out as clearly as they could/should be.

Do a PR. Documentation is easy to fix.

Excuse my ignorance, what’s a PR?

1 Like

Sorry, pull request.

And what is a Pull Request, exactly? It sounds like something that might cost £15 from the local drug dealer’s girlfriend…


Too much assumption folks here know the open source development terms.

A pull request is a “request” to the HA devs that they “pull” code from your repository into Home Assistant.

In this case it would not be computer code, but just documentation text. The same platform (github) supports both in HA’s case. See Home Assistant · GitHub.

Probably too much to expect a casual user to get into the intricacies of learning all that’s necessary, but I guess it doesn’t hurt to ask.

1 Like

LOL it’s a github thing. It’s how to suggest changes to code or documentation on github.

Thanks for the elaboration, folks… and apologies for lowering the tone there.

No apologies needed. Assumptions “everyone’s a dev” is a common problem in open source communities.