Skip to content

700 series Controller Firmware Updates (Linux)

Keith Pine edited this page Jan 27, 2023 · 117 revisions

Overview

This guide describes where to download Over-The-Wire (OTW) firmware upgrade files for Z-Wave 700 and 800-series controllers, and how to flash the controllers using freely available tools.

If using unofficial tools does not appeal to you, stop now and follow your vendor's official instructions, or contact them directly for support. See Disclaimer.

Table of Contents

Disclaimer

⚠️ While much effort has been made to provide accurate and up-to-date information and instructions, use this guide at your own risk. No warranty is implied nor will the author be liable for any damages arising from the use of this guide.

Firmware Downloads

The latest certified release is 7.18.4 via the Gecko SDK v4.1.4. Not all manufacturers support the latest version.

Most controllers use the stock firmware images distributed by Silicon Labs via the Gecko SDK, and vendors may distribute these identical files on their own websites. The Gecko SDK firmware may be newer than what some vendors officially provide, and in many cases you can just install these newer versions without issue. However, contact your vendor's support before installing an unsupported version from a newer Gecko SDK, there may be reasons why they haven't updated to the latest.

Some controllers use custom firmware that is not the same as the Gecko SDK firmware. Be sure to confirm whether your device uses a custom firmware or not before downloading and installing files from other sources.

We recommend always using the vendor provided files and versions to reduce the risk of bricking your controller. Use other versions and files at your own risk.

The following are the officially supported firmware versions and download links for well known controllers:

Products Version Download URL md5sum
Aeotec Z-Stick 7
Aeotec Z-Pi 7
7.18.1 Download abbc9a40ab1eaaef0b3cc4fa1daed366
HomeSeer SmartStick+ G3 7.18.2 Download a39fe3dbe638e1d021c2049d9f450e4a
Silicon Labs UZB-7 (SLUSB001A) 7.18.4 Download 243e8f3b99ee636c893694fbb6291dac
Zooz ZST10 700 Z-Wave Stick 7.18.1 Download 03b6939d350b14289ce7fdee250cfeca
Zooz ZST39 800 Long Range Z-Wave Stick 7.18.3 Download 239008bb7111b323b29dcedbdcde372c

Before flashing any firmware, verify the checksum of the downloaded file with the md5sum utility and compare with the values listed here.

For further details, select your product:

For alternative download options, see other downloads.

Missing a product? Is a version out of date? Let us know by submitting an issue.

Aeotec Z-Stick 7 or Z-Pi 7

The Z-Stick 7 and Z-Pi 7 controllers are a BRD4206A radio board (EFR32ZG14 chipset).

See Update Z-Stick 7 with Windows or Update Z-Stick 7 with Raspian OS / RPi for the official Aeotec update instructions.

Supported version: 7.18.1

MD5 checksum: abbc9a40ab1eaaef0b3cc4fa1daed366

Everspring SA370

The Everspring SA370 controller uses a ZGM130S module. There are currently no official update instructions or downloads available.

Known working version: 7.17.2

MD5 checksum: 6cc0961168d209221869bdfd64d5a138

This device may use the same files as the HomeSeer SmartStick+ G3 and Zooz ZST10 700 since it shares the same Z-Wave module. Use those files at your own risk!

HomeSeer SmartStick+ G3

The SmartStick+ G3 controller is a BRD4202A radio board (ZGM130S module).

See Updating SmartStick+ Firmware for the official HomeSeer update instructions. The latest versions are always available at Firmware Downloads.

Supported version: 7.18.2

MD5 checksum: a39fe3dbe638e1d021c2049d9f450e4a

A bundle containing the latest firmware file and the PC Controller software is also available for download. This is an easy alternative if a Windows PC is available.

Silicon Labs UZB-7 (SLUSB001A)

The UZB-7 controller is a BRD4206A radio board (EFR32ZG14 chipset).

See Z-Wave 700: OTW of Controller or Z-Wave 700: Programming UZB7 Controller Stick for official Silicon Labs update instructions. As this is a developer reference board with no official support, the latest version of firmware is listed.

Latest version: 7.18.4

MD5 checksum: 243e8f3b99ee636c893694fbb6291dac

Z-Wave.Me RaZberry 7

