universal-silabs-flasher
Tool to flash firmware onto any Silicon Labs radio running EmberZNet, CPC multi-PAN, or just a bare Gecko Bootloader
What it is and what it does
Universal Silicon Labs Flasher is a command-line tool that automates firmware updates for Silicon Labs radios (EmberZNet, CPC multi-PAN, or bare Gecko Bootloader). It handles the entire process: detecting the device, entering bootloader mode via one of several reset methods, and transferring a GBL firmware image over XMODEM with built-in validation and checksum verification both before and after transfer.
The tool is designed for hardware integrators and developers working with Silicon Labs radio modules in IoT and mesh networking contexts. It supports multiple device types (Yellow, SkyConnect, Home Assistant Connect ZBT-2, Sonoff ZBDongle-E) through both explicit bootloader reset configuration and predefined device profiles. It can also write or verify IEEE addresses on devices running EmberZNet firmware.
Use it for:
- Update firmware on Silicon Labs radio adapters used in Home Assistant or other IoT hubs without manual bootloader entry.
- Flash custom or vendor-specific EmberZNet, CPC, or Spinel firmware images onto development boards during prototyping.
- Automate firmware deployment across multiple identical radio devices in production or lab environments.
- Recover or reprogram IEEE addresses on EmberZNet devices as part of device provisioning workflows.
- Probe connected radios to identify their current application type and bootloader capabilities before flashing.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Flashes firmware onto Silicon Labs radios (EmberZNet, CPC, Spinel) by automatically entering bootloader mode and transferring images via XMODEM, with built-in GBL validation and checksum verification.
Yes, if you work with Silicon Labs radios and need reliable, validated firmware flashing. Low install friction, active maintenance, no known vulnerabilities, and a focused scope make it a solid choice for the specific task. GPL-3.0 copyleft is a consideration only if you plan to redistribute modified versions commercially. The 116-day recency and 174 GitHub stars suggest active use in the Home Assistant ecosystem.
Install
universal-silabs-flasher on PyPI
pip
pip install universal-silabs-flasheruv
uv add universal-silabs-flasherpoetry
poetry add universal-silabs-flasherInstalling universal-silabs-flasher
Before you install
Low friction: pure Python wheel with no compiled dependencies. Active maintenance (last commit 2026-04-20), modest but steady adoption (83277 monthly downloads, top 15000 tier). Requires Python 3.11+.
License in practice
GPL-3.0 copyleft license: any derivative work or distribution must also be open-source under GPL-3.0. Suitable for internal tools and open-source projects; review required before commercial redistribution.
Quickstart
pip install universal-silabs-flasher
universal-silabs-flasher --device /dev/ttyUSB0 flash --firmware image.gbl
Requires Python 3.11 or later; device must be connected via serial port and support one of the bootloader reset methods (yellow, ihost, slzb07, rts_dtr, baudrate) or a predefined profile.
Verify before relying
- Whether gpiod is always required at runtime or only for specific reset methods (e.g., GPIO-based resets).
- Compatibility matrix across Silicon Labs radio models and firmware versions.
- Whether IEEE address writes are reversible or truly permanent on all firmware versions.
Package facts
| License | GPL-3.0 (copyleft) |
| Python support | supports the current Python release (>=3.11) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 8 — aiohttp, tqdm, zigpy, crc, bellows, gpiod, coloredlogs, typing_extensions |
| Maintenance | actively maintained — 116 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 83,277/month — #14,084 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: universal_silabs_flasher-1.1.0-py3-none-any.whl
Tags
More Utilities packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
charset-normalizerDetects and normalizes text encoding from…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
pluggyPluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
PygmentsPygments is a syntax highlighter that colorizes…
permissive · top 100 on PyPI
sixSix provides utility functions to write Python…
permissive · top 100 on PyPI
bellowsbellows is a Python library that implements the…
copyleft · top 15,000 on PyPI
esptoolesptool is a serial utility for flashing,…
copyleft · top 5,000 on PyPI
uefi-firmwareParses, extracts, and recreates UEFI firmware…
permissive · top 15,000 on PyPI
zigpy-zigateProvides a Python 3 driver for ZiGate Zigbee…
copyleft · top 15,000 on PyPI
imgtoolimgtool signs and manages cryptographic keys…
permissive · top 5,000 on PyPI
tockloaderTockloader is a command-line tool for…
unclear · top 15,000 on PyPI
zigpy-znpAdds support for Texas Instruments ZNP Zigbee…
copyleft · top 15,000 on PyPI
spsdk-mcu-linkA plugin for SPSDK that adds support for NXP…
permissive · top 15,000 on PyPI
libuuuPython wrapper for libuuu, a library for NXP…
permissive · top 15,000 on PyPI
zigpy-xbeeEnables zigpy to communicate with XBee-based…
copyleft · top 15,000 on PyPI