.. _Basic-AT:

Basic AT Commands
=================

:link_to_translation:`zh_CN:[中文]`

-  :ref:`AT <cmd-AT>`: Test AT startup.
-  :ref:`AT+RST <cmd-RST>`: Restart a module.
-  :ref:`AT+GMR <cmd-GMR>`: Check version information.
-  :ref:`AT+CMD <cmd-cmd>`: List all AT commands and types supported in current firmware.
-  :ref:`AT+GSLP <cmd-GSLP>`: Enter Deep-sleep mode.
-  :ref:`ATE <cmd-ATE>`: Configure AT commands echoing.
-  :ref:`AT+RESTORE <cmd-RESTORE>`: Restore factory default settings of the module.
-  :ref:`AT+UART_CUR <cmd-UARTC>`: Current UART configuration, not saved in flash.
-  :ref:`AT+UART_DEF <cmd-UARTD>`: Default UART configuration, saved in flash.
-  :ref:`AT+SLEEP <cmd-SLEEP>`: Set the sleep mode.
-  :ref:`AT+SYSRAM <cmd-SYSRAM>`: Query current remaining heap size and minimum heap size.
-  :ref:`AT+SYSMSG <cmd-SYSMSG>`: Query/Set System Prompt Information.
-  :ref:`AT+SYSFLASH <cmd-SYSFLASH>`: Query/Set User Partitions in Flash.
-  [ESP32 Only] :ref:`AT+FS <cmd-FS>`: Filesystem Operations.
-  :ref:`AT+RFPOWER <cmd-RFPOWER>`: Query/Set RF TX Power.
-  :ref:`AT+SYSROLLBACK <cmd-SYSROLLBACK>`: Roll back to the previous firmware.
-  :ref:`AT+SYSTIMESTAMP <cmd-SETTIME>`: Query/Set local time stamp.
-  :ref:`AT+SYSLOG <cmd-SYSLOG>`: Enable or disable the AT error code prompt.
-  :ref:`AT+SLEEPWKCFG <cmd-WKCFG>`: Query/Set the light-sleep wakeup source and awake GPIO.
-  :ref:`AT+SYSSTORE <cmd-SYSSTORE>`: Query/Set parameter store mode.
-  :ref:`AT+SYSREG <cmd-SYSREG>`: Read/write the register.
-  [ESP32-S2 Only] :ref:`AT+SYSTEMP <cmd-SYSTEMP>`: Read ESP32-S2 internal temperature.

.. _cmd-AT:

:ref:`AT <Basic-AT>`: Test AT Startup
------------------------------------------

Execute Command
^^^^^^^^^^^^^^^

**Command:**

::

    AT  

**Response:**

::

    OK  

.. _cmd-RST:

:ref:`AT+RST <Basic-AT>`: Restart a Module
-------------------------------------------------

Execute Command
^^^^^^^^^^^^^^^

**Command:**

::

    AT+RST  

**Response:**

::

    OK  

.. _cmd-GMR:

:ref:`AT+GMR <Basic-AT>`: Check Version Information
--------------------------------------------------------

Execute Command
^^^^^^^^^^^^^^^

**Command:**

::

    AT+GMR

**Response:**

::

    <AT version info>
    <SDK version info>
    <compile time>
    <Bin version>

    OK

Parameters
^^^^^^^^^^

-  **<AT version info>**: information about the esp-at core library version, which is under the directory: ``esp-at/components/at/lib/``. Code is closed source, no plan to open.
-  **<SDK version info>**: information about the esp-at platform sdk version, which is defined in file: ``esp-at/module_config/module_{platform}_default/IDF_VERSION``
-  **<compile time>**: the time to compile the firmware.
-  **<Bin version>**: esp-at firmware version. Version information can be modified in menuconfig.

Note
^^^^^

-  If you have any issues on esp-at firmware, please provide ``AT+GMR`` version information firstly.

Example
^^^^^^^^

::

    AT+GMR
    AT version:2.2.0.0-dev(ca41ec4 - ESP32 - Sep 16 2020 11:28:17)
    SDK version:v4.0.1-193-ge7ac221b4
    compile time(98b95fc):Oct 29 2020 11:23:25
    Bin version:2.1.0(MINI-1)

    OK

.. _cmd-CMD:

:ref:`AT+CMD <Basic-AT>`: List all AT commands and types supported in current firmware
--------------------------------------------------------------------------------------

