Firmware modules and sticks on Silicon Labs chips
Hint
If the bootloader is already present (the module has been pre-flashed), you can proceed to Write the main firmware.
Flashing the bootloader
The bootloader is flashed through the JTAG interface.
You can use the utility Simplicity Commander to flash the bootloader.
Linux version of the utility: Simplicity Commander Linux.
Unpack the archive and run the utility. If the flashing procedure is performed with a Silicon Labs debug board, then the Kit window should display information about it, for example:
Kit: EFR32xG21 2.4 GHz Mesh Network Kit
WSTK6006 Rev. B04
Firmware version: 1v3p4b1088
JLink serial number: ...
VCOM port: ttyACM1
To flash the bootloader, open the Flash tab, select the desired file for flashing with the Browse… button and flash the bootloader with the Flash button.
Writing the main firmware
If the bootloader is already written to the microcontroller, you can update the firmware with the utility Elelabs EZSP Firmware Update Utility.
Installing the utility:
git clone https://github.com/Elelabs/elelabs-zigbee-ezsp-utility.git
cd elelabs-zigbee-ezsp-utility
Create a Python virtual environment:
python3 -m venv .venv
source .venv/bin/activate
Hint
You may need to install the python3-venv
package with the command apt install python3-venv
.
Installing dependencies:
pip3 install -r requirements.txt
Set the device to be flashed in bootloader mode.
Hint
To switch to bootloader mode, see the device documentation: Zigbee USB sticks and Zigbee modules PCBA.
Check the connection to the board using the command:
python3 Elelabs_EzspFwUtility.py probe -p <PORT>
where PORT
is the name of the serial port to which the board is connected, for example /dev/ttyUSB0.
Example output of the program in loader mode:
2021/12/01 01:01:01 Elelabs_EzspFwUtility: EZSP adapter in bootloader mode detected:
2021/12/01 01:01:01 Elelabs_EzspFwUtility: Gecko Bootloader v1.12.00
To update the firmware, use the command:
python3 Elelabs_EzspFwUtility.py flash -f <FW_FILE> -p <PORT>
where
FW_FILE
- firmware file, for example ncp-uart-sw.gbl.PORT
- the name of the serial port to which the board is connected, for example /dev/ttyUSB0.
Approximate program output:
2021/12/01 01:01:01 Elelabs_EzspFwUtility: EZSP adapter in bootloader mode detected:
2021/12/01 01:01:01 Elelabs_EzspFwUtility: Gecko Bootloader v1.12.00
2021/12/01 01:01:01 Elelabs_EzspFwUtility: Allready in bootloader mode. No need to restart
2021/12/01 01:01:02 Elelabs_EzspFwUtility: Successfully restarted into X-MODEM mode! Starting upload of the new firmware... DO NOT INTERRUPT(!)
.....
2021/12/01 01:01:52 Elelabs_EzspFwUtility: Firmware upload complete
2021/12/01 01:01:52 Elelabs_EzspFwUtility: Rebooting NCP...
2021/12/01 01:01:57 Elelabs_EzspFwUtility: Generic EZSP adapter detected:
2021/12/01 01:01:57 Elelabs_EzspFwUtility: Firmware: 6.9.2-0
2021/12/01 01:01:57 Elelabs_EzspFwUtility: EZSP v8
After successful flashing if you check the board status:
python3 Elelabs_EzspFwUtility.py probe -p /dev/ttyUSB0
It will be taken out:
2021/12/01 01:01:57 Elelabs_EzspFwUtility: Generic EZSP adapter detected:
2021/12/01 01:01:57 Elelabs_EzspFwUtility: Firmware: 6.9.2-0
2021/12/01 01:01:57 Elelabs_EzspFwUtility: EZSP v8