⚠️ The RaZberry 7 controllers use custom firmware. Do not follow this guide or use any of the referenced firmware files. Visit UZB/RaZberry Firmwares for firmware and support.

Zooz ZST10 700 Z-Wave Stick

The Zooz ZST10 700 Z-Wave Stick controller is a BRD4202A radio board (ZGM130S module).

See How to Perform an OTA Firmware Update on Your ZST10 700 Z-Wave Stick for the official Zooz update instructions.

Supported version: 7.18.1

Don't forget to unzip the download, which contains the actual gbl file.

MD5 checksum: 03b6939d350b14289ce7fdee250cfeca

Zooz ZST39 800 Long Range Z-Wave Stick

The Zooz ZST39 800 Long Range Z-Wave Stick is an 800-series controller, with an unknown radio board (EFR32ZG23A chipset).

This device uses a custom firmware, so you should not use any of the generic Silicon Labs firmware.

The firmware file is not posted publicly. You must sign up for a support account and register your device. Once approved, you will have access to the Zooz OTA Firmware Files page where the firmware can be downloaded.

Supported version: 7.18.3

MD5 checksum: 239008bb7111b323b29dcedbdcde372c

Other Downloads

By Radio Board

If you know your device's radio board identifier you can download the file directory from Silicon Labs on GitHub, from the gbl directory. Use the file filter and filter by string zwave_ncp_serial_api_controller_.gbl. Do not use the files ending in v255, these are for developer testing purposes only.

With the 7.18 SDK, firmware files are no longer designated by chipset or module identifiers. Instead, the files are specific to radio boards. There are a variety of chipsets and radio boards a manufacturer can choose from. Verify with the vendor of your controller which radio board and firmware file is the correct one.

Latest firmware downloads for common board IDs:

  • BRD4202A - MD5 checksum: a9bde521d27c065f7a867b7ff94b0c05
  • BRD4206A - MD5 checksum: 243e8f3b99ee636c893694fbb6291dac

Zip Archive Download

Download the demo-applications.zip archive for all of the firmware files.

Firmware Update Instructions

The easiest way to update the controller firmware is with Z-Wave JS UI (ZUI). This is new and unproven functionality (as of v8.8.0), so keep that in mind when you choose a method.

Z-Wave JS UI Update Method

⚠️ Avoid ZUI until issue https://github.com/zwave-js/node-zwave-js/issues/5360 is fixed.

  1. Navigate to the ZUI control panel UI.
  2. Select "ACTIONS" in the top right, then Select "ADVANCED ACTIONS"
  3. Select the "UPDATE" button under "Firmware update OTW".
  4. Read the warning messages.
  5. Select "File" to open the file selector, and choose the firmware file you downloaded from a source above.
  6. Select "UPDATE" to start the OTW update. Progress will be displayed in the message box on the top right of the UI.

Manual Update Methods

If you are not using Z-Wave JS UI, then choose one of the following manual methods:

  1. Docker
  2. Host

If you use Home Assistant OS (HAOS), see the special instructions.

Or skip directly to the bootloader upload instructions.

Docker Update Method

The kpine/zwave-js-server Docker image provides a configuration-free method to update the controller firmware.

  1. Download or copy the controller firmware file into the /tmp/fw directory on the host, or any other preferred location.

  2. Stop any running Z-Wave JS application so it doesn't interfere with the update process. Some users have reported that this step isn't necessary.

  3. Run the update-firmware command via Docker:

    docker pull ghcr.io/kpine/zwave-js-server:latest
    
    docker run --rm -it \
       --device /dev/ttyUSB0:/dev/zwave \
       --volume /tmp/fw:/fw \
       ghcr.io/kpine/zwave-js-server:latest \
       update-firmware
  4. Approximately 10 seconds after the container starts, the bootloader menu will display. After it is displayed, continue to the bootloader update process instructions.

Notes:

  • The USB controller host device path must be mapped to /dev/zwave in the container (--device /dev/ttyUSB0:/dev/zwave).
  • The directory that contains the firmware file should be mapped to the /fw directory in the container (--volume /tmp/fw:/fw).
  • The update-firmware command uses minicom to connect to the controller's bootloader console
  • The docker run command must be interactive (-it) in order to interact with minicom and upload the firmware file.
  • The --rm argument deletes the container after the process is finished.