Query Command
^^^^^^^^^^^^^

**Command:**

::

    AT+CMD?

**Response:**

::

    +CMD:<index>,<AT command name>,<support test command>,<support query command>,<support set command>,<support execute command>

    OK

Parameters
^^^^^^^^^^

-  **<index>**: AT command sequence number.
-  **<AT command name>**: AT command name.
-  **<support test command>**: 0 means not supported, 1 means supported.
-  **<support query command>**: 0 means not supported, 1 means supported.
-  **<support set command>**: 0 means not supported, 1 means supported.
-  **<support execute command>**: 0 means not supported, 1 means supported.

.. _cmd-GSLP:

:ref:`AT+GSLP <Basic-AT>`: Enter Deep-sleep Mode
-----------------------------------------------------

Set Command
^^^^^^^^^^^

**Command:**

::

    AT+GSLP=<time>  

**Response:**

::

    <time>

    OK

Parameter
^^^^^^^^^^

-  **<time>**: the duration when the device stays in Deep-sleep. Unit: millisecond. When the time is up, the device automatically wakes up, calls Deep-sleep wake stub, and then proceeds to load the application.

   - For ESP32 devices:

     - 0 means restarting right now
     - the maximum Deep-sleep time is about 28.8 days (2 :sup:`31`-1 milliseconds)

   - For ESP32-S2 devices:

     - 0 means staying in Deep-sleep mode forever
     - the maximum Deep-sleep time is about 28.8 days (2 :sup:`31`-1 milliseconds)
   
   - For ESP8266 devices:

     - 0 means staying in Deep-sleep mode forever
     - the maximum Deep-sleep time is about 3 hours (due to hardware limitation, more time will lead to setting failure or internal time overflow)

Notes
^^^^^^

- For ESP8266 devices, you must connect GPIO16 to RST pin to wake them up automatically when time is up.
- For all devices, affected by external factors, the theoretical and actual time of Deep-sleep will be different.
- ESP8266 devices can be waken up from Deep-sleep by directly triggering the RST pin low-level pulse.

.. _cmd-ATE:

:ref:`ATE <Basic-AT>`: Configure AT Commands Echoing
-----------------------------------------------------

Execute Command
^^^^^^^^^^^^^^^

**Command:**

::

    ATE0  

or

::

    ATE1  

**Response:**

::

    OK  

Parameters
^^^^^^^^^^

-  **ATE0**: Switch echo off.
-  **ATE1**: Switch echo on.

.. _cmd-RESTORE:

:ref:`AT+RESTORE <Basic-AT>`: Restore Factory Default Settings
-----------------------------------------------------------------------

Execute Command
^^^^^^^^^^^^^^^

**Command:**

::

    AT+RESTORE  

**Response:**

::

    OK  

Notes
^^^^^

-  The execution of this command will restore all parameters saved in flash to factory default settings of the module.
-  The device will be restarted when this command is executed.

.. _cmd-UARTC:

:ref:`AT+UART_CUR <Basic-AT>`: Current UART Configuration, Not Saved in Flash
----------------------------------------------------------------------------------

Query Command
^^^^^^^^^^^^^

**Command:**

::

    AT+UART_CUR?

**Response:**

::

    +UART_CUR:<baudrate>,<databits>,<stopbits>,<parity>,<flow control>

    OK

Set Command
^^^^^^^^^^^

**Command:**

::

    AT+UART_CUR=<baudrate>,<databits>,<stopbits>,<parity>,<flow control>

**Response:**

::

    OK

Parameters
^^^^^^^^^^

-  **<baudrate>**: UART baud rate

   - For ESP32 and ESP32-S2 devices, the supported range is 80 ~ 5000000.
   - For ESP8266 devices, the supported rang is 80 ~ 4500000.

-  **<databits>**: data bits

   -  5: 5-bit data
   -  6: 6-bit data
   -  7: 7-bit data
   -  8: 8-bit data

-  **<stopbits>**: stop bits

   -  1: 1-bit stop bit
   -  2: 1.5-bit stop bit
   -  3: 2-bit stop bit

-  **<parity>**: parity bit

   -  0: None
   -  1: Odd
   -  2: Even

-  **<flow control>**: flow control

   -  0: flow control is not enabled
   -  1: enable RTS
   -  2: enable CTS
   -  3: enable both RTS and CTS

Notes
^^^^^

