Flashing ATS Mini V4 Firmware: ESP32-S3 Update via USB
Read This Warning First
Flashing firmware can genuinely make your receiver unusable if done wrong. Back up your current firmware before flashing anything new (see below), and if your board has BOOT and RESET buttons soldered on, you have a real recovery path if something goes wrong — some units ship without them soldered, which makes recovery from a bad flash much harder.
Step 1: Back Up Your Current Firmware
With esptool.py installed (works via uv on Windows/macOS/Linux):
uvx --from esptool esptool.py --chip esp32s3 --port SERIAL_PORT --baud 921600 read_flash 0x0 ALL original-flash.binReplace SERIAL_PORT with your actual port (check Device Manager on Windows, /dev/tty.usbmodemXXXX on macOS, /dev/ttyACMX on Linux). Keep this backup file somewhere safe — it's your rollback path.
Step 2: Identify Your PSRAM Variant
This matters a lot — flashing the wrong variant causes a "PSRAM not detected" error. Check Settings > About on the current firmware for PSRAM info, or open the case and check the board's markings against the OSPI/QSPI reference table in the official docs. Most commercial ATS Mini V4 units use the OSPI variant, but don't assume — verify before flashing.
Step 3: Get the Firmware
Firmware releases are on the esp32-si4732/ats-mini GitHub repo (the actively-maintained community fork). Download either the three separate files (bootloader, partitions, main app) or the single merged binary — matching your identified OSPI/QSPI variant.
Step 4: Flash It
Using esptool.py directly (cross-platform):
uvx --from esptool esptool.py --chip esp32s3 --port SERIAL_PORT --baud 921600 \ --before default-reset --after hard-reset write_flash -z \ --flash-mode keep --flash-freq keep --flash-size keep \ 0x0 ats-mini.ino.bootloader.bin \ 0x8000 ats-mini.ino.partitions.bin \ 0x10000 ats-mini.ino.binOr, if using the merged single-file build:
uvx --from esptool esptool.py --chip esp32s3 --port SERIAL_PORT --baud 921600 \ --before default-reset --after hard-reset write-flash -z \ --flash-mode keep --flash-freq keep --flash-size keep \ 0x0 ats-mini.ino.merged.binAlternative: Browser-Based ESP Web Flasher
If you'd rather avoid the command line, the official docs also list a browser-based flasher (WebSerial-based, works in Chrome/Edge) — connect, select port, add the firmware files, press Program, wait for "Leaving... Hard resetting via RTS pin" in the log.
Windows Alternative: Espressif Flash Download Tool
Set Chip Type: ESP32-S3, WorkMode: Develop, LoadMode: UART, add your firmware files at the correct addresses, set your COM port, and press START. Wait for "is stub and send flash finish" in the log window.
Verify the Flash Worked
Power cycle the receiver, then check Menu > Settings > About — confirm the new firmware version shows correctly and PSRAM is detected (non-zero value) if you flashed a PSRAM-enabled build.
If Something Goes Wrong
See the recovery process — if your board has BOOT/RESET buttons, a specific button-hold sequence puts the ESP32-S3 into recovery mode for reflashing regardless of firmware state. If it only has a BOOT button, a slightly different sequence applies — check current recovery documentation for the exact steps, since this detail can shift between hardware revisions.
Related Guides
- Custom Firmware Round-Up: Stock vs H.J. Berndt vs ats-mini GitHub Fork
- ATS Mini V4 Firmware Download Links & Flashing Tool Cheat Sheet
- ATS Mini V4 Unboxing & First Power-On: What's in the Box, Initial Setup
- ATS Mini V4 Menu & Settings Deep Dive: Every Option Explained
- ATS Mini V4: Flashing Custom Firmware From Your Phone (ats-mini vs H.J. Berndt)
- H.J. Berndt Firmware for the ATS Mini V4: The In-Depth Guide
- Choosing the Right ESP32 Variant: ESP32, S2, S3, C3, and C6 Compared
- ATS Mini V4 Firmware Comparison: ats-mini vs H.J. Berndt