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!