-  The Query Command will return actual values of UART configuration parameters, which may have minor differences from the set value because of the clock division.
-  The configuration changes will NOT be saved in flash.
-  To use hardware flow control, you need to connect CTS/RTS pins of your ESP device. For more details, please refer to :doc:`../Get_Started/Hardware_connection` or ``components/customized_partitions/raw_data/factory_param/factory_param_data.csv``.

Example
^^^^^^^^

::

    AT+UART_CUR=115200,8,1,0,3  

.. _cmd-UARTD:

:ref:`AT+UART_DEF <Basic-AT>`: Default UART Configuration, Saved in Flash
------------------------------------------------------------------------------

Query Command
^^^^^^^^^^^^^

**Command:**

::

    AT+UART_DEF?

**Response:**

::

    +UART_DEF:<baudrate>,<databits>,<stopbits>,<parity>,<flow control>

    OK

Set Command
^^^^^^^^^^^

**Command:**

::

    AT+UART_DEF=<baudrate>,<databits>,<stopbits>,<parity>,<flow control>

**Response:**

::

    OK

Parameters
^^^^^^^^^^

-  **<baudrate>**: UART baud rate

   - For ESP32 and ESP32-S2 devices, the supported range is 80 ~ 5000000.
   - For ESP8266 devices, the supported rang is 80 ~ 4500000.

-  **<databits>**: data bits

   -  5: 5-bit data
   -  6: 6-bit data
   -  7: 7-bit data
   -  8: 8-bit data

-  **<stopbits>**: stop bits

   -  1: 1-bit stop bit
   -  2: 1.5-bit stop bit
   -  3: 2-bit stop bit

-  **<parity>**: parity bit

   -  0: None
   -  1: Odd
   -  2: Even

-  **<flow control>**: flow control

   -  0: flow control is not enabled
   -  1: enable RTS
   -  2: enable CTS
   -  3: enable both RTS and CTS

Notes
^^^^^

-  The configuration changes will be saved in the NVS area, and will still be valid when the chip is powered on again.
-  To use hardware flow control, you need to connect CTS/RTS pins of your ESP device. For more details, please refer to :doc:`../Get_Started/Hardware_connection` or ``components/customized_partitions/raw_data/factory_param/factory_param_data.csv``.

Example
^^^^^^^^

::

    AT+UART_DEF=115200,8,1,0,3  

.. _cmd-SLEEP:

:ref:`AT+SLEEP <Basic-AT>`: Set the Sleep Mode
---------------------------------------------------

Query Command
^^^^^^^^^^^^^

**Command:**

::

    AT+SLEEP?

**Response:**

::

    +SLEEP:<sleep mode>

    OK

Set Command
^^^^^^^^^^^

**Command:**

::

    AT+SLEEP=<sleep mode>

**Response:**

::

    OK

Parameter
^^^^^^^^^^

-  **<sleep mode>**:

   -  0: Disable the sleep mode.
   -  1: Modem-sleep DTIM mode. RF will be periodically closed according to AP DTIM.
   -  2: Light-sleep mode. CPU will automatically sleep and RF will be periodically closed according to ``listen interval`` set by :ref:`AT+CWJAP <cmd-JAP>`.
   -  3: Modem-sleep listen interval mode. RF will be periodically closed according to ``listen interval`` set by :ref:`AT+CWJAP <cmd-JAP>`.

Note
^^^^^

-  Modem-sleep mode and Light-sleep mode can be set only in station mode.
-  Before setting the Light-sleep mode, it is recommended to set the wakeup source in advance through the command :ref:`AT+SLEEPWKCFG <cmd-WKCFG>`, otherwise ESP devices can't wake up and will always be in sleep mode.
-  After setting the Light-sleep mode, if the Light-sleep wakeup condition is not met, ESP devices will automatically enter the sleep mode. When the Light-sleep wakeup condition is met, ESP devices will automatically wake up from sleep mode.
-  The query command can return 0, 1, 3, but not 2 (Due to query is not supported by ESP-IDF). That is to say, ``AT+SLEEP?`` will return 3 but not 2, if set ``AT+SLEEP=2``.

Example
^^^^^^^^

::

    AT+SLEEP=0

.. _cmd-SYSRAM:

:ref:`AT+SYSRAM <Basic-AT>`: Query Current Remaining Heap Size and Minimum Heap Size
-----------------------------------------------------------------------------------------

