Downloading Guide

[中文]

This Guide demonstrates how to download AT firmware and flash it into an ESP8684-MINI-1 device by taking ESP8684-MINI-1 as an example. The Guide is also applicable to other ESP32-C2 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 ESP32C2-4MB_AT_Bin_V2.5.0.0 for ESP8684-MINI-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
│   ├── ble_data.bin
│   ├── client_ca.bin
│   ├── client_cert.bin
│   ├── client_key.bin
│   ├── factory_param.bin
│   ├── factory_param_MINI-1.bin
│   ├── mqtt_ca.bin
│   ├── mqtt_cert.bin
│   ├── mqtt_key.bin
│   ├── server_ca.bin
│   ├── server_cert.bin
│   └── server_key.bin
├── 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_MINI-1.bin
│   └── factory_parameter.log
├── flasher_args.json                // flasher arguments
├── ota_data_initial.bin             // ota data parameters
├── partition_table                  // primary partition table
│   └── partition-table.bin
├── phy_init_data.bin                // phy parameters
└── 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 60m --flash_size 4MB
0x0 bootloader/bootloader.bin
0x60000 esp-at.bin
0x8000 partition_table/partition-table.bin
0xd000 ota_data_initial.bin
0xf000 phy_init_data.bin
0x1e000 at_customize.bin
0x1F000 customized_partitions/server_cert.bin
0x21000 customized_partitions/server_key.bin
0x23000 customized_partitions/server_ca.bin
0x25000 customized_partitions/client_cert.bin
0x27000 customized_partitions/client_key.bin
0x29000 customized_partitions/client_ca.bin
0x32000 customized_partitions/mqtt_cert.bin
0x34000 customized_partitions/mqtt_key.bin
0x36000 customized_partitions/mqtt_ca.bin
0x2B000 customized_partitions/factory_param.bin

  • --flash_mode dio means the firmware is compiled with flash DIO mode.

  • --flash_freq 60m means the firmware’s flash frequency is 60 MHz.

  • --flash_size 4MB means the firmware is using flash size 4 MB.

  • 0xd000 ota_data_initial.bin means downloading ota_data_initial.bin into the address 0xd000.

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 Tools for Windows. For more details about the tools, please see the doc folder in the zip folder.

  • Open the ESP32-C2 Flash Download Tool.

  • Select chipType. (Here, we select ESP32C2.)

  • 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

Firmware Download Configurations

  • Flash AT firmware into your device. You can select either of the two ways below.

    • To download one combined factory bin to address 0, select “DoNotChgBin” to use the default configuration of the factory bin.

      Download to One Address

      Download to One Address (click to enlarge)

    • To download multiple bins separately to different addresses, set up the configurations according to the file download.config and do NOT select “DoNotChgBin”.

      Download to Multiple Addresses

      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-C2 board is and select it from “COM:” dropdown list. If you don’t 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 PORTNAME and download.config:

    esptool.py --chip auto --port PORTNAME --baud 115200 --before default_reset --after hard_reset write_flash -z download.config
    

    Replace PORTNAME with your port name. If you don’t know it, you can refer to Check port on Linux and macOS for details.

    Replace download.config with the content inside the file.

    Below is the example command for ESP8684-MINI-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 60m --flash_size 4MB 0x0 bootloader/bootloader.bin 0x60000 esp-at.bin 0x8000 partition_table/partition-table.bin 0xd000 ota_data_initial.bin 0xf000 phy_init_data.bin 0x1e000 at_customize.bin 0x1F000 customized_partitions/server_cert.bin 0x21000 customized_partitions/server_key.bin 0x23000 customized_partitions/server_ca.bin 0x25000 customized_partitions/client_cert.bin 0x27000 customized_partitions/client_key.bin 0x29000 customized_partitions/client_ca.bin 0x32000 customized_partitions/mqtt_cert.bin 0x34000 customized_partitions/mqtt_key.bin 0x36000 customized_partitions/mqtt_ca.bin 0x2B000 customized_partitions/factory_param.bin
    
  • To download the bins together to one address, enter the following command and replace PORTNAME and FILEDIRECTORY:

    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 PORTNAME with your port name. If you don’t know it, you can refer to Check port on Linux and macOS for details.

    Replace FILEDIRECTORY with the file directory you would flash to the address 0x0. It is normally factory/XXX.bin.

    Below is the example command for ESP8684-MINI-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 60m --flash_size 4MB 0x0 factory/factory_MINI-1.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 the picture below shows, AT works.

Response from AT

Response from AT

Otherwise, you need to check your ESP32-C2 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 initalized 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-C2 startup log:

ESP-ROM:esp8684-api2-20220127
Build:Jan 27 2022
rst:0x1 (POWERON),boot:0xc (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fcd6108,len:0x18b0
load:0x403ae000,len:0x854
load:0x403b0000,len:0x2724
entry 0x403ae000
I (21) boot: ESP-IDF v5.0-dev-3424-gbb23d783c0 2nd stage bootloader
I (21) boot: compile time 19:44:11
I (21) boot: chip revision: 0
I (24) boot.esp32c2: MMU Page Size  : 64K
I (29) boot.esp32c2: SPI Speed      : 60MHz
I (34) boot.esp32c2: SPI Mode       : DIO
I (38) boot.esp32c2: SPI Flash Size : 4MB
I (43) boot: Enabling RNG early entropy source...
I (49) boot: Partition Table:
I (52) boot: ## Label            Usage          Type ST Offset   Length
I (59) boot:  0 otadata          OTA data         01 00 0000d000 00002000
I (67) boot:  1 phy_init         RF data          01 01 0000f000 00001000
I (74) boot:  2 nvs              WiFi data        01 02 00010000 0000e000
I (82) boot:  3 at_customize     unknown          40 00 0001e000 00042000
I (89) boot:  4 ota_0            OTA app          00 10 00060000 001d0000
I (97) boot:  5 ota_1            OTA app          00 11 00230000 001d0000
I (104) boot: End of partition table
I (108) esp_image: segment 0: paddr=00060020 vaddr=3c0d0020 size=279d8h (162264) map
I (153) esp_image: segment 1: paddr=00087a00 vaddr=3fcab2b0 size=018a0h (  6304) load
I (155) esp_image: segment 2: paddr=000892a8 vaddr=40380000 size=06d70h ( 28016) load
I (166) esp_image: segment 3: paddr=00090020 vaddr=42000020 size=c10f8h (790776) map
I (344) esp_image: segment 4: paddr=00151120 vaddr=40386d70 size=04534h ( 17716) load
I (353) boot: Loaded app from partition at offset 0x60000
I (353) boot: Disabling RNG early entropy source...
module_name:MINI-1
max tx power=78,ret=0
2.5.0