A Beginner’s Guide to ATS20+ Firmware flashing
Hey radio enthusiasts! Ever wondered if your beloved ATS20+ receiver could do more, or perhaps perform even better? The answer is often a resounding YES, thanks to community-developed firmwares that unlock new features, improve performance, and even change the user interface.
Flashing new firmware might sound daunting, like something only a seasoned electronics wizard can do. But fear not! With this step-by-step guide, even a complete novice can successfully update their ATS20+ and experience a whole new world of radio listening.
Disclaimer:While this guide aims to be as clear and safe as possible, flashing firmware always carries a small risk. Please follow the instructions carefully. I am not responsible for any damage to your device. Proceed at your own risk.
ATS20+ Firmware Flashing refers to the process of replacing or updating the internal software (firmware) that controls the receiver’s operations. Think of it like updating the operating system on your smartphone or computer.
Here’s a breakdown of what that means for your ATS20+:
Firmware: This is the low-level code embedded in the receiver’s microcontroller (typically an Atmel ATmega328P on an Arduino Nano board in the ATS20+). It dictates how the radio functions, from tuning and display to signal processing and button responses.
Flashing : This is the act of transferring the new firmware file (a .hex file) from your computer to the microcontroller’s memory. It essentially overwrites the old firmware with the new one.
To do the ATS20+ Firmware Flashing , you’ll need a few essential items.
- First and foremost, have your ATS20+ Receiver ready. You’ll also need a Micro USB/Mini USB Cable to connect it to your computer. A Windows Computer is recommended, as the primary flashing tools are optimised for this operating system.
- For the software side, acquire the New Firmware File (.hex). This is typically found on GitHub repositories, such as the ATS_EX firmware by Goshante. As of April 3rd, 2024, version v1.18 is available. When downloading, choose the
.hexfile without the bootloader section for standard USB flashing, as your Arduino Nano likely already has one. If you face issues, a version with a bootloader might be necessary, though this often requires a dedicated programmer. - You’ll also need AVRDUDESS softwareor xLoader software. These are user-friendly graphical interfaces that streamline the process of flashing Atmel micro controllers. Both are available from reputable online sources.
- Finally, ensure your computer has the CH341 USB UART Driver installed. Many ATS20+ receivers use a CH340/CH341 chip for USB communication. If you encounter connection problems, a quick online search for “CH340 driver Windows” will help you locate and install it.
Step-by-Step ATS20+ Firmware Flashing Procedure:
Let’s get your ATS20+ updated!
Step 1: Identify Your ATS20+ Board Type (Important!)
The ATS20+ comes in two main internal variations:
Arduino Nano based: The Arduino Nano board is soldered as a separate module onto the main board.
Arduino Uno based (ATmega328P directly on main board): The ATmega328P chip (the “brain” of the Arduino) is directly soldered onto the main board with all other components.


How to check: You’ll need to carefully open your ATS20+ case to look inside. This is crucial because the flashing software requires you to select the correct board type. If you select the wrong one, the flashing will fail, or worse, potentially brick your device.
Step 2: Download the Firmware (.hex file)
Navigate to the GitHub repository of the firmware you wish to install (e.g., goshante/ats20_ats_ex). Look for the “Releases” section or a direct download link for .hex files. Download the latest version.
Tip for ATS_EX firmware: Look for files named something like ATS_EX_vX.XX_A1.hex (where X.XX is the version number) if you have the typical ATS20+ with battery voltage on A1 and want to flash via USB. Avoid files with “_with_bootloader.hex” unless you’re using an external programmer.
Step 3: Install AVRDUDESS and CH341 Driver
Install AVRDUDESS /xLoader : Download and install AVRDUDESS. It’s usually a straightforward installation like any other Windows program.
Install CH341 Driver (if needed):If your computer doesn’t recognize the ATS20+ when you plug it in, or if you don’t see a new COM port appear in Device Manager (search for “Device Manager” in Windows search), you’ll need to install the CH341 driver. Follow the instructions provided with the driver download. Restart your computer after installation if prompted.
Step 4: Connect Your ATS20+ to Your Computer
- Power OFF your ATS20+ receiver.
- Connect one end of the Micro USB cable to your ATS20+ and the other end to a USB port on your computer. Use a USB 3.0 port if available, as they generally provide more stable power.
- Advanced Tip (Optional but Recommended for Safety): Some users recommend modifying the USB cable to disconnect the 5V line (VBUS) and instead power the ATS20+ on before flashing. This prevents potential power conflicts. For novices, you can often proceed without this modification, but be aware it’s a common troubleshooting step if you encounter issues. If you choose not to cut the 5V line, ensure the receiver is powered OFF when connecting.
Step 5: Configure AVRDUDESS and Flash the Firmware (ATS20+ Firmware Flashing)
- Open AVRDUDESS: Launch the AVRDUDESS program.
- Select Programmer: In the “Programmer” section, select
ArduinoorAVR109 (Arduino)from the dropdown list. - Select MCU/Board Type: This is where Step 1 comes in handy.If your ATS20+ uses an Arduino Nano, select
ATmega328P(orArduino Nano (ATmega328P)) from the “MCU” dropdown under the “Presets” section.If your ATS20+ uses an Arduino Uno revision (ATmega328P directly on board), also selectATmega328P(orArduino Uno (ATmega328P)). - Select COM Port: In the “Port” dropdown, select the COM port that corresponds to your ATS20+. You can find this in Windows Device Manager under “Ports (COM & LPT)” when your ATS20+ is connected. It might be something like “USB-SERIAL CH340 (COMx)” where ‘x’ is a number.
- Set Baud Rate: The baud rate can vary depending on the bootloader. A common baud rate for Arduino Nano/Uno bootloaders is 57600 or 115200. Try 57600 first. If you get “not in sync” errors, try 115200.
- Load Firmware File: In the “Flash” section:
- Click the “…” button next to the “Flash” field.
- Navigate to where you saved your downloaded
.hexfirmware file and select it. - Make sure the “Flash” checkbox is ticked, and “Write” is selected from the dropdown.
- Initiate Flashing: Click the “Go” button (usually next to the “Write” dropdown). Important: If you’re encountering “not in sync” errors and are not using a dedicated programmer, try pressing and releasing theRESET button on your ATS20+ (if it has one, usually on the Arduino Nano board itself)just as AVRDUDESS starts trying to connect (when you click “Go”). This can often help the bootloader to initiate the flashing process.
- Monitor Progress: You should see a progress bar and messages in the log window indicating the flashing process. It will typically show “Writing Flash…” and then “Verifying Flash…”.
- Success! Once it completes, you should see a “AVRDUDESS finished successfully” or similar message.