Query Command
^^^^^^^^^^^^^

**Command:**

::

    AT+SYSRAM?  

**Response:**

::

    +SYSRAM:<remaining RAM size>,<minimum heap size>
    OK  

Parameters
^^^^^^^^^^

-  **<remaining RAM size>**: current remaining heap size. Unit: byte.
-  **<minimum heap size>**: minimum heap size that has ever been available. Unit: byte.

Example
^^^^^^^^

::

    AT+SYSRAM?
    +SYSRAM:148408,84044
    OK

.. _cmd-SYSMSG:

:ref:`AT+SYSMSG <Basic-AT>`: Query/Set System Prompt Information
-----------------------------------------------------------------

Query Command
^^^^^^^^^^^^^

**Function:**

Query the current system prompt information state. 

**Command:**

::

    AT+SYSMSG?

**Response:**

::

    +SYSMSG:<state>
    OK          

Set Command
^^^^^^^^^^^

**Function:**

Configure system prompt information.

**Command:**

::

    AT+SYSMSG=<state>

**Response:**

::

    OK  

Parameter
^^^^^^^^^^

-  **<state>**:

   - Bit0: Prompt information when quitting Wi-Fi :term:`Passthrough Mode`.

     - 0: Print no prompt information when quitting Wi-Fi :term:`Passthrough Mode`.
     - 1: Print ``+QUITT`` when quitting Wi-Fi :term:`Passthrough Mode`.

   - Bit1: Connection prompt information type.

     - 0: Use simple prompt information, such as ``XX,CONNECT``.
     - 1: Use detailed prompt information, such as ``+LINK_CONN:status_type,link_id,ip_type,terminal_type,remote_ip,remote_port,local_port``.

   - Bit2: Connection status prompt information for Wi-Fi :term:`Passthrough Mode`, Bluetooth LE SPP and Bluetooth SPP.

     - 0: Print no prompt information.
     - 1: Print one of the following prompt information when Wi-Fi, socket, Bluetooth LE or Bluetooth status is changed:

      ::

           - "CONNECT\r\n" or the message prefixed with "+LINK_CONN:"
           - "CLOSED\r\n"
           - "WIFI CONNECTED\r\n"
           - "WIFI GOT IP\r\n"
           - "WIFI GOT IPv6 LL\r\n"
           - "WIFI GOT IPv6 GL\r\n"
           - "WIFI DISCONNECT\r\n"
           - "+ETH_CONNECTED\r\n"
           - "+ETH_DISCONNECTED\r\n"
           - the message prefixed with "+ETH_GOT_IP:"
           - the message prefixed with "+STA_CONNECTED:"
           - the message prefixed with "+STA_DISCONNECTED:"
           - the message prefixed with "+DIST_STA_IP:"
           - the message prefixed with "+BLECONN:"
           - the message prefixed with "+BLEDISCONN:"

Notes
^^^^^

-  The configuration changes will be saved in the NVS area if ``AT+SYSSTORE=1``.
-  If you set Bit0 to 1, it will prompt "+QUITT" when you quit Wi-Fi :term:`Passthrough Mode`.
-  If you set Bit1 to 1, it will impact the information of command :ref:`AT+CIPSTART <cmd-START>` and :ref:`AT+CIPSERVER <cmd-SERVER>`. It will supply "+LINK_CONN:status_type,link_id,ip_type,terminal_type,remote_ip,remote_port,local_port" instead of "XX,CONNECT".

Example
^^^^^^^^

::

    // print no promt info when quitting Wi-Fi passthrough mode
    // print detailed connection prompt info
    // print no prompt info when the connection status is changed
    AT+SYSMSG=2

.. _cmd-SYSFLASH:

:ref:`AT+SYSFLASH <Basic-AT>`: Query/Set User Partitions in Flash
-------------------------------------------------------------------

Query Command
^^^^^^^^^^^^^

**Function:**

Query user partitions in flash.

**Command:**

::

    AT+SYSFLASH?

**Response:**

::

    +SYSFLASH:<partition>,<type>,<subtype>,<addr>,<size>
    OK  

Set Command
^^^^^^^^^^^

**Function:**

Read/write the user partitions in flash. 

**Command:**

::

    AT+SYSFLASH=<operation>,<partition>,<offset>,<length>

**Response:**

::

    +SYSFLASH:<length>,<data>
    OK  