Host Update Method

The update can be performed with a script on the controller host using locally installed minicom and lrzsz packages. The script requires Bash.

  1. Download the firmware update script.

    curl -sLO https://github.com/kpine/zwave-js-server-docker/raw/d46d19f9088a11f739a35f30968c7c466d54445d/scripts/zfw-update.sh
  2. Download or copy the controller firmware file to the /tmp/fw directory, or any other preferred location.

  3. Run the zfw-update.sh script with the appropriate options. Use bash zfw-update.sh -h for help.

    # update /dev/ttyUSB0 with upload path /tmp/fw
    bash zfw-update.sh
    
    # update /dev/ttyACM0 with upload path $HOME/fw
    bash zfw-update.sh -d /dev/ttyACM0 -f $HOME/fw
  4. Approximately 10 seconds after the script starts, the bootloader menu will display. After it is displayed, continue to the bootloader update process instructions.

Notes:

  • minicom and lrzsz packags are required and must be installed first. For example:

    Debian or Ubuntu:

    apt install -y minicom lrzsz

    Alpine:

    apk add minicom --no-cache && \
    apk add lrzsz --no-cache --repository=https://dl-cdn.alpinelinux.org/alpine/edge/testing
  • The script must be run as the root user, or a regular user that has read/write access to the serial device (e.g. a member of the dialout group).

  • The script generates a minicom configuration file and saves it as $HOME/.minirc.zwave. This file is re-created everytime the script is run. minicom does not support non-file configurations, so it is required to use this file.

  • The xmodem binary (provided by lrzsz) is named differently depending on the OS. On Debian and Ubuntu it is called sx. On Alpine Linux and MacOS it is called lsx. The script attempts auto-detect one of these binaries and if not found, will report an error. In that case, be sure to install lrzsz, and provide one of sx or lsx in your PATH.

HAOS Instructions

If you are using Home Assistant OS (HAOS) with one of the Z-Wave JS add-ons you will still be able to update the firmware. To do so requires installing the SSH & Web Terminal community add-on (not to be confused with the Core Terminal add-on). This add-on allows access to USB serial devices and installing packages, but in order to do these you must disable Protection mode.

  1. Install and configure the SSH & Web Terminal add-on
  2. Disable Protection mode
  3. Start the add-on
  4. SSH into the add-on or use the Web UI
  5. Stop the Core Z-Wave JS or community Z-Wave JS UI add-ons

⚠️ If you use the SSH & Terminal Web UI, be aware that it starts tmux. Tmux and minicom both use CTRL-A to send commands. If you are updating inside tmux, you must send CTRL-A CTRL-A to execute any minicom commands. When you SSH from an external client, tmux is not started.

Once logged in, you should see your USB controller's device path, usually /dev/ttyUSB0. If not, you'll need to troubleshoot and determine why. Ensure protection mode is disabled.

Go back to the host update instructions to continue, the instructions are the same. Note that when the SSH add-on restarts, any file outside of the /config directory is lost. If you want the script or firmware files to persist, save them in /config.

It is recommended to re-enable Protection mode once you are done with the update.

Notes:

  • The update script automatically detects when it is running inside the community add-on and will silently install the necessary software (minicom and lrzsz)

Bootloader Update Process

Once the bootloader menu is displayed it is time to upload the firmware file. If the menu is not visible, try pressing Enter a few times. The menu will look something like this:

Gecko Bootloader v1.5.1
1. upload gbl
2. run
3. ebl info
BL >
  1. Press 1 to upload the firmware. The text begin upload will be printed followed by the character C repeatedly (CCCC...), which indicates that the controller is waiting for an upload. If you would like to abort the upload and return to the menu, press Enter.

  2. While the C character is being printed repeatedly, press CTRL-A s to open the file upload dialog. Select xmodem and press Enter. Navigate the file selector so that firmware file is highlighted and select it with Spacebar, then press Enter to upload.

  3. When the upload finishes, Press 2 in the bootloader menu to run the new firmware. Some garbage characters will appear, meaning the firmware is running. Exit minicom with CTRL-A q and select Yes to exit.

  4. Start your Z-Wave JS application. Confirm the controller firmware version has changed to the expected version, either in the application UI or driver logs.

Clone this wiki locally