Updating the Sonoff ZigBee Plus Dongle

Whilst using Home assistant on the new Optiplex hardware I recently came acquired (read up on that here), I noticed that my Sonoff Zigbee Plus dongle wasn't working as good as my previously used Conbee II dongle.

I have had this Sonoff Zigbee dongle for a while since my Dotnetsheff talk on home assistant and never really used it since. With that being over a year ago I thought it would be best to get it updated, on top of this it would also allow me to get the latest features and more supported devices than from when it shipped in December 2021.

Prep the environment

I'm using a pretty fresh OS build, so I had to install and setup all of the needed things from scratch, which I will highlight and give an overview of below.

Download Python 3 (at the time of writing this is version 3.11.3) from the following link https://www.python.org/downloads/

During the installation setup, make sure you enable PATH, this will be needed for the following python scripts.

Driver support

Before we continue, make sure your dongle drivers are up to date, if you go to device manager and see the below then you will need to run the next step and update the drivers for your dongle.

Go to the following URL https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers?tab=downloads within here make sure you download the top drivers labelled CP210x Universal Windows Driver.

if your not sure how to install driver files. Simply extract all the files and within Device Manager, right click install update driver, then select "Browse my computer", Click Browse and then locate your file. Click Next to install the drivers. After you have the correct drivers installed, take a note of the COM port it's using (COM 3) in my case.  

Setup the environment and backup the current firmware

With your drivers installed / updated, lets get Python updated and create a new folder for the Firmware files.

Load up PowerShell and run the below to install and update PIP:

python -m pip install --upgrade pip

Next up install the bellow components needed to run the python Script:

pip install wheel pyserial intelhex python-magic
pip install zigpy-znp

With the above components and libraires installed next we can save the current firmware running on our Sonoff Zigbee Dongle:

python -m zigpy_znp.tools.nvram_read COM3 -o ZigbeeFWBackup.json

Creating our working directory

create a new lower level file for any files we need later, within PowerShell run the below again:

mkdir /../Sonoff

This will create a new folder on the root level of your C:/ drive. We shall use this later on to place our firmware files in to use for flashing.

Go to the below URL and download the bootloader:

https://github.com/JelmerT/cc2538-bsl

Then extract this on our C:/Sonoff folder we created a minute ago.

To download the firmware go to the following link, place this in the same folder as your bootloader:
https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator/Z-Stack_3.x.0/bin

We need the top on in the list as shown below:

(at the time of writing this was version CC1352P2_CC2652P_launchpad_*.zip)

Time to flash

Within your windows, hold down the shift key and right click, now click (Open PowerShell window here)

Run the below script making sure to check the version is the same as the one you downloaded earlier and within your working directory along with the correct COM port.

python cc2538-bsl.py -p COM3 -e -v -w --bootloader-sonoff-usb CC1352P2_CC2652P_launchpad_coordinator_20221226.hex

let this run and you should then have a fully up to date Sonoff ZigBee Dongle.

Till the next one