Parameters
^^^^^^^^^^

-  **<operation>**:

   -  0: erase sector
   -  1: write data into the user partition
   -  2: read data from the user partition

-  **<partition>**: name of user partition
-  **<offset>**: offset of user partition
-  **<length>**: data length
-  **<type>**: type of user partition
-  **<subtype>**: subtype of user partition
-  **<addr>**: address of user partition
-  **<size>**: size of user partition

Notes
^^^^^

-  Please make sure that you have downloaded at_customize.bin before using this command. For more details, please refer to :doc:`../Compile_and_Develop/How_to_customize_partitions`.
-  When erasing the targeted user partition in its entirety, you can omit the parameters ``<offset>`` and ``<length>``. For example, command ``AT+SYSFLASH=0,"ble_data"`` can erase the entire “ble_data” user partition. But if you want to keep the two parameters, they have to be 4KB-aligned.
-  The introduction to partitions is in `ESP-IDF Partition Tables <http://esp-idf.readthedocs.io/en/latest/api-guides/partition-tables.html>`_.
-  If the operator is ``write``, wrap return ``>`` after the write command, then you can send the data that you want to write. The length should be parameter ``<length>``.
-  If the operator is ``write``, please make sure that you have already erased this partition.
-  If the operator is ``write`` on a `PKI bin <https://github.com/espressif/esp-at/blob/master/tools/README.md#2-pki-bin>`_, the ``<length>`` should be 4 bytes aligned.

Example
^^^^^^^^

::

    // read 100 bytes from the "ble_data" partition offset 0.
    AT+SYSFLASH=2,"ble_data",0,100

    // write 10 bytes to the "ble_data" partition offset 100.
    AT+SYSFLASH=1,"ble_data",100,10

    // erase 8192 bytes from the "ble_data" partition offset 4096.
    AT+SYSFLASH=0,"ble_data",4096,8192

.. _cmd-FS:

[ESP32 Only] :ref:`AT+FS <Basic-AT>`: Filesystem Operations
---------------------------------------------------------------

Set Command
^^^^^^^^^^^

**Command:**

::

    AT+FS=<type>,<operation>,<filename>,<offset>,<length>

**Response:**

::

    OK  

Parameters
^^^^^^^^^^

-  **<type>**: only FATFS is currently supported.

   -  0: FATFS

-  **<operation>**:

   -  0: delete file.
   -  1: write file.
   -  2: read file.
   -  3: query the size of the file.
   -  4: list files in a specific directory. Only root directory is currently supported.

-  **<offset>**: apply to writing and reading operations only.
-  **<length>**: data length, applying to writing and reading operations only.

Notes
^^^^^

-  Please make sure that you have downloaded at_customize.bin before using this command. For more details, refer to `ESP-IDF Partition Tables <http://esp-idf.readthedocs.io/en/latest/api-guides/partition-tables.html>`_ and :doc:`../Compile_and_Develop/How_to_customize_partitions`.
-  If the length of the read data is greater than the actual file length, only the actual data length of the file will be returned.
-  If the operator is ``write``, wrap return ``>`` after the write command, then you can send the data that you want to write. The length should be parameter ``<length>``.

Example
^^^^^^^^

::

    // delete a file.
    AT+FS=0,0,"filename"

    // write 10 bytes to offset 100 of a file.
    AT+FS=0,1,"filename",100,10

    // read 100 bytes from offset 0 of a file.
    AT+FS=0,2,"filename",0,100

    // list all files in the root directory.
    AT+FS=0,4,"."

.. _cmd-RFPOWER:

:ref:`AT+RFPOWER <Basic-AT>`: Query/Set RF TX Power
----------------------------------------------------

Query Command
^^^^^^^^^^^^^

**Function:**

Query the RF TX Power.

**Command:**

::

    AT+RFPOWER?

**Response:**

::

    +RFPOWER:<wifi_power>,<ble_adv_power>,<ble_scan_power>,<ble_conn_power>
    OK

Set Command
^^^^^^^^^^^

**Command:**

::

    AT+RFPOWER=<wifi_power>[,<ble_adv_power>,<ble_scan_power>,<ble_conn_power>]

**Response:**

::

    OK

Parameters
^^^^^^^^^^

