# Update an ESP32-C5 through your sensor.

> Use a phone browser while the Linux sensor backs up, programs and verifies a supported USB-connected C5 board.

The unified sensor's **Device → ESP32 firmware** card programs a C5 for you. The Linux sensor
performs the USB programming, so the controlling iPhone needs only an HTTPS
browser. No browser Web Serial support is required on the phone.

## Current all-in-one firmware

For ESP32-C5 boards **without a screen**, the unified image bundles the all-in-one
development image. It combines BLE capture, USB
spectrum and explicitly controlled RF tools. Its runtime name is `airhorn-dev`;
use the application SHA-256 to identify the exact build:

```text
65177719e522498093fd359b29014d4f3dc1a7a6100de3a325b599436ebdf7e6
```

Confirm that fingerprint in the updater before programming each board. This is
newer than the separate October 3 experimental download. Screen-equipped boards
need their board-specific display firmware. The desktop browser installer offers
the separate September stable BLE sniffer; use the sensor updater for this
all-in-one image. The owner console also provides the matching image bundle,
corresponding source and license downloads.

## Check the board and start deliberately

The bundled development firmware is qualified for **ESP32-C5 revision 1.0,
package 0, 8 MiB flash**, using the native Espressif USB connection. The updater
refuses other ESP32 families/revisions, secure boot and configured flash
encryption. It does not write eFuses or accept arbitrary uploaded firmware.

1. Stop the board's active operation and connect its USB data cable to the sensor.
2. Sign in as owner and open **Device → ESP32 firmware**.
3. Select the intended board and confirm its MAC address and the proposed image.
4. Select **Back up and update ESP32**. Keep USB connected and the sensor powered.
5. Read the job result and confirm the expected idle firmware before using it.

The job continues if the browser page closes. It reads the complete 8 MiB flash
twice and requires matching hashes before any programming. Both originals stay
in private persistent Data storage. Each programmed region is read back and
compared with the bundled firmware digest, then the board is restarted and
checked. There is no automatic update or automatic retry.

## If bootloader entry fails

Some older firmware cannot enter the serial bootloader automatically. Follow
the displayed instructions: hold **BOOT**, press and release **RESET**, release
BOOT, then retry explicitly. A pre-write failure keeps the board in download
mode for the next attempt. A failure after programming starts retains the
backup and attempts an idle restart; inspect the recorded write/restart status.

## Save or restore the original

**Download original backup** exports the verified complete flash image. Keep it
private because it can contain configuration. **Restore saved backup** creates
a new verified backup of the current flash, restores the selected original and
checks all 8 MiB. Backups are bound to their board identity. An interrupted write
without a confirmed idle restart requires explicit restoration before another
upgrade is accepted.

The lab C5 completed a physical serial upgrade with matching full backups,
verified readback of all programmed regions and an idle restart. Physical
restoration of the saved original remains unqualified; simulated restore/failure
tests do not establish that hardware result. Keep physical access during beta use.

## Firmware and sources

Programming uses bundled, pinned tools offline. The console provides the
firmware details, original backup and corresponding source/license downloads.
Firmware installation and device-access authorization are separate operations.
Installing firmware grants no additional permissions and starts no test.

The [stable C5 browser installer](/sensors/esp32-c5/flash/) remains available
for the separate stable BLE firmware. Do not confuse its artifact with the
development image selected by the sensor updater.
