:link_to_translation:zh_CN:[中文]
If there is no released fimware for your module in the AT_Binary_Lists/index
chapter, please consider the following options:
- Use the firmware for the module that has the same hardware configuration as yours (see
Compile_and_Develop/esp-at_firmware_differences
for which module has the same configuration). - Refer to
firmware-selection
.
The esp-at project is distributed as a combination of source code and pre-compiled libraries in this repository. The pre-compiled core libraries (under the directory:
esp-at/components/at/lib/
) are closed-source, and there is no plan for open-sourcing them.
- Download the flash tool: Flash Download Tools.
- See
AT Downloading Guide <Get_Started/Downloading_guide>
for the download address.
You can use the combine button of the Flash Download Tools.
esp32
Why is the error "flash read err,1000" printed on the serial port after powering up the newly purchased ESP32-WROVE-E module? How to use AT commands for this module?
- The ESP32-WROVER-E module is shipped without AT firmware, so the error "flash read err" appears.
- If you want to use the AT command function of ESP32-WROVER-E, please refer to the following links to get the firmware and flash it.
Download firmware <firmware-esp32-wrover-32-series>
;Connect hardware <hw-connection-esp32-wrover-series>
;Flash firmware <flash-at-firmware-into-your-device>
.
- Hardware flow control is supported, but software flow control is not.
- To enable or disable hardware flow control, run
AT+UART_CUR <cmd-UARTC>
orAT+UART_DEF <cmd-UARTD>
.- See
Hardware connection <Get_Started/Hardware_connection>
for more details.
- The "busy" prompt indicates that the previous command is being executed, and the system cannot respond to the current input. The processing mechanism of the AT commands is serial, i.e. one command at a time.
- Any input through serial ports is considered to be a command input, so the system will also prompt "busy" or "ERROR" when there is any extra invisible character input.
- Serial input AT+GMR (change character CR LF) (space character), because AT+GMR (change character CR LF) is already a complete AT command, the system will execute the command. At this time, if the system has not completed the AT+GMR operation, it has received the following space character, which will be regarded as a new command input, and the system will prompt "busy". But if the system has completed the AT+GMR operation, and then receives the following space character, the space character will be regarded as an error command, and the system will prompt "ERROR".
- After the MCU sends AT+CIPSEND and receives the busy p.. response, the MCU needs to resend the data. Because busy p.. represents the previous command is being executed, the current input is invalid. It is recommended to wait for the response of the last AT command before the MCU sends a new command again.
Why does the ESP-AT firmware always return the following message after the I powered up the device and sent the first command?
ERR CODE:0x010b0000 busy p...
- This message means that the previous command is being executed.
- Normally only "busy p..." is displayed. The ERR CODE is displayed because the error code prompt is enabled.
- If you receive this message after sending the first command on power-up, the possible reasons are: the command is followed by the unnecessary newline/space/other symbols; or two or more AT commands are sent in succession.
What commands are supported by the default ESP-AT firmware on different modules, and from which version are they supported?
- To learn what commands are supported by the default ESP-AT firmware on different modules, please refer to
Compile_and_Develop/esp-at_firmware_differences
.- To learn from which version a command is supported and what issues are fixed in each version, please refer to release notes.
When the host MCU sends an AT command to the {IDF_TARGET_NAME} device, there is no response. What is the reason?
A terminator ("AT\r\n") must be added after an AT command when the host MCU sending AT commands to an {IDF_TARGET_NAME} device. Please see
check-whether-at-works
.
You can check the Wi-Fi disconnection reason code on the
AT log port
, which usually printswifi disconnected, rc:<reason_code>
. The<reason_code>
here refers to Wi-Fi Reason Code.
- AMPDU compatibility issue.
- If the router does not support AMPDU, {IDF_TARGET_NAME} will automatically disable the AMPDU function when interacting with the router.
- If the router supports AMPDU but there is a compatibility issue with AMPDU transmission between the router and {IDF_TARGET_NAME}, it is recommended to disable the function on the router or {IDF_TARGET_NAME}. For information on how to disable it on {IDF_TARGET_NAME}, please refer to
Compile_and_Develop/How_to_clone_project_and_compile_it
and select the following options in the fifth step of configuring the project:
- Disable
Component config
->Wi-Fi
->WiFi AMPDU TX
- Disable
Component config
->Wi-Fi
->WiFi AMPDU RX
- Phy mode compatibility issue. If there is a compatibility issue with the phy mode between the router and {IDF_TARGET_NAME}, it is recommended to switch it on the router or {IDF_TARGET_NAME}. For how to switch it on {IDF_TARGET_NAME}, please refer to the
AT+CWSTAPROTO <cmd-STAPROTO>
command.
Currently, AT commands do not support ESP-WIFI-MESH.
- Not supported in the default firmware.
- It can be implemented by custom commands. See websocket and
Compile_and_Develop/How_to_add_user-defined_AT_commands
for more information.
Yes, the
AT+RFPOWER <cmd-RFPOWER>
command can set Bluetooth LE transmit power. {IDF_TARGET_NAME} Wi-Fi and Bluetooth LE share the same antenna.
esp32
Yes, please refer to
Bluetooth LE AT Commands <AT_Command_Set/BLE_AT_Commands>
.
How to support commands that are not supported by the default firmware but can be supported after configuring and compiling the ESP-AT project?
For example, if you need to support the WPA2 Enterprise function on the {IDF_TARGET_NAME} series, configure and compile the firmware by yourself. Open the WPA2 Enterprise function in menuconfig when compiling:
./build.py menuconfig
>Component config
>AT
>[*]AT WPA2 Enterprise command support
.
Please refer to the escape character syntax described in the
at-command-types
section.
Yes, you can use either of the two ways below to modify it:
- Use the command
AT+UART_CUR <cmd-UARTC>
orAT+UART_DEF <cmd-UARTD>
.- Re-compile the AT firmware:
establish the compiling environment <Compile_and_Develop/How_to_clone_project_and_compile_it>
andchange the UART baudrate <Compile_and_Develop/How_to_set_AT_port_pin>
.
After {IDF_TARGET_NAME} enters the passthrough mode using AT commands, can {IDF_TARGET_NAME} give a message if the connected hotspot is disconnected?
- Yes, you can configure it with
AT+SYSMSG <cmd-SYSMSG>
, i.e., set AT+SYSMSG=4. In this way, the serial port will reportWIFI DISCONNECT\\r\\n
when the connected hotspot is disconnected.- Note that this command is added after AT v2.1.0. It is not available for v2.1.0 and earlier versions.
esp32
The
AT+BLEADVDATA <cmd-BADVD>
command supports up to 31 bytes of ADV broadcast parameters. If you need to set a bigger parameter, please use commandAT+BLESCANRSPDATA <cmd-BSCANR>
.
- Besides the read and write properties, Bluetooth LE characteristics also have the
notify
andindicate
properties, which allow the server to send data to the client, but the client must first register fornotification
by writing the value of "CCCD".- To enable
notify
, write0x01
. To enableindicate
, write0x02
(for the descriptor "0x2902"). To enable bothnotify
andindicate
, write0x03
.- The example below demonstrates how to enable the
notify
andindicate
properties for the descriptor0x2902
under the services0xC305
and0xC306
respectively. The two services are default services in ESP-AT, of which0xC305
can be notified and0xC306
can be indicated.AT+BLEGATTCWR=0,3,6,1,2 > // Write 0x01 OK // Server: +WRITE:0,1,6,1,2,<0x01>,<0x00> AT+BLEGATTCWR=0,3,7,1,2 > // Write 0x02 OK // Server: +WRITE:0,1,6,1,2,<0x02>,<0x00> // Writing ccc is a prerequisite for the server to be able to send notify and indicate
- For {IDF_TARGET_NAME} series modules, please refer to
ESP-AT Firmware Differences <Compile_and_Develop/esp-at_firmware_differences>
.
- esp32
- For {IDF_TARGET_NAME}, the error log is output through the download port. By default, UART0 is GPIO1 and GPIO3.
- esp32c2 or esp32c3
- For {IDF_TARGET_NAME}, the error log is output through the download port. By default, UART0 is GPIO21 and GPIO20.
- See
Get_Started/Hardware_connection
for more details.
The UART1 communication pin used by ESP-AT on the {IDF_TARGET_NAME} module is inconsistent with the default UART1 pin described in the {IDF_TARGET_NAME} module's datasheet? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- {IDF_TARGET_NAME} supports IO matrix. When compiling ESP-AT, you can configure UART1 pins in menuconfig, so they may be inconsistent with the pins described in the module datasheet.
- See :component_file:`factory_param_data.csv <customized_partitions/raw_data/factory_param/factory_param_data.csv>` for more details.
- In an office scenario, the connection time is 5 seconds. However, in actual practice, Wi-Fi connection time depends on the router performance, network environment, module antenna performance, etc.
- The maximum timeout time can be set by the <jap_timeout> parameter of
AT+CWJAP <cmd-JAP>
.
- Currently, it cannot be changed by AT commands, but you can configure and compile the ESP-AT project to generate a new firmware.
- You can configure the menuconfig parameter:
Component config
>LWIP
>TCP
>Default send buffer size
.
- Many factors are affecting the AT throughput test. It is recommended to use the iperf example in esp-idf for testing. While testing, please use the passthrough mode, adjust the data length to 1460 bytes, and send data continuously.
- If the test rate does not meet your requirements, please refer to
Compile_and_Develop/How_to_optimize_throughput
.
esp32
What is the maximum rate of {IDF_TARGET_NAME} AT default firmware Bluetooth LE UART transparent transmission? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In an open office environment, when the serial port baud rate is 2000000, the average transmission rate of ESP-AT Bluetooth is 0.56 Mbps, and the average transmission rate of ESP-AT Bluetooth LE is 0.101 Mbps.
- esp32
- {IDF_TARGET_NAME} can transmit AT commands through UART and SDIO.
- esp32c2 or esp32c3 or esp32c6
- {IDF_TARGET_NAME} can transmit AT commands through UART and SPI.
- The default firmware uses UART for transmission. If you need SDIO or SPI interface to transmit AT commands, you can configure it through
./build.py menuconfig
>Component config
>AT
when compiling the ESP-AT project by yourself.- See :project_file:`AT through SDIO <main/interface/sdio/README.md>, :project_file:`AT through SPI <main/interface/spi/README.md>, or :project_file:`AT through socket <main/interface/socket/README.md>` for more details.
esp32
The Ethernet function is disable in AT default firmware, if you need to enable the Ethernet function, please refer to
How to Enable ESP-AT Ethernet <Compile_and_Develop/How_to_enable_ESP_AT_Ethernet>
.
esp32
Please contact Espressif for solutions.
When compiling the esp-at project, you can disable the unwanted versions in the
./build.py menuconfig
>Component config
>mbedTLS
.
- At present, the maximum number of TCP connections of the AT default firmware is 5.
- The {IDF_TARGET_NAME} AT supports a maximum of 16 TCP connections, which can be configured in menuconfig as follows:
./build.py menuconfig
>Component config
>AT
>(16)AT socket maximum connection number
./build.py menuconfig
>LWIP
>(16)Max number of open sockets
esp32
- Not supported, please refer to pppos_client demos for your own implementation.
- Enable log level:
./build.py menuconfig
>Component Config
>Log output
>Default log verbosity
set toDebug
.
- Enable Wi-Fi debug:
./build.py menuconfig
>Component config
>Wi-Fi
>Wi-Fi debug log level
set toDebug
.- Enable TCP/IP debug:
./build.py menuconfig
>Component config
>LWIP
>Enable LWIP Debug
> Set the log level of the specific part you want to debug toDebug
.- Enable Bluetooth LE debug:
./build.py menuconfig
>Component config
>Bluetooth
>Bluedroid Options
>Disable BT debug logs
>BT DEBUG LOG LEVEL
> Set the log level of the specific part you want to debug toDebug
.