Web flasher WIP
Write firmware to an OpenValence board over USB from Chrome or Edge. Pick what you are flashing and the board: the page loads the newest release from this site. It sends the images only to the board.
Work in progress. The offsets and image checks are tested against release images; the write itself has not yet run against a board from this page.
What you need
- Chrome or Edge on a desktop computer. The page uses Web Serial; Firefox, Safari and phones have none.
- A USB data cable to the board.
- For your own build: its .bin files. A release needs no download.
What you are flashing
Board
Nucleus on the OSSM Flagship. The board is pre-production.
Power down the motor before you connect USB.
nucleus-p4b on the barnacle's Stamp-P4, through the Stamp's own USB-C.
Power down the motor before you connect USB. Disconnect the wires to J8 before you connect USB. The Stamp's USB-C feeds the R+D board's 5 V through J8.
The barnacle's ESP32-WROOM-32D, through the R+D board's own USB-C (the CP2102 on UART0).
Power off the R+D board. Disconnect the wires to J8. Then connect USB.
Garnet on the OSSM M5 Remote. CoreS3 and CoreS3 SE only: a Core2 does not run it. This build is not yet tested on the remote.
Garnet on a bare M5Stack CoreS3 SE or CoreS3. Earlier Garnet builds ran on a CoreS3 SE; this build is not yet tested on hardware.
Garnet on the Waveshare ESP32-S3-Touch-LCD-4.3 with 8 MB flash. The 16 MB versions need another build. This build is not yet tested on hardware.
Bootloader at 0x2000, partition table at 0x8000, otadata at 0xF000, app at 0x20000 (slot ota_0). Each file is optional. The page never erases the chip: NVS (non-volatile storage) holds the hub identity, the trust ledger and pairing.
One full image at 0x0. Erase is on, as in the release notes.
One full image at 0x0: bootloader, partition table and app. The image erases NVS (non-volatile storage, 0x9000 to 0xF000): the saved Wi-Fi and key map go with it. With no saved network, the remote opens a setup hotspot. Pre-program Wi-Fi restores a network.
Custom offsets: the files and offsets in the table below.
Version
Use a local file
For your own build. Pick a file for each slot in the table below.
Set an offset for each file. Once connected, the offset list holds the chip's bootloader offset and the board's partitions. Files named like bootloader.bin, partitions.bin, ota_data_initial.bin or firmware.bin get their offset filled in. Erase of the whole chip is never offered on an ESP32-P4.
Download mode on most boards: hold BOOT (GPIO0). Tap RESET. Release BOOT.
Each file is checked before the write: an image header (0xE9) where the bootloader or app starts, the chip the image was built for, an app where an app goes, the slot size and the flash size.
| Offset | Slot | File | Check |
|---|
Connect
Pick the board's port. The page resets the board into download mode, reads the chip, its MAC address and flash size, and the partition table at 0x8000.
Download mode by hand
Hold the CoreS3's reset button for about 3 s, until the small green LED lights. The screen stays dark. Then connect.
Hold BOOT. Tap RESET. Release BOOT. Then connect.
Hold the BOOT pad TP903 to GND while you plug in USB. Then connect.
Hold pad 36 (G35) on the Stamp-P4 to GND while you plug in USB. Then connect.
No port listed: install the Silicon Labs CP210x driver. Port listed but no answer: set the baud to 115200 and connect again.
| Chip | |
|---|---|
| MAC | |
| Flash | |
| Partitions | |
| Boots |
Pre-program Wi-Fi
Optional. Saves one network to the board's NVS (non-volatile storage) after the images, so it joins on first boot. The same SSID is replaced; a full list of four drops its last network. Every other NVS entry is kept.
The network goes only to the board: never stored by this page, never in the log (it records the NVS size and SSID length). The backup is the board's NVS as read, saved passwords included.
Write
The plan, in order:
Cancel stops after the current block. The region being written then holds a partial image.
Log
Every step of the session, with the time since the page loaded. Paste it into a support request.
Writes through esptool-js by Espressif (Apache-2.0). The flow follows ESPConnect by The Last Outpost Workshop (MIT). Notices.