Flash Bruce firmware on the Lilygo T-Embed
Install the open-source Bruce firmware on your Lilygo T-Embed (ESP32-S3) directly from this page. Supports both the standard and CC1101 Sub-GHz hardware variants. You need Chrome, Edge or Firefox 151+ on a desktop computer and a USB-C data cable.
Which variant do I have — standard or CC1101?
Check the back of the T-Embed board for a CC1101 chip label:
- CC1101 chip present → select T-Embed CC1101 · with Sub-GHz radio in the Version list.
- No CC1101 chip → select T-Embed · standard.
Both builds run fine on either board, but Sub-GHz menus will only work when the CC1101 hardware is present.
How do I flash Bruce on the T-Embed?
Connect the T-Embed with a USB-C cable, click Connect, choose the serial port, select the correct variant, then click Flash. The board resets into flash mode automatically — no buttons to hold.
Which browsers can flash the T-Embed?
| Browser | Supported |
|---|---|
| Chrome / Edge (desktop) | Yes |
| Chrome (Android) | Yes |
| Firefox 151+ (desktop) | Yes — first use adds a permission add-on |
| Safari (macOS / iOS) | No |
| Firefox (Android) | No |
Browser flashing relies on the Web Serial API: Chrome and Edge on desktop, Chrome on Android, and — since Firefox 151 for desktop (May 2026) — Firefox. Safari and every browser on iOS are out; see Web Serial is not supported.
Troubleshooting
| Symptom | Fix |
|---|---|
| No port shows in the picker | Follow No serial port detected; the download-mode guide records the current vendor-source limitation for T-Embed. |
| Failed to connect | Reconnect and use Timed out waiting for packet header; do not guess an enclosure button sequence. |
| Sub-GHz menus show no radio | You flashed the CC1101 build on a standard board, or the board has no CC1101 hardware. Expected behavior. |
| Download / CORS error | The firmware host or proxy is briefly unreachable. Refresh and retry. |
| T-Embed reboots unexpectedly (e.g. on RF Scan) | Re-flash the default version — it is always the current upstream release, and Bruce rewrote its RF stack in 1.16 (2026-07-24) to fix a class of RF reboots. If it still happens on the newest release, report it with your board and the exact menu at the Bruce issue tracker. |
What is Bruce?
Bruce is an open-source firmware tool for ESP32 devices used in wireless and hardware research and education. Source code and releases are published at github.com/BruceDevices/firmware under the AGPL-3.0 license.
Frequently asked questions
Which Bruce version should I flash on the T-Embed?
Flash the default. This page always offers the current upstream stable release — Bruce 1.16.1 today — and it is preselected for you; the list is refreshed from the Bruce project on every build, so you never have to look up a version number. Older releases are published at github.com/BruceDevices/firmware if you specifically need one. Every build we flash is a complete image, so you can move between releases at any time with a single flash.
What is Bruce firmware?
Bruce is an open-source ESP32 multi-tool firmware (Sub-GHz, RF, IR, RFID/NFC, WiFi, BadUSB). It is community firmware (AGPL-3.0); this page flashes the upstream binary.
Does the Lilygo T-Embed enter flash mode automatically?
Yes. The T-Embed uses an ESP32-S3 with USB-Serial-JTAG, so the flasher resets it into the bootloader over USB automatically — just click Connect, no buttons needed.
Which version should I flash — standard or CC1101?
Select 'T-Embed CC1101' if your T-Embed has a CC1101 chip soldered on the back (the Sub-GHz radio variant). Select 'T-Embed · standard' if your board has no CC1101. The CC1101 build also runs fine on a standard board, but Sub-GHz menus will show no radio to drive.
Which browsers can flash the T-Embed?
Chrome or Edge on desktop, Chrome on Android, or Firefox 151+ on desktop. Flashing uses the Web Serial API; in Firefox the first connection also adds a permission add-on. Safari and every browser on iOS cannot flash.
WARNING
For educational and lawful testing purposes only. Comply with all applicable laws in your jurisdiction.