Downloading Guide
This Guide demonstrates how to download AT firmware and flash it into an ESP32-C61-WROOM-1 device by taking ESP32-C61-WROOM-1 as an example. The Guide is also applicable to other ESP32-C61 modules.
Before you start, please make sure you have already connected your hardware. For more details, see Hardware Connection.
For different series of modules, the commands supported by AT firmware are different. Please refer to ESP-AT Firmware Differences for more details.
Download AT Firmware
To download AT firmware to your computer, please do as follows:
Navigate to AT Binary Lists
Find the firmware for your device
Click the link to download it
Here, we download ESP32C61-4MB-AT-V4.0.0.0 for ESP32-C61-WROOM-1. The list below describes the structure of this firmware and what each bin file contains. Other AT firmware has similar structure and bin files.
.
├── at_customize.bin // secondary partition table
├── bootloader // bootloader
│ └── bootloader.bin
├── customized_partitions // AT customized binaries
├── mfg_nvs.csv // raw data of manufacturing nvs partition
│ └── mfg_nvs.bin // manufacturing nvs partition binary
├── download.config // configuration of downloading
├── esp-at.bin // AT application binary
├── esp-at.elf
├── esp-at.map
├── factory // A combined bin for factory downloading
│ └── factory_XXX.bin
├── flasher_args.json // flasher arguments
├── ota_data_initial.bin // ota data parameters
├── partition_table // primary partition table
│ └── partition-table.bin
└── sdkconfig // compilation configuration for AT firmware
The file download.config contains the configuration to flash the firmware into multiple addresses:
--flash_mode dio --flash_freq 80m --flash_size 4MB
0x0 bootloader/bootloader.bin
0xc000 partition_table/partition-table.bin
0xd000 ota_data_initial.bin
0x30000 at_customize.bin
0x31000 customized_partitions/mfg_nvs.bin
0xa0000 esp-at.bin
--flash_mode diomeans the firmware is compiled with flash DIO mode.--flash_freq 80mmeans the firmware’s flash frequency is 80 MHz.--flash_size 4MBmeans the firmware is using flash size 4 MB.0xd000 ota_data_initial.binmeans downloadingota_data_initial.bininto the address0xd000.
Flash AT Firmware into Your Device
Follow the instructions below for your operating system.
Windows
Before starting to flash, you need to download Flash Download Tool for Windows. You can refer to the Flash Download Tool User Guide for instructions.
Open the ESP32-C61 Flash Download Tool.
Select chipType. (Here, we select
ESP32-C61.)Select a workMode according to your need. (Here, we select
Developer Mode.)Select a loadMode according to your need. (Here, we select
uart.)
Firmware Download Configurations
Flash AT firmware into your device. You can select either of the two ways below.
To download one combined factory bin (namely,
factory_XXX.binin thebuild/factorydirectory) to address0x0, select “DoNotChgBin” to use the default configuration of the factory bin.
Download to One Address (click to enlarge)
To download multiple bins separately to different addresses, set up the configurations according to the file
download.configand do NOT select “DoNotChgBin”.
Download to Multiple Addresses (click to enlarge)
In case of flashing issues, please verify what the COM port number of download interface of the ESP32-C61 board is and select it from “COM:” dropdown list. If you do not know the port number, you can refer to Check port on Windows for details.
When you finish flashing, please Check Whether AT Works.
Linux or macOS
Before you start to flash, you need to install esptool.py.
You can select either of the two ways below to flash AT firmware into your device.
To download the bins separately into multiple addresses, enter the following command and replace
PORTNAMEanddownload.config:esptool.py --chip auto --port PORTNAME --baud 115200 --before default_reset --after hard_reset write_flash -z download.config
Replace
PORTNAMEwith your port name. If you do not know it, you can refer to Check port on Linux and macOS for details.Replace
download.configwith the content inside the file.Below is the example command for ESP32-C61-WROOM-1.
esptool.py --chip auto --port /dev/tty.usbserial-0001 --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0xc000 partition_table/partition-table.bin 0xd000 ota_data_initial.bin 0x0 bootloader/bootloader.bin 0xa0000 esp-at.bin 0x30000 at_customize.bin 0x31000 customized_partitions/mfg_nvs.bin
To download the bins together to one address, enter the following command and replace
PORTNAMEandFILEDIRECTORY:esptool.py --chip auto --port PORTNAME --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 40m --flash_size 4MB 0x0 FILEDIRECTORY
Replace
PORTNAMEwith your port name. If you do not know it, you can refer to Check port on Linux and macOS for details.Replace
FILEDIRECTORYwith the file directory you would flash to the address0x0. It is normally factory/XXX.bin.Below is the example command for ESP32-C61-WROOM-1.
esptool.py --chip auto --port /dev/tty.usbserial-0001 --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x0 factory/factory_ESP32C61-4MB.bin
When you finish flashing, please Check Whether AT Works.
Check Whether AT Works
To check whether AT works, do as follows:
Open a serial port tool, such as SecureCRT;
Select the Port attached to “AT command/response” line (see Hardware Connection for details);
Set Baudrate to 115200;
Set Data Bits to 8;
Set Parity to None;
Set Stop Bits to 1;
Set Flow Type to None;
Enter the command “AT+GMR” with a new line (CR LF).
If the response is OK as shown below, AT works.
AT+GMR
AT version:5.0.0.0(f6b0e89 - ESP32C61 - Oct 17 2025 08:55:06)
SDK version:v5.5.1-255-g07e9bf4970
compile time(65202f43):Oct 17 2025 19:46:13
Bin version:v5.0.0.0(ESP32C61-4MB)
OK
Otherwise, you need to check your ESP32-C61 startup log in one of the following ways:
Method 1:
Open a serial port tool, such as SecureCRT;
Select the port attached to the “Download/Log output” line. For more information on this line, see Hardware Connection.
Set Baudrate to 115200;
Set Data Bits to 8;
Set Parity to None;
Set Stop Bits to 1;
Set Flow Type to None;
Press the RST key of the board directly. If it is like the log below, it means that ESP-AT firmware have been initialized correctly.
Method 2:
Open two serial port tools, such as SecureCRT;
In one serial port tool, select the port attached to the “AT command/response” line. In the other tool, select the port attached to the “Download/Log output” line. For more information on these lines, see Hardware Connection.
Set Baudrate to 115200;
Set Data Bits to 8;
Set Parity to None;
Set Stop Bits to 1;
Set Flow Type to None;
Enter the command AT+RST with a new line (CR LF) to the “AT command/response” line. If the serial log from the “Download/Output log” line is like the log below, it means that ESP-AT firmware have been initialized correctly.
ESP32-C61 startup log:
ESP-ROM:esp32c61-eco3-20250228
Build:Feb 28 2025
rst:0xc (SW_CPU),boot:0xc (SPI_FAST_FLASH_BOOT)
Core0 Saved PC:0x4080a438
SPI mode:DIO, clock div:1
load:0x40845c00,len:0x1b80
load:0x4083bd70,len:0xce4
load:0x4083ea70,len:0x3248
load:0x4084a000,len:0x222c
entry 0x4083bd7a
I (29) boot: ESP-IDF v5.5.1-255-g07e9bf4970-dirty 2nd stage bootloader
I (30) boot: compile time Oct 17 2025 19:46:05
I (32) boot: chip revision: v1.0
I (32) boot: efuse block revision: v0.1
I (35) boot.esp32c61: SPI Speed : 80MHz
I (39) boot.esp32c61: SPI Mode : DIO
I (43) boot.esp32c61: SPI Flash Size : 4MB
I (47) boot: Enabling RNG early entropy source...
I (51) boot: Partition Table:
I (54) boot: ## Label Usage Type ST Offset Length
I (60) boot: 0 otadata OTA data 01 00 0000d000 00002000
I (67) boot: 1 phy_init RF data 01 01 0000f000 00001000
I (73) boot: 2 nvs WiFi data 01 02 00010000 00020000
I (80) boot: 3 at_customize unknown 40 00 00030000 00070000
I (86) boot: 4 ota_0 OTA app 00 10 000a0000 00220000
I (93) boot: 5 ota_1 OTA app 00 11 002c0000 00140000
I (100) boot: End of partition table
I (103) esp_image: segment 0: paddr=000a0020 vaddr=42170020 size=2d18ch (184716) map
I (157) esp_image: segment 1: paddr=000cd1b4 vaddr=40800000 size=02e64h ( 11876) load
I (162) esp_image: segment 2: paddr=000d0020 vaddr=42000020 size=16ccb8h (1494200) map
I (533) esp_image: segment 3: paddr=0023cce0 vaddr=40802e64 size=0ff78h ( 65400) load
I (555) esp_image: segment 4: paddr=0024cc60 vaddr=40812e00 size=0416ch ( 16748) load
I (570) boot: Loaded app from partition at offset 0xa0000
I (571) boot: Disabling RNG early entropy source...
I (1087) at-init: at param mode: 1
I (1177) at-uart: AT cmd port:uart1 tx:6 rx:5 cts:4 rts:3 baudrate:115200
I (1178) at-init: module_name: ESP32C61-4MB
I (1179) at-init: max tx power=78, ret=0
I (1181) at-init: v5.0.0.0 (gitlab)