Skip to content

700 series Controller Firmware Updates (Linux)

Keith Pine edited this page Sep 30, 2022 · 117 revisions

Overview

This guide describes how to perform Over-The-Wire (OTW) firmware upgrades for Z-Wave 700-series (or later) 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: The zpc service 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.

Equipment Used

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 UZB-7 USB controller (SLUSB001A)
  • minicom version 2.7.1
  • lrzsz version 0.12.21

Other Unix-like OS may work with this guide if they support USB serial devices, minicom, and lrzsz.

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 [*].

Firmware Downloads

The latest certified release is 7.18.1.

Most controllers use stock firmware images distributed by Silicon Labs via the Z-Wave SDKs. Some vendors also distribute their own files, but usually these are identical to the Silicon Labs versions. Links to both files are provided when available. If in doubt, choose the vendor's file.

Select your product to continue:

For other download options, see alternative downloads.

Missing a product? 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.

MD5 checksum: abbc9a40ab1eaaef0b3cc4fa1daed366

Everspring SA370

The Zooz Everspring SA370 controller is the ZGM130S module but the radio board is currently unknown. It may be a BRD4202A or BRD4207A. Use those files at your own risk.

There are no official update instructions or downloads.

This section will be updated when the correct firmware files are known, and/or Everspring produces official instructions and downloads.

Refer to the 7.17.2 instructions otherwise.

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 SmartStick+ G3 controller does not yet officially support the 7.18 firmware, but testing is in progress. Refer to this forum post for details. This section will be updated once the upgrade is out of testing.

Refer to the 7.17.2 instructions otherwise.

Silicon Labs UZB-7

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.

MD5 checksum: abbc9a40ab1eaaef0b3cc4fa1daed366

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

The Zooz ZST10 700 controller is the ZGM130S module but the radio board is currently unknown. It may be a BRD4202A or BRD4207A. Use those files at your own risk.

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

This section will be updated when the correct firmware files are known, and/or Zooz produces updated instructions and downloads.

Refer to the 7.17.2 instructions otherwise.

Alternative Downloads

By Radio Board

If you know your device's radio board identifier you can download the file directory from Silicon Labs files on GitHub, from the gbl directory.

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 which radio board and firmware file is correct for your controller.

Zip Archive Download

Download the demo-applications.zip archive to download all firmware files at once.

Preparation

The preparation phase only needs to be performed once. Subsequent firmware updates can skip directly to installation. You can use the root user or any user that is a member of the dialout (or equivalent) group.

  1. Install minicom and file transfer utilities. Requires root user or sudo.

    Debian or Ubuntu:

    apt install -y minicom lrzsz

    Alpine:

    apk add --no-cache minicom && \
    apk add --no-cache --repository=https://dl-cdn.alpinelinux.org/alpine/edge/testing lrzsz
  2. Determine the path to the Z-Wave controller's serial device. For a UZB-7 and other 700-series USB controllers, this will typically be /dev/ttyUSB0. You can also use the unique path in /dev/serial/by-id.

  3. Set an environment variable for the USB path. This is used in the next step for your copy and paste convenience.

    export USBPATH=/dev/ttyUSB0
  4. Create a minicom configuration named zwave that configures the serial port for firmware uploads. This configures the following settings:

    • Serial port speed.
    • Hardware flow control disabled.
    • Hides all file transfer choices except xmodem upload.
    cat << EOF | tee ~/.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

    The configuration file is stored in your home directory. Ensure the port setting has your actual serial device path. If it shows $USBPATH, you skipped the export step above.

  5. Create the minicom bootloader script. This script activates the controller's bootloader, which is where the firmware update process is started.

    cat << EOF | tee ~/zwave-bootloader
    print Activating the controller's bootloader. It will appear in about 10 seconds...\n
    # soft-reset
    send "\1\3\0\10\364"
    sleep 10
    # activate the bootloader
    send "\1\3\0\47\333"
    EOF

Installation

These commands must be run as the same user the preparation phase was completed with, since the process uses the minicom config file that was saved to the home directory. Non-root users must be a member of the dialout (or equivalent) group to write to the device.

  1. Download or copy the controller firmware file to the /tmp directory.

  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. Start minicom with the bootloader script.

    minicom -S ~/zwave-bootloader zwave
  4. Approximately 10 seconds later the bootloader menu will display. Enter 1 to upload the firmware. The letter C will print 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
  5. Enter CTRL-A s to open the file upload dialog. xmodem will be the only option, so select it. Navigate the file chooser menu so that firmware file is highlighted and select it with Spacebar, then press Enter to upload.

  6. When the upload finishes, select option 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.

  7. Start the Z-Wave-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 version has changed to the expected version.

Disclaimer

⚠️ While the author has strived 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.

Clone this wiki locally