Stoatworks Labs

CANary Flasher (beta)

Firmware onto a CANary over USB-C, from a browser tab. Beta

In developmentRuns in a browser tab

The cable that powers it also flashes it.

A CANary's USB-C port is also its ESP32-S3's own serial port, so firmware can go on from a browser tab. Pick a bundled release or hand it your own build. The page reads the unit, checks every file, writes it and reads it back, and you don't need Python, ESP-IDF or a driver.

It's a beta, and the page says so first: the checks and the verification are tested against the real bundled images, but it hasn't flashed a unit end to end yet. The board itself, and how it was built and tested, is on the CANary page.

CANary Flasher (beta) — Firmware onto a CANary over USB-C, from a browser tab. Beta
The latest release chosen: bootloader, partition table, OTA record and app, each checked against its published checksum before a unit is even connected.

What it does

01

Releases, bundled and checksummed

Each release ships in both firmware variants: the standard bridge, and the build that also makes the USB-C port a network adapter with a settings page. Every part is checked against its published SHA-256 before it is listed, and the list shows what each part is, read from its own header.

02

Or your own build

Choose the .bin files from an ESP-IDF build directory. Each one is identified by what's in it rather than what it's called, and put at the offset its kind belongs at. Give it only the app and it writes a blank OTA record beside it, so the unit boots what you just wrote instead of whatever it last updated to over the air.

03

It tells you what you're replacing

On connect it reads the chip, the MAC and the flash size, then the unit's OTA records and the app descriptor in the slot they point at, so the version it currently boots is on screen before anything is overwritten.

04

One gate for every write

The wrong chip, an app from another project, a bootloader anywhere but the start of flash, an app over the partition table, overlapping or unaligned writes: all refused by one check. The page runs it, the script that bundles releases runs it, and the test suite runs it over every bundled image.

What to check before a show

  1. 01

    It hasn't flashed a unit yet

    That's the beta. What's proven is the image identification, the partition-table and OTA-record parsing, the checksums and the MD5 that verifies each write, all tested against the real bundled images, plus the page driven in a browser as far as connecting. The first end-to-end flash of a real unit is still to come.

  2. 02

    The network firmware drops the serial port after 8 seconds

    On that build the USB-C port becomes a network adapter shortly after boot, and there's no serial port left to connect to. Either connect in the first 8 seconds, or hold BOOT, tap EN and release BOOT. That puts the chip in its ROM download mode, which nothing on the flash can remove, so a flash that fails half way is always recoverable.

  3. 03

    Chrome, Edge or Opera on a desktop

    It needs Web Serial, which Safari, Firefox and phones don't have. The page says so rather than failing quietly.

  4. 04

    Settings survive unless you say otherwise

    A normal flash leaves the unit's name, port and LAN address alone. Tick the full erase to bring it back on factory defaults, which also clears the stored crash log.

Run your own copy

There's no container for CANary Flasher (beta), so the hosted copy is the one to use.

Self-hosting the web tools, and which ones you can