Firmware flasher
Flash a Tesserae panel
from your browser.
No toolchain, no esptool. Web Serial writes Tesserae's open-source firmware over USB, and every image is checked against its SHA-256 in your browser before a byte lands. The firmware is the same whether you self-host or use Tesserae Cloud: in the last step you tell it which server to talk to, and your own server is the default.
1Choose your panel
2Flash it over USB
- Plug the panel in with a data-capable USB-C cable.
- Hold BOOT while connecting, if your board needs it.
The reTerminal connects through an onboard WCH CH340 USB-serial bridge, not the ESP32's own USB. If the port picker is empty or the flash fails straight after you pick a port, it is almost always the bridge on the computer side:
- macOS: install WCH's CH34x driver, then enable it under System Settings → General → Login Items & Extensions → Driver Extensions (it can sit in "activated, waiting for user" until you toggle it on). The panel then shows up as /dev/cu.wchusbserial*.
- Linux: your user needs access to the port. Run sudo usermod -aG dialout $USER and log out and back in (some distros use uucp instead). If the port appears then vanishes within a second of plugging in, the brltty screen-reader package has claimed the CH340: sudo apt remove brltty, then replug.
- Windows: the CH340 driver normally installs itself on first plug-in. If nothing appears in the picker after a minute, install WCH's CH341SER driver and replug.
Already running Tesserae firmware 1.43 or later? without flashing.
This browser can't flash over Web Serial — use Chrome or Edge on desktop.
Advanced: flash your own .bin or .zip
A hand-picked image is not checked against the catalog. Only write a build you trust that matches this exact board and chip — a wrong image can leave the panel unbootable until you reflash it.
One .bin writes at a single offset. A .zipof parts (bootloader, partitions, app…) flashes each at its own offset in one pass.
A full or merged image writes at 0x0. An app-only image usually goes to 0x10000. The Factory reset toggle above applies here too.
Parts
Offsets come from a manifest.json in the bundle when present; otherwise they're guessed from the filenames. Check every offset against your board's flash map before writing.
3Connect it
The board takes its Wi-Fi and its server over this cable, so there is no hotspot to join.
Leave it empty to keep the password the board already has.
Eight digits from Tesserae Cloud's setup page, good for an hour. The cloud's setup page can also do all of this itself.
Your own relay if you run one. It must be https://; the board refuses anything else.
From Settings → Cloud relay → Add a remote panel on your server.
Trouble flashing? See the per-client setup guides, or flash manually from the firmware releases.
Ask on GitHub Join the DiscordFor development and support, this page logs anonymous flash stats: device, firmware version, coarse region, and how each attempt went (timings, error messages, the USB chip type, and the firmware version the panel reports). No IP is stored, and Do Not Track is respected.
Flash stuck, or ended without finishing? Send me this session's log so I can work out what went wrong.
Preview exactly what's sent
Shares this flash session's log: the device, firmware version, browser, and any error messages. No personal data, unless you add your email above.