Downloading Guide
This guide takes ESP32-C61-WROOM-1 as an example to describe how to download AT firmware and flash it into the module. The same steps apply to other ESP32-C61 modules.
Before downloading and flashing AT firmware, ensure that the hardware is connected correctly. See Hardware Connection.
The AT commands supported by the default firmware differ across module series. See ESP-AT Firmware Differences.
Follow the steps below to download, flash, and verify the AT firmware.
Step 1. Download AT Firmware
Go to ESP32-C61 Released Firmware, download the firmware for your module, and extract the package.
See ESP32-C61-4MB Series for ESP32-C61-WROOM-1 firmware.
The factory directory contains two combined factory bins. Either can be flashed to address 0x0:
factory/factory_ESP32C61-4MB_unfilled.bin(recommended): a single bin with all required functions, and the smallest and fastest to flash. Provided in newly released firmware packages. Necessary unused regions are filled with0xFFup to the end of the AT application firmwareesp-at.binin theota_0partition. If the package does not include this file, usefactory/factory_ESP32C61-4MB.bin.factory/factory_ESP32C61-4MB.bin: a single bin with all required functions, but larger and slower to flash. The earlier fill method, still included in new firmware packages. Filling extends through the end of the last partitionota_1. The file size is typically 2 MB or 4 MB.
For other files in the package, see Appendix: Firmware Package Contents.
Step 2. Flash AT Firmware into Your Device
Choose a flashing method according to your use case.
Method |
Recommended scenario |
Notes |
|---|---|---|
First-time flashing or factory production |
Flash one factory bin to |
|
Updating selected partitions or secondary development |
Flash multiple bins to the addresses specified in |
Flash the Factory Bin (Recommended)
Flash factory/factory_ESP32C61-4MB_unfilled.bin (recommended) or factory/factory_ESP32C61-4MB.bin to address 0x0.
Windows
Download Flash Download Tool for Windows. See the Flash Download Tool User Guide for details. Confirm the COM port number of the download interface, and select it from the “COM:” dropdown list. To identify the port, see Check port on Windows.
Open Flash Download Tool.
Select chipType. (Here, select
ESP32-C61.)Select a workMode. (Here, select
Developer Mode.)Select a loadMode. (Here, select
uart.)
Firmware Download Configurations
Select
factory/factory_ESP32C61-4MB_unfilled.bin(recommended) orfactory/factory_ESP32C61-4MB.bin, and set the address to0x0.Select “DoNotChgBin” to use the flash parameters in the factory bin.
Select the correct COM port and start flashing.
Download to One Address (click to enlarge)
When you finish flashing, check whether AT works.
Linux or macOS
Install esptool:
pip install esptool
Replace the port name in the following command with the download interface of the board, and run the command in the extracted firmware directory. If you do not know the interface name, see Check port on Linux and macOS. factory/factory_ESP32C61-4MB_unfilled.bin is recommended.
esptool --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_unfilled.bin
When you finish flashing, check whether AT works.
Flash Multiple Bins According to download.config
Use this method to update selected partitions or for secondary development. Configure the download address of each bin and the flash parameters according to download.config.
The download.config file of the ESP32-C61-WROOM-1 firmware is shown below:
--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 requires a flash of at least 4 MB.0xd000 ota_data_initial.binmeans downloadingota_data_initial.bininto the address0xd000.
Windows
The tool configuration is the same as in Flash the Factory Bin (Recommended) for Windows, with the following differences:
Configure each bin and its address according to
download.config.Do not select “DoNotChgBin”. Set SPI SPEED and SPI MODE to match
download.config.
Download to Multiple Addresses (click to enlarge)
When you finish flashing, check whether AT works.
Linux or macOS
Replace PORTNAME with the download interface of the board, replace download.config with the parameters in that file, and run the command in the extracted firmware directory. If you do not know the interface name, see Check port on Linux and macOS.
esptool --chip auto --port PORTNAME --baud 115200 --before default-reset --after hard-reset write-flash -z download.config
Below is the example command for ESP32-C61-WROOM-1.
esptool --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
When you finish flashing, check whether AT works.
Step 3. Check Whether AT Works
Open a serial port tool, such as SecureCRT. Connect to the port attached to the “AT command/response” line (see Hardware Connection) with the following settings:
Parameter |
Value |
|---|---|
Baudrate |
115200 |
Data Bits |
8 |
Parity |
None |
Stop Bits |
1 |
Flow Type |
None |
New line |
CR LF |
Enter the command AT+GMR with a new line. 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
If there is no OK response, check the ESP32-C61 startup log to confirm that the firmware initialized correctly.
Open a serial port tool and select the port attached to the “Download/Log output” line. See Hardware Connection.
Set Baudrate to 115200, Data Bits to 8, Parity to None, Stop Bits to 1, and Flow Type to None.
Press the RST key of the board. If the log is similar to the reference log below, ESP-AT firmware has been initialized correctly.
Reference Log
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)
Appendix: Firmware Package Contents
The extracted AT firmware package has the following structure (see also Brief Introduction to AT Firmware):
.
├── 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 // Combined bins for factory downloading
│ ├── factory_XXX.bin // Combined factory bin filled through the end of ota_1
│ └── factory_XXX_unfilled.bin // Combined factory bin filled through the end of the AT application (recommended)
├── 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