-
Notifications
You must be signed in to change notification settings - Fork 10
700 series Controller Firmware Updates (Linux)
This guide describes how to perform Over-The-Wire (OTW) firmware upgrades for Z-Wave 700-series controllers in a Linux environment, using freely available tools.
If using command line tools does not appeal to you, stop now and follow your vendor's official instructions, or contact them directly for support. See Disclaimer.
Other options:
- Temporarily relocate your USB controller to a Windows PC and use the Silicon Labs PC Controller software
-
zw_programmer: The Z/IP Gateway software includes this CLI utility to program the controller firmware. This requires obtaining access to the Z/IP Gateway SDK download and the ability to compile it, which will be difficult for most. -
zpc: Thezpcservice provided by the Silicon Labs Unify SDK has the ability to program the controller firmware. This requires obtaining access to a private GitHub project and the ability to compile it, which will be difficult for most.
The following hardware and software were used in the creation of this guide:
- Platform: Raspberry Pi4
- OS: Raspberry Pi OS 64-bit (Debian 10)
- Silicon Labs UZB7 USB controller (SLUSB001A)
- minicom version 2.7.1
- lrzsz version 0.12.21
Other Unix-like OS that support USB serial devices, minicom and lrzsz may work with this guide.
Confirmed to work with:
- Raspberry Pi4 and Ubuntu 20.04 64-bit [*]
- Raspberry Pi2 Model B and Raspberry Pi OS 32-bit
- Synology NAS with a Debian 10.9 Docker container [*]
Confirmed not working:
- Apple Silicon and MacOS, using homebrew installed lrzsz and minicom [*]. Update seems to have no effect.
The latest recommended firmware version is 7.17.2.
Most controllers use stock firmware images distributed by Silicon Labs via the Z-Wave SDKs. Some vendors also distribute their own files, but these are identical to the Silicon Labs versions.
Select your product to view the available downloads:
- Aeotec Z-Stick 7 or Z-Pi 7
- Silicon Labs UZB7
- Zooz ZST10 700
- Everspring SA370
- HomeSeer SmartStick+ G3
- Z-Wave.Me RaZberry 7
See Alternative Downloads for other download options.
Missing a product? Let me know by submitting an issue.
The Z-Stick 7 and Z-Pi 7 controllers use the EFR32ZG14 chipset.
See Update Z-Stick 7 with Windows or Update Z-Stick 7 with Raspian OS / RPi for official Aeotec update instructions.
MD5 checksum: d88e9e94d3df62c0c4d5c591fd88f5b6
MD5 checksum: 46ce88e5e61db37b9e96d906dcbc48a8
The UZB7 controller uses the EFR32ZG14 chipset.
See Z-Wave 700: OTW of Controller or Z-Wave 700: Programming UZB7 Controller Stick for official Silicon Labs update instructions.
- Download from Silicon Labs
MD5 checksum: d88e9e94d3df62c0c4d5c591fd88f5b6
- Download from Silicon Labs
MD5 checksum: 46ce88e5e61db37b9e96d906dcbc48a8
The Zooz ZST10 700 controller uses the ZGM130S. Only the US region is officially supported.
See How to Perform an OTA Firmware Update on Your ZST10 700 Z-Wave Stick for the official Zooz update instructions.
MD5 checksum: 6cc0961168d209221869bdfd64d5a138
The Everspring SA370 controller uses the ZGM130S. Only the US region is officially supported. No vendor download is known.
- Download from Silicon Labs
MD5 checksum: 6cc0961168d209221869bdfd64d5a138
The SmartStick+ G3 controller uses the ZGM130S chipset. Note that the vendor provided download is a bundle that contains both the firmware file and the Windows PC Controller software.
See Updating SmartStick+ Firmware for the official HomeSeer update instructions.
MD5 checksum: 6cc0961168d209221869bdfd64d5a138
If you know your device's chipset, you can directly download the Silicon Labs files here.
| Chipset | Region | Firmware 7.17.2.406 | Checksum (MD5) |
|---|---|---|---|
| EFR32ZG14 | US | Download | d88e9e94d3df62c0c4d5c591fd88f5b6 |
| ZGM130S | US | Download | 6cc0961168d209221869bdfd64d5a138 |
| EFR32ZG14 | EU | Download | 46ce88e5e61db37b9e96d906dcbc48a8 |
| ZGM130S | EU | Download | 496d22f219b764277a88ba592b43c5a6 |
If you are in a region besides EU or US, you can download those region files by navigating to the GitHub SDK project's gbl directory and searching for the appropriate file. The listing may be truncated, so use GitHub's "Go to file" button to search for the file. See Chipset Information for details on the filename formats.
Download the demo-applications.zip release artifict file. This contains all firmware files for all devices and regions.
The two current chipsets for 700-series Z-Wave modules for gateways and controllers are the EFR32ZG14 and ZGM130S. The firmware file must match the chipset, otherwise the update will fail, so choosing the file that is specific to your device is important.
The firmware files have a .gbl file extension (Gecko Bootloader) and are named using the following format: ZW_SerialAPI_Controller_<VERSION>_<EFR32ZG14|ZGM130S>_REGION_<REGION>.gbl.
As of SDK v7.17.00, Silicon Labs distributes the firmware files along with the Gecko SDK on GitHub. These files are public and can be downloaded without requiring a developer account or using the Silicon Labs Simplicity Studio application.
All commands listed here are being executed as the root user, to avoid any problems with permissions.
-
Install minicom and file transfer utilities.
apt install -y minicom lrzsz
-
Determine the path to the Z-Wave controller's serial device. For a UZB7 and other 700-series USB controllers, this will typically be
/dev/ttyUSB0. -
Set an environment variable for the USB path. This is used in commands below for easy copy and paste.
export USBPATH=/dev/ttyUSB0 -
Create a minicom profile named
zwavethat configures the serial port for FW upload. This configures the following settings:- Set serial port speed.
- Disable hardware flow control.
- Hide all file transfer choices except xmodem upload.
cat << EOF > /etc/minicom/minirc.zwave # Machine-generated file - use "minicom -s" to change parameters. pu pname1 YUNYY pu pname2 YUNYY pu pname4 NDNYY pu pname5 NDNYY pu pname6 YDNYN pu pname7 YUYNN pu pname8 NDYNN pu pname9 YUNYN pu updir /tmp pu port $USBPATH pu baudrate 115200 pu bits 8 pu parity N pu stopbits 1 pu rtscts No EOF
This is a one time setting and isn't necessary for future upgrades. The profile settings are stored in
/etc/minicom/minirc.zwave. -
Download or copy the controller firmware file to
/tmp. -
Stop zwavejs2mqtt or other zwave-js application so it doesn't interfere. Some users have reported that this step isn't necessary.
All commands listed here are being executed as the root user, to avoid any problems with permissions.
-
Configure the serial port speed. minicom would normally do this, but we issue a couple commands from the shell.
stty 115200 cs8 -cstopb -F $USBPATH -
Soft-reset the controller and wait long enough for it to recover.
printf '\x01\x03\x00\x08\xf4' > $USBPATH && sleep 10
-
Drop the controller into the bootloader.
printf '\x01\x03\x00\x27\xDB' > $USBPATH && sleep 1
-
Start minicom to connect to the device console. Be sure to use the profile configured previously.
minicom -o zwave
-
Press ENTER (one or more times) and you'll see the bootloader prompt. Enter
1to upload the firmware. The letterCwill be printed repeatedly to indicate that the controller is waiting for an upload.Gecko Bootloader v1.5.1 1. upload gbl 2. run 3. ebl info BL > begin upload CCCC -
Enter
CTRL-A sto open the file upload dialog.xmodemwill be the only option, so select it. Navigate the menu so the firmware file is highlighted and select it with Spacebar, then press Enter to upload. -
When the upload finishes, select option
2in the bootloader menu to run the new firmware. Some garbage characters will appear, meaning the firmware is running. Exit minicom withCTRL-A qand selectYesto exit. -
Start zwavejs2mqtt or other zwave-js application. If for some reason you have soft-reset disabled in zwave-js (not recommended), be sure to issue a soft-reset prior to starting the application. Confirm the controller firmware has changed to the expected version.