- **<wifi_power>**: the unit is 0.25 dBm. For example, if you set the value to 78, the actual maximum RF Power value is 78 * 0.25 dBm = 19.5 dBm. After you configure it, please confirm the actual value by entering the command ``AT+RFPOWER?``.

  - For ESP32 and ESP32-S2 devices, the range is [40,78]:

    ========= ============ ==========
    set value actual value actual dBm
    ========= ============ ==========
    [34,43]   34           8.5
    [44,51]   44           11
    [52,55]   52           13
    [56,59]   56           14
    [60,65]   60           15
    [66,71]   66           16.5
    [72,77]   72           18
    78        78           19.5
    ========= ============ ==========

  - For ESP32-C3 devices, the range is [40,84]:

    ========= ============ ==========
    set value actual value actual dBm
    ========= ============ ==========
    [40,80]   <set value>  <set value> * 0.25
    [81,84]   80           20
    ========= ============ ==========

  - For ESP8266 devices, the range is [40,82]:

    ========= ============ ==========
    set value actual value actual dBm
    ========= ============ ==========
    [40,47]   32           8
    [48,55]   48           12
    [56,63]   56           14
    [64,67]   64           16
    [68,73]   68           17
    [74,77]   74           18.5
    [78,81]   78           19.5
    82        82           20.5
    ========= ============ ==========

-  **<ble_adv_power>**: RF TX Power of Bluetooth LE advertising. Range: [0,7].

   -  0: 7 dBm
   -  1: 4 dBm
   -  2: 1 dBm
   -  3: -2 dBm
   -  4: -5 dBm
   -  5: -8 dBm
   -  6: -11 dBm
   -  7: -14 dBm

-  **<ble_scan_power>**: RF TX Power of Bluetooth LE scanning. Range: [0,7]: the parameters are the same as ``<ble_adv_power>``.
-  **<ble_conn_power>**: RF TX Power of Bluetooth LE connecting. Range: [0,7]: the same as ``<ble_adv_power>``.

Note
------

- Since the RF TX Power is actually divided into several levels, and each level has its own value range, the ``wifi_power`` value queried by the ``esp_wifi_get_max_tx_power`` may differ from the value set by ``esp_wifi_set_max_tx_power`` and is no larger than the set value.

.. _cmd-SYSROLLBACK:

:ref:`AT+SYSROLLBACK <Basic-AT>`: Roll Back to the Previous Firmware
------------------------------------------------------------------------

Execute Command
^^^^^^^^^^^^^^^

**Command:**

::

    AT+SYSROLLBACK

**Response:**

::

    OK

Note
^^^^^

-  This command will not upgrade via OTA. It only rolls back to the firmware which is in the other OTA partition.

.. _cmd-SETTIME:

:ref:`AT+SYSTIMESTAMP <Basic-AT>`: Query/Set Local Time Stamp
--------------------------------------------------------------

Query Command
^^^^^^^^^^^^^

**Function:**

Query the time stamp.

**Command:**

::

    AT+SYSTIMESTAMP?

**Response:**

::

    +SYSTIMESTAMP:<Unix_timestamp>
    OK

Set Command
^^^^^^^^^^^

**Function:**

Set local time stamp. It will be the same as SNTP time when the SNTP time is updated.

**Command:**

::

    AT+SYSTIMESTAMP=<Unix_timestamp>

**Response:**

::

    OK

Parameter
^^^^^^^^^^

-  **<Unix-timestamp>**: Unix timestamp. Unit: second.

Example
^^^^^^^^

::

    AT+SYSTIMESTAMP=1565853509    //2019-08-15 15:18:29

.. _cmd-SYSLOG:

:ref:`AT+SYSLOG <Basic-AT>`: Enable or Disable the AT Error Code Prompt
----------------------------------------------------------------------------

Query Command
^^^^^^^^^^^^^

**Function:**

Query whether the AT error code prompt is enabled or not.

**Command:**

::

    AT+SYSLOG?  

**Response:**

::

    +SYSLOG:<status>  

    OK  

Set Command
^^^^^^^^^^^

**Function:**

Enable or disable the AT error code prompt.

**Command:**

::

    AT+SYSLOG=<status>

**Response:**

::

    OK

Parameter
^^^^^^^^^^

-  **<status>**: enable or disable

   -  0: disable
   -  1: enable

Example
^^^^^^^^

::

   // enable AT error code prompt
   AT+SYSLOG=1

   OK
   AT+FAKE
   ERR CODE:0x01090000

   ERROR


