The XZG Multi-Tool is a browser-based flashing solution that enables hobbyists and developers to program Texas Instruments, Silicon Labs, Espressif, Arduino and Telink devices. It provides a simple, polished web UI that enables users to flash adapters directly from the browser, eliminating the need for client software installation.
The web front end performs local flashing via the WebSerial and WebUSB APIs, offering automatic device detection and convenient firmware flashing features. The bridge component (WebSocket β TCP) enables headless or remote hosts to expose local serial ports via TCP and connect them to the web UI. The bridge also supports connecting to remote TCP-based adapters, enabling access to networked adapters from any browser.
- π Work with various devices locally via WebSerial/WebUSB or remotely via bridge.
- π Flash firmware from a local file or select from a provided list.
- π List of cloud firmware with descriptions
- π¦Ύ Automatically detects chip model, flash size, IEEE, and firmware version
- πΎ Backup, restore, and erase NVRAM
For a complete, up-to-date list of supported devices, features, and device-specific notes, see the devices table.
from Chrome or Edge
Because browsers don't support TCP connections you need to use WebSocket β TCP bridge that can forward WebSocket clients to TCP hosts and as option expose local serial ports over TCP.
You have some options:
Just click on the button above or add this repository to your Home Assistant add-on store manually and then install the add-on to expose remote TCP / host serial devices to the web UI.
Prebuilt multi-arch images are published to GHCR on each release.
Latest image: ghcr.io/xyzroe/XZG-MT:latest
Special version image: ghcr.io/xyzroe/XZG-MT:<tag> (e.g. v0.1.1)
Running instructions:
- Run (basic):docker run --rm -p 8765:8765 ghcr.io/xyzroe/XZG-MT:latest- Run with mDNS:
docker run --rm --network host ghcr.io/xyzroe/XZG-MT:latest- To expose a host serial device to the container add
--device(Linux):
docker run --rm --network host \
--device /dev/ttyUSB0:/dev/ttyUSB0 \
ghcr.io/xyzroe/XZG-MT:latest- Customize port, advertised host, disable serial scan and enable debug logs:
docker run --rm \
-e PORT=9000 \
-e ADVERTISE_HOST=192.168.1.42 \
-e DEBUG_MODE=true \
-p 9000:9000 \
ghcr.io/xyzroe/XZG-MT:latestDownload a ready-to-run binary from Releases, make it executable (Linux/macOS), and run.
β‘ How to run:
- Run:
XZG-MT-windows-*.exeor double click
Select the correct binary for your platform
- linux/arm64 β aarch64_generic, aarch64, arm64
- linux/arm β armhf, arm_cortex-a7_neon-vfpv4, arm_cortex-a9_neon
- linux/amd64 β amd64
- linux/386 β i386 / 32-bit x86
- linux/mips β mips_24kc
- linux/mipsle β mipsel_24kc
- linux/mips64 β mips64
- linux/mips64le β mips64le
Note: linux/arm targets ARMv7 (GOARM=7). MIPS and MIPSLE builds use GOMIPS=softfloat for compatibility with older devices (for example, MT7688).
- Make executable:
chmod +x ./XZG-MT-linux-*- Run:
./XZG-MT-linux-*or double click
- Make executable and remove quarantine:
chmod +x ./XZG-MT-darwin-*
xattr -d com.apple.quarantine ./XZG-MT-darwin-*- Run:
./XZG-MT-darwin-*or double click
To run on custom port: ./XZG-MT-* 9999
For step-by-step guides and detailed documentation, explore the following:
- π How-To Guides: Start here
- π Web UI: README
- π WebSocket bridge β README
- π Home Assistant add-on: README
- π€ AI Generated Wiki: DeepWiki
If you find this project useful and want to support further development, you can sponsor or donate to the author:
Thank you β every little contribution helps keep the project alive and maintained. π
If you find this project useful, please consider giving it a β on GitHub!
Below are key technologies used across the projects (click the badges for quick context):
- web-page/ β The web frontend. Contains source TypeScript, build scripts, favicon and static assets.
- bridge/ - The small Go app that bridges WebSocket β TCP, supports mDNS discovery and exposing local serial ports as TCP servers.
- xzg-multi-tool-addon/ β Home Assistant add-on wrapper for the bridge.
- docs - Folder consisting the documentation about this project.
- LICENSE β License for the whole repository (MIT).
- repository.json β repository metadata.
MIT β see LICENSE for details.
Built on the shoulders of giants:
- Texas Instruments CCXX52 and CC2538 β inspired by
- cc2538-bsl by Jelmer Tiete
- zigpy-znp by Open Home Foundation
- Silicon Labs β inspired by
- universal-silabs-flasher by Nabu Casa
- Espressif Systems β powered by
- esptool-js by Espressif Systems
- Texas Instruments CC25XX
- Π‘Π‘ Debugger β inspired by
- cc-tool by Scott Gustafson
- Π‘Π‘ Loader β inspired by
- CC Loader by RedBearLab
- CC Loader fork by Timo Kokkonen
- Π‘Π‘ Debugger β inspired by
- Arduino β inspired by
- arduino-web-uploader by David Buezas
- Telink - inspired by
- TlsrComProg825x by pvvx Viktor
- TlsrComProg by pvvx Viktor
- TLSRPGM by pvvx Viktor

