Skip to content
ATS Mini Controller
Offline
Radio + appFirmware & recovery6 min read

Firmware backup and recovery

The radio will not start after a flash: what to do, in order. Then how to take a full backup before you write, how to put one back, and what a failed write actually looks like.

If your radio has stopped starting, work down this page from here. The explanations are further down; the steps come first.

The radio will not start after a flash

Start from the least drastic. An ESP32-S3 that cannot run its application still answers a flasher, because the part that talks to the flasher lives in the chip’s own ROM and not in the firmware you just wrote. That is why a failed write is almost always recoverable with the same tool that caused it.

  1. Leave it plugged in and switched on, and write again. A half-finished write leaves incomplete firmware, not a broken chip. If the port is still there, this alone fixes most cases.
  2. Write a complete image rather than the three files. Use the merged image at 0x0, or the backup you took. A complete image replaces everything a partial write may have corrupted, including the bootloader.
  3. If the computer no longer sees a serial port, force the radio into recovery mode by hand — the next section — and then write again.
  4. If the port comes and goes, that is a reboot loop, and it is the case recovery mode exists for. Do not keep retrying into it; force recovery mode first.

Forcing recovery mode by hand

Look at the board first. Some ATS Mini boards have BOOT and RESET buttons soldered on, some have only BOOT, and some have neither. Which of the sequences below applies to you depends on that.

With both buttons: power the receiver on, connect it over USB, press and hold BOOT, press RESET, release BOOT.

With BOOT only: connect it over USB, press and hold BOOT, power the receiver on, release BOOT.

With no BOOT button: if the pads are there, bridging them briefly does the same job the button would. If there are no pads at all, the firmware project’s own answer is to short the ESP32-S3’s pin 27 (GPIO0) to ground to imitate the press. Either way you are opening the case and touching the board while it is powered, which is not a step to take casually — but it is the documented way in.

In recovery mode the radio does nothing of its own: it is not running its firmware at that point, so a blank or frozen display is not a failure. What matters is the computer — it should show a serial port, and the flasher should connect to it as usual.

What BOOT and RESET actually do

RESET restarts the processor. BOOT, held down at the moment it restarts, tells the processor to start the ROM’s download mode instead of the firmware in flash. Neither button repairs anything. What they give you is a guarantee that the chip is listening to the flasher rather than trying to run a broken image.

That guarantee is the reason a board without those buttons is riskier to flash. Without them you depend on the flashing tool talking the chip into download mode over the USB link itself, which works while the chip is behaving. When it is not — an image that crashes before USB is ready, or a reboot loop that keeps dropping the port — there is no button to fall back on, and you are down to shorting a pin inside the case. It is worth knowing which kind of board you own before you flash it, not while you are trying to rescue it.

Taking a backup before you write

A backup here means a byte-for-byte copy of the radio’s whole 8 MB flash: bootloader, partition table, firmware, and everything the radio has stored in between. It is a complete image, which is what makes it a complete way back.

In the firmware installer it is the first half of step 5, Read a backup of the current firmware first, and it is on by default. Reading all 8 MB takes a few minutes; when it finishes you get a file to download. Save it somewhere you will find it again — the file name carries the date, and a backup you cannot locate is not a backup.

By hand, esptool.py reads the same thing with read_flash 0x0 ALL at --baud 921600. The firmware project documents the exact command.

Restoring a backup

A backup is a complete image, so it goes to 0x0, exactly like a merged release image. There is no separate restore procedure and no special tool.

In the installer, tick I have a raw .bin image rather than a release archive in step 4 and load the file. The app reads the image’s own header, recognises a complete image and offers 0x0. It cannot check a bare .bin against your hardware — there is no variant marker in one — so it asks you to confirm you want to write it anyway. Your own backup off this radio is the clearest case there is for saying yes.

By hand, it is write_flash at 0x0 with the backup file, and the firmware project documents that command too.

What a failed write looks like

It looks like a progress bar that stops, and an error. It does not look like an explosion, and the radio does not tell you anything — nothing on the radio knows a write was half-finished. The three outcomes the installer separates are worth knowing apart, because they call for opposite responses:

The write did not finish
The radio may not start until something is flashed successfully, but it is still connected and still listening. Write again, or write your backup. This is the ordinary bad case and it is recoverable.
Written, but the restart failed
The firmware is already in place. Only the automatic reboot failed. Switch the radio off and on by hand. Do not flash it a second time.
The backup failed
Nothing was written at all. The radio is exactly as it was before you started, so there is nothing to recover — just start again.

When it is not the firmware