::

   // disable AT error code prompt
   AT+SYSLOG=0

   OK
   AT+FAKE
   // No `ERR CODE:0x01090000` 

   ERROR  

The error code is a 32-bit hexadecimal value and defined as follows:

.. list-table::
   :header-rows: 1

   * - category
     - subcategory
     - extension
   * - bit32 ~ bit24
     - bit23 ~ bit16
     - bit15 ~ bit0

-  **category:** stationary value 0x01.
-  **subcategory:** error type.

   .. list-table:: Subcategory of Error Code  
      :header-rows: 1
       
      * - Error Type
        - Error Code
        - Description
      * - ESP_AT_SUB_OK
        - 0x00
        - OK
      * - ESP_AT_SUB_COMMON_ERROR
        - 0x01
        - reserved  
      * - ESP_AT_SUB_NO_TERMINATOR
        - 0x02
        - terminator character not found ("\r\n" expected)
      * - ESP_AT_SUB_NO_AT
        - 0x03
        - Starting AT not found (or at, At or aT entered)
      * - ESP_AT_SUB_PARA_LENGTH_MISMATCH
        - 0x04
        - parameter length mismatch
      * - ESP_AT_SUB_PARA_TYPE_MISMATCH
        - 0x05
        - parameter type mismatch
      * - ESP_AT_SUB_PARA_NUM_MISMATCH
        - 0x06
        - parameter number mismatch
      * - ESP_AT_SUB_PARA_INVALID
        - 0x07
        - the parameter is invalid
      * - ESP_AT_SUB_PARA_PARSE_FAIL
        - 0x08
        - parse parameter fail
      * - ESP_AT_SUB_UNSUPPORT_CMD
        - 0x09
        - the command is not supported
      * - ESP_AT_SUB_CMD_EXEC_FAIL
        - 0x0A
        - the command execution failed 
      * - ESP_AT_SUB_CMD_PROCESSING
        - 0x0B
        - processing of previous command is in progress
      * - ESP_AT_SUB_CMD_OP_ERROR
        - 0x0C
        - the command operation type is error

-  **extension:** error extension information. There are different extensions for different subcategory. For more information, please see the ``components/at/include/esp_at.h``.

For example, the error code ``ERR CODE:0x01090000`` means the command is not supported.

.. _cmd-WKCFG:

:ref:`AT+SLEEPWKCFG <Basic-AT>`: Set the Light-sleep Wakeup Source and Awake GPIO
-----------------------------------------------------------------------------------------

Set Command
^^^^^^^^^^^

**Command:**

::

    AT+SLEEPWKCFG=<wakeup source>,<param1>[,<param2>]

**Response:**

::

    OK

Parameters
^^^^^^^^^^

-  **<wakeup source>**:

   -  0: reserved, not supported now.
   -  1: reserved, not supported now.
   -  2: wakeup by GPIO.

-  **<param1>**:

   -  If the wakeup source is a timer, it means the time before wakeup. Unit: millisecond.
   -  If the wakeup source is GPIO, it means the GPIO number.

-  **<param2>**:

   -  If the wakeup source is GPIO, it means the wakeup level:

     - 0: low level.
     - 1: high level.

Note
^^^^^

-  GPIO16 as the RTC IO can not be set as GPIO wakeup source on ESP8266 platform for light sleep.

Example
^^^^^^^^

::

    // GPIO12 wakeup, low level
    AT+SLEEPWKCFG=2,12,0

.. _cmd-SYSSTORE:

:ref:`AT+SYSSTORE <Basic-AT>`: Query/Set Parameter Store Mode
--------------------------------------------------------------

Query Command
^^^^^^^^^^^^^

**Function:**

Query the AT parameter store mode.  

**Command:**

::

    AT+SYSSTORE?  

**Response:**

::

    +SYSSTORE:<store_mode>  

    OK  

Set Command
^^^^^^^^^^^

**Command:**

::

    AT+SYSSTORE=<store_mode>

**Response:**

::

    OK

Parameter
^^^^^^^^^^

-  **<store_mode>**:

   -  0: command configuration is not stored into flash.
   -  1: command configuration is stored into flash. (Default)

Note
^^^^^