xLoader: If you feel AVRDUDESS is difficult, easy option is XLoader. It is only available in windows and you can download it Pre-configured here, or source here. XLoader simplifies flashing .hex files to your ATS20+ (using an ATmega328P). You simply connect the receiver via USB, open XLoader, select your ATS20+’s MCU (ATmega328P), choose the correct COM port and baud rate (often 57600 or 115200), browse for your .hex firmware file, and click “Upload.” It’s a user-friendly alternative to command-line tools
Step 6: Reset EEPROM Memory (Crucial!) after ATS20+ Firmware Flashing
After flashing, it is strongly recommended to reset the EEPROM memory. This clears any old settings from the previous firmware that might cause conflicts with the new one.
How to Reset EEPROM:
- Turn off your ATS20+ receiver after ATS20+ Firmware Flashing.
- Hold down the Encoder Button (the main tuning knob that also acts as a button).
- While holding the Encoder Button, turn on your ATS20+ receiver.
- Keep holding the button until you see an “EEPROM RESET” message on the screen.
- Release the button.
Your ATS20+ will now boot up with the fresh firmware and default settings. ATS20+ Firmware Flashing is done.

Fig – ATS20+ Firmware Flashing
What’s Next? Explore Your New Firmware!
Now that you’ve successfully flashed the new firmware, it’s time to explore its features! Many community firmware offer:
- Improved audio quality.
- Enhanced tuning steps and modes (e.g., finer SSB tuning).
- New display layouts and information (e.g., S-meter, battery voltage).
- Additional settings for attenuation, soft mute, AGC, and more.
Refer to the documentation provided by the firmware developer (often found on the GitHub page) to learn about all the new functionalities and how to navigate the settings. Typically, you’ll use the encoder and various buttons (BAND+, BAND-, MODE, etc.) to access and adjust settings.
Troubleshooting Common Issues in ATS20+ Firmware Flashing
- “Programmer is not responding” or “not in sync”:
- Double-check that the correct COM port is selected in AVRDUDESS.
- Ensure the CH341 driver is installed correctly.
- Try different baud rates (57600 vs. 115200).
- Press the RESET button on your ATS20+ Nano board precisely when AVRDUDESS attempts to connect.
- Try a different USB cable or a different USB port on your computer.
- Consider the 5V line isolation tip mentioned in Step 4.
- “AVRDUDE: stk500_recv(): programmer is not responding“: Similar to above, often a communication issue. Reread the steps carefully.
- ATS20+ doesn’t turn on or displays garbage after flashing: This is usually due to an incorrect firmware file or a failed flash. If you have a version of the firmware with bootloader and flashed it over USB, it might have corrupted the existing bootloader. In such rare cases, you might need an external ISP programmer (like a USBASP) to re-flash a bootloader and then the firmware. For beginners, it’s safer to stick to non-bootloader .hex files for USB flashing. Try re-flashing the firmware.
- Settings don’t seem right or unexpected behavior: Did you perform the EEPROM reset (Step 6)? This is crucial to clear old data.
Congratulations! You’ve successfully done ATS20+ Firmware Flashing. This opens up a world of possibilities and allows you to enjoy your radio even more. Don’t be afraid to experiment with different firmwares if you’re feeling adventurous (always back up old files if you can, though for simple receivers this is less critical).
Happy listening! Let me know in the comments below if you found this guide helpful or if you have any tips to share!
Related Posts
ATS MINI ESP32-S3 SI4732 Pocket Radio DSP Receiver – Technical Analysis
ATS20 Radio Receiver: Comprehensive Review – Small Package & Big Performance
Flashing Firmware in ATS Mini Radio: A Simple Firmware Update Guide

Hello and thank you.
I noticed that the two photographs showing the difference between the Uno and the Nano version are pretty much the same picture!
So how could one tell the difference?
73
IZ5IMK