Flash RevLink Sidecar

Put the firmware on your ESP32-P4 straight from this page. No toolchain, no command line.

Loading release…

Before you start

  1. Connect the board to this computer with a data USB-C cable. Charge-only cables are the most common reason a board never appears.
  2. Close anything else holding the serial port — a serial monitor, idf.py monitor, the Arduino IDE.
  3. 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.

wants to connect to a serial port
  • cu.Bluetooth-Incoming-Port
  • cu.debug-console
  • USB Single Serial (cu.usbmodem…) this one
  • cu.wlan-debug
Cancel Connect

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…

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.

Log