- This command affects set commands only. Query commands are always fetched from RAM.
- Affected commands:

  - :ref:`AT+SYSMSG <cmd-SYSMSG>`
  - :ref:`AT+CWMODE <cmd-MODE>`
  - :ref:`AT+CIPV6 <cmd-IPV6>`
  - :ref:`AT+CWJAP <cmd-JAP>`
  - :ref:`AT+CWSAP <cmd-SAP>`
  - :ref:`AT+CWRECONNCFG <cmd-RECONNCFG>`
  - :ref:`AT+CIPAP <cmd-IPAP>`
  - :ref:`AT+CIPSTA <cmd-IPSTA>`
  - :ref:`AT+CIPAPMAC <cmd-APMAC>`
  - :ref:`AT+CIPSTAMAC <cmd-STAMAC>`
  - :ref:`AT+CIPDNS <cmd-DNS>`
  - :ref:`AT+CIPSSLCCONF <cmd-SSLCCONF>`
  - :ref:`AT+CIPRECONNINTV <cmd-AUTOCONNINT>`
  - :ref:`AT+CIPTCPOPT <cmd-TCPOPT>`
  - :ref:`AT+CWDHCPS <cmd-DHCPS>`
  - :ref:`AT+CWDHCP <cmd-DHCP>`
  - :ref:`AT+CWSTAPROTO <cmd-STAPROTO>`
  - :ref:`AT+CWAPPROTO <cmd-APPROTO>`
  - :ref:`AT+CWJEAP <cmd-JEAP>`
  - :ref:`AT+CIPETH <cmd-ETHIP>`
  - :ref:`AT+CIPETHMAC <cmd-ETHMAC>`
  - :ref:`AT+BLENAME <cmd-BNAME>`
  - :ref:`AT+BTNAME <cmd-BTNAME>`
  - :ref:`AT+BLEADVPARAM <cmd-BADVP>`
  - :ref:`AT+BLEADVDATA <cmd-BADVD>`
  - :ref:`AT+BLEADVDATAEX <cmd-BADVDEX>`
  - :ref:`AT+BLESCANRSPDATA <cmd-BSCANR>`
  - :ref:`AT+BLESCANPARAM <cmd-BSCANP>`
  - :ref:`AT+BTSCANMODE <cmd-BTSCANMODE>`
  - :ref:`AT+BLECONNPARAM <cmd-BCONNP>`

Examples
^^^^^^^^

::

   AT+SYSSTORE=0
   AT+CWMODE=1  // Not stored into flash
   AT+CWJAP="test","1234567890" // Not stored into flash

   AT+SYSSTORE=1
   AT+CWMODE=3  // Stored into flash
   AT+CWJAP="test","1234567890" // Stored into flash

.. _cmd-SYSREG:

:ref:`AT+SYSREG <Basic-AT>`: Read/Write the Register
--------------------------------------------------------

Set Command
^^^^^^^^^^^

**Command:**

::

    AT+SYSREG=<direct>,<address>[,<write value>]

**Response:**

::

    +SYSREG:<read value>    // Only in read mode
    OK

Parameters
^^^^^^^^^^

-  **<direct>**: read or write register.

   -  0: read register.
   -  1: write register.

-  **<address>**: (uint32) register address. You can refer to Technical Reference Manuals.
-  **<write value>**: (uint32) write value (only in write mode).

Note
^^^^^

- AT does not check address. Make sure that the registers you are operating on are valid.

Example
^^^^^^^^

::

    // Enable ESP32-S2 IO33 output, 0x3F40402C means base address 0x3F404000 add relative address 0x2C (GPIO_ENABLE1_REG)
    AT+SYSREG=1,0x3F40402C,0x2

    // ESP32-S2 IO33 output high
    AT+SYSREG=1,0x3F404010,0x2

    // ESP32-S2 IO33 output low
    AT+SYSREG=1,0x3F404010,0x0

.. _cmd-SYSTEMP:

[ESP32-S2 Only] :ref:`AT+SYSTEMP <Basic-AT>`: Read ESP32-S2 Internal Temperature
------------------------------------------------------------------------------------------

Query Command
^^^^^^^^^^^^^

**Command:**

::

    AT+SYSTEMP?  

**Response:**

::

    +SYSTEMP:<temperature>
    OK  

Parameter
^^^^^^^^^^

-  **<temperature>**: the measured output value. Unit: Celsius.

Note
^^^^^

-  Measure range: -10℃ ~ 80℃. Error < 1℃.

Example
^^^^^^^^

::

    AT+SYSTEMP?
    +SYSTEMP:21.59
    OK