Several failures that feel like a dead radio are not. Before assuming the worst:

  • A charge-only USB cable powers the radio and shows nothing to the computer. It is the most common cause of “the port disappeared”.
  • A USB hub between the radio and the computer. Try a port on the machine itself, especially if the connection works at the slow rate but will not speed up for the transfer.
  • The wrong port. If a tool reports that the board is not an ESP32-S3, you have picked some other USB serial device — the radio is fine.
  • A sleeping or switched-off radio answers nothing. Wake it before you connect.
  • The chip answers but its flash memory does not. That one is not a cable problem, and changing cables will not help; it points at the radio’s own board.

When the radio is running again, Installing firmware covers the variants, the addresses and the choice between a three-file and a merged write, and the installer does the identification for you.

Recommended gear

  • Short USB-C data cableAccessoryBefore you blame the firmware: a charge-only lead is the single most common reason a radio stops appearing as a serial port.

Frequently asked questions

My ATS Mini will not start after flashing — is it bricked?
Almost certainly not. The part of the chip that talks to a flasher lives in the ESP32-S3’s own ROM, not in the firmware that was just written, so a radio that cannot run its firmware can still be written to. Try writing again, and write a complete image — the merged file or your backup — rather than the three separate files.
How do I put an ATS Mini into recovery mode?
If the board has both buttons: power it on, connect it over USB, press and hold BOOT, press RESET, then release BOOT. If it has only BOOT: connect it over USB, press and hold BOOT, power it on, then release BOOT. The screen stays dark in recovery mode, which is normal — the radio is not running its own firmware at that point.
What if my ATS Mini board has no BOOT button?
The firmware project’s documented answer is to short the ESP32-S3’s pin 27, which is GPIO0, to ground to imitate the button press. That needs the case open. It is also why a board without those buttons is riskier to flash: you lose the guaranteed way of making the chip listen to a flasher.
How large is an ATS Mini firmware backup?
8 MB, because it is a byte-for-byte copy of the entire flash chip rather than just the firmware. Reading it takes a few minutes over USB.
Can I restore a backup with the installer on this site?
Yes. A backup is a complete image, so it is loaded through the raw .bin option in step 4 and written at 0x0. The app reads the image’s header to work that out. It cannot verify a bare .bin against your hardware, because a loose image carries no variant marker, so it asks you to confirm before writing.

More

Device

Explore

Settings

Theme

Welcome to ATS Mini Controller

This web app connects to your ATS Mini radio over USB or Bluetooth LE and lets you control it directly from a computer or phone. It adds remote tuning, memory slot management, screenshot capture, audio streaming, spectrum scanning, theme editing and other features on top of the device's built-in firmware.

Firmware 2.34+: pick a connection method

Starting with firmware 2.34 the radio accepts remote control over USB or Bluetooth LE. Pick by what matters more for you: fast screenshots (USB) or clean audio from the radio’s 3.5 mm output (Bluetooth) — the two transports trade off in opposite directions.

  • USB Serial

    Settings USB Port change Off to Ad hoc

    Works in any Chromium-based browser. Requires a data-capable USB-C cable (opens in a new tab).

    Best for screenshots and theme work. Transfers complete in a second or two. Audio capture is noisy while the cable is connected — the radio lacks the filtering needed to isolate its 3.5 mm output from the USB power rail, so hum and switching noise bleed into the audio path.

  • Bluetooth LE

    Settings Bluetooth set mode to Ad hoc

    Chrome / Edge / Opera on desktop or Android. BLE is experimental in firmware 2.34.

    Best for clean audio. Bluetooth LE carries the remote control only, never sound: the audio still travels by cable from the radio’s 3.5 mm output to your computer. With no USB cable attached the radio runs on its battery, so that output stays free of the USB power-rail noise that bleeds through on a wired connection. Screenshots are much slower (~30 s) because of the firmware's BLE throughput cap.

More than one firmware

Besides the official firmware, the app carries profiles for the Monster fork and for H. J. Berndt's firmware. It works out which one your radio runs from the replies it gets, so there is nothing to pick. When nothing matches, it says so instead of guessing.

  • Berndt firmware is never assumed. It reuses some of the official firmware's keys and what they do there is not established, so the app asks you before switching to it.
  • Missing controls are deliberate. Whatever a firmware cannot do is left off the page rather than greyed out, and on Berndt firmware, commands go out one at a time, a few seconds apart.
How the app handles other firmwares (opens in a new tab)

Keyboard shortcuts

Single keys control the radio on the Controller page, except while you type in a field.

←→
Tune one step
↑↓
Volume up / down
Enter
OK
BN
Next / previous band
MV
Next / previous mode
SA
Next / previous step
WQ
Next / previous bandwidth
GF
AGC up / down
LK
Backlight up / down
IU
Calibration up / down
OP
Sleep on / off
T
Toggle status log
C
Screenshot
H
Log reception
D
Cockpit view
⌘K
Search pages & stations