Flash RevLink Sidecar
Put the firmware on your ESP32-P4 straight from this page. No toolchain, no command line.
Loading release…
This browser can't flash
Flashing uses the Web Serial API, which today only Chromium-based browsers implement — Chrome, Edge, Opera, Arc, Brave. Safari and Firefox don't support it.
Open this page in one of those, or flash from a terminal instead — see Build.
Before you start
- Connect the board to this computer with a data USB-C cable. Charge-only cables are the most common reason a board never appears.
- Close anything else holding the serial port — a serial monitor,
idf.py monitor, the Arduino IDE. - If the board isn't offered in the port list, hold BOOT, tap RST, then release BOOT to enter download mode.
Which port do I pick?
Your browser will ask permission and show every serial port on the
machine. The Sidecar is the one named USB Single Serial.
On macOS it appears as cu.usbmodem…, on Windows as a
COM port.
- cu.Bluetooth-Incoming-Port
- cu.debug-console
- USB Single Serial (cu.usbmodem…) this one
- cu.wlan-debug
The trailing digits differ on every machine — match the USB Single Serial name, not the exact number. If you see no such entry, the cable is charge-only or the board isn't in download mode.
No driver is needed. Tested on a clean Windows 11 machine and on macOS, the board appears on its own.
Loading…
Connected board
What this installs
The full build. It lists, downloads, verifies, and displays what's on
your AccessPort; it can copy a .ptm map file back onto the
AccessPort's own storage; and it can delete files from
maps/ and datalog/ so a full device can be
cleared without a computer.
Copying a map file is not the same as tuning a car. Installing a map onto the ECU is a separate, deliberate action you take on the AccessPort itself — nothing here can flash your ECU.
Even so, both arrive locked, behind two separate
switches in Settings. Agreeing to map transfers does not agree to
deletion. Only maps/*.ptm is accepted for writing, and every
write is read back and checked against its SHA-256.
Deletion is permanent and reaches only files directly inside
maps/ and datalog/ — not the directories
themselves, not images/, nothing nested. Each delete pins
the device by part number and serial, requires the file to be there
first, re-lists the directory afterwards to confirm it is gone, and is
recorded in an audit log on the card. The Sidecar keeps its own synced
copy either way.
SAFETY.md
says exactly what is and isn't proven.
Every file is checked against a SHA-256 recorded in the release manifest before anything is written to the board. The flashing code (esptool-js 0.6.1) is served from this site rather than a CDN, so no third party can substitute it.
After flashing
The Sidecar restarts on its own and either rejoins a Wi-Fi network it
already knows or starts its own RevLink-… hotspot. Join it
and open http://revlink-<id>.local, or the address
shown on the OLED if you fitted one.
An OLED stays frozen on its last frame during the write. Nothing can draw to it then: the application isn't running, the chip's boot ROM is. The splash after the restart names the firmware version, so you can see at a glance which build is now on the board.
Something not right? Open an issue — include the log below.
If a write stops partway with the board still attached, drop the transfer speed and press Flash again. You do not need to reconnect, and a half-written board is not a broken one — the bootloader lives in ROM, so you can always retry.
The port is released once a write finishes, so the page returns to Connect. That is not an error: closing the port is part of what restarts the board. If it somehow stays in the bootloader, unplug it and plug it back in — the firmware is already written and verified by then.