ESP8266 AT Commands

In this tutorial, I’ll show you some of the important and frequently used ESP8266 AT Commands or AT Instruction Set.  

ESP8266 WiFi Module offers complete networking solutions to our DIY (Do-it-yourself) and IoT (Internet of Things) projects. It provides WiFi connectivity to any microcontroller through its full TCP/IP Stack.

The ESP8266 WiFi module and the microcontroller can be interface through UART and with the help of a wide range of AT Commands, the Microcontroller can control the ESP Module.

The AT Commands of the ESP8266 WiFi Module are responsible for controlling all the operations of the module like restart, connect to WiFi, change mode of operation and so forth. So, it is important to understand the ESP8266 AT Commands, at least a few important ones if not all.

Types of ESP8266 AT Commands

Before going into the details of the AT Command Set and how the AT Commands are divided, you need to understand about the different types AT Commands.

Basically, the ESP8266 AT Commands can be classified into four types:

  • Test
  • Query
  • Set
  • Execute

The following table gives you a clear idea about these different types of AT Commands. Here, I’ll use a sample command as “TEST” to demonstrate the differences.

Command Type

AT Command FormatFunction

Test

AT+TEST=?

Returns value range of parameters

Query

AT+TEST?

Returns current value

Set

AT+TEST=parameter1, parameter2, …

Set configuration

ExecuteAT+TEST

Executes an action

  

Test Commands: The Test AT Commands of ESP8266 WiFi Module are used to get the parameters of a command and their range.

Query Commands: The Query Commands returns the present value of the parameters of a command.

Set Commands: The Set Commands are used set the values of the parameters in the commands and also runs the commands.

Execute Commands: The Execute Commands will run the commands without parameters.  

NOTE: Not all the ESP8266 AT Commands support all the four command types.

Now that we have seen the different types of ESP8266 AT Commands, let us proceed with the actual AT Commands list.

ESP8266 AT Commands Set

The ESP8266 AT Commands Set is divided into three categories. They are:

  • Basic AT Commands 
  • WiFi AT Commands 
  • TCP/IP AT Commands 

There are a total of 88 AT Commands for ESP8266 WiFi Module. I will not talk about all the 88 AT Commands but just a few important ones.

If you want to know the details of all the ESP8266 AT Commands, then I suggest you to visit the official documentation page provided by Espressif Systems (the manufacturer of ESP8266EX SoC). You can view the official ESP8266 AT Commands Documentation from here.   

Let us see about different ESP8266 AT Commands in each category along with their format (syntax) and responses.

NOTE: The Parameters mentioned in [] are optional.

Basic ESP8266 AT Commands

As per the official documentation from Espressif Systems, there are a total of 23 Basic AT Commands.

Basic AT Commands
AT
AT+RST
AT+GMR

AT

This is the basic command that tests the AT start up i.e. if the AT System is working correctly or not. If the AT start up is successful, then the response is OK.

CommandResponse
ATOK

 

AT+RST

This command can be used to restart (reset) the ESP8266 WiFi Module.    

CommandResponse
AT+RSTOK

 

AT+GMR

This command is used to check the version information of the firmware and SDK. The response consists of three things: the AT Firmware version, the SDK version and the compilation time of the BIN file.

CommandResponse
AT+GMR

<AT Version>

<SDK Version>

<Compile Time>

OK

 

Other important Basic AT Commands: AT+GSLP, ATE and AT+UART.

WiFi AT Commands

The WiFi AT Commands are useful in controlling the WiFi features of the ESP8266 Module like setting up the WiFi Mode of operation, get the list of WiFi Networks, connect to a WiFi Network, setup the Access Point (AP), control DHCP, WPS, MAC Address, IP Address etc.

As per the official documentation, there are 40 WiFi AT Commands for ESP8266 Module. Let me introduce a few important AT Commands.

WiFi AT Commands
AT+CWMODE
AT+CWJAP
AT+CWLAP
AT+CWQAP
AT+CIPSTA
AT+CWSAP
AT+CWLIF

 

AT+CWMODE

This command is used to set the WiFi Mode of operation as either Station mode, Soft Access Point (AP) or a combination of Station and AP. The CWMODE command supports Test, Query and Set type commands.

The syntax, response and parameters (in Set command) of this command are given in the following table.

AT+CWMODE
Command TypeTestQuerySet
FormatAT+CWMODE=?AT+CWMODE?AT+CWMODE=<mode>
Response

+CWMODE:<mode>

OK

+CWMODE:<mode>

 

OK

OK
Parameters

<mode>

1: Station

2: Soft Access Point (AP)

3: Station+SoftAP

Function Returns current WiFi ModeSets WiFi Mode
      

 

AT+CWLAP

This command lists out all the available WiFi Networks in the reach of ESP8266. It has both Set and Execute Command types.

AT+CWLAP
Command TypeSetExecute
Format

AT+CWLAP[=<ssid>,<mac>,<channel>,<scan_type>

,<scan_time_min>,<scan_time_max>]

AT+CWLAP
Response

+CWLAP:<ecn>,<ssid>,<rssi>,<mac>,<channel>,<

freq      offset>,<freq   cali>,<pairwise_cipher>,

<group_cipher>,<bgn>,<wps>

OK

 

NOTE: For more information on Parameters, please refer to the original documentation.

AT+CWJAP

This command is to connect to an Access Point (like a router).

 

AT+CWJAP
Command TypeQuerySet
FormatAT+CWJAP?AT+CWJAP=<ssid>,<pwd>[,<bssid>]
Response

+CWJAP:<ssid>,<bssid>,<channel>,<rssi>

OK

OK

or

+CWJAP:<error>

FAIL

Parameters

<ssid>: SSID of the Access Point.

<pwd>: Password.

[<bssid>]: MAC Address of AP (used

when multiple APs have the same SSID.)

<error>

1: Connection timeout.

2: Wrong password.

3: Cannot find the target AP.

4: Connection failed.

 

AT+CWQAP

This command is used to disconnect the ESP8266 from an Access Point.

CommandResponse
AT+CWQAPOK

 

AT+CIPSTA

This command is used to set a static IP Address to the ESP8266 WiFi Module in Station Mode. This command has both Query and Set type commands.

AT+CIPSTA
Command TypeQuerySet
FormatAT+CIPSTA?AT+CIPSTA=<ip>[,<gateway>,<netmask>]
Response

+CIPSTA:<ip>

+CIPSTA:<gateway>

+CIPSTA:<netmask>

 

OK

OK
Parameters<ip>: IP Address

<gateway>: Gateway

<netmask>: Netmask

FunctionReturns the IP address, Gateway and Netmask.Sets IP Address, Gateway and Netmask.

 

AT+CWSAP

This command is used to configure the ESP8266 WiFi Module in Soft Access Point (AP) Mode. Both Query and Set types are available for this command.

AT+CWSAP
Command TypeQuerySet
FormatAT+CWSAP?

AT+CWSAP =<ssid>,<pwd>,<chl>,<ecn>[,<max

conn>][,<ssid  hidden>]

Response+CWSAP:<ssid>,<pwd>,<chl>,<ecn>,<max conn>,<ssid hidden>OK

or

ERROR

Parameter

<ssid>: SSID of AP.

<pwd>: Password.

<chl>: Channel ID.

<ecn>: Encryption method.

0: OPEN

2: WPA_PSK

3: WPA2_PSK

4: WPA_WPA2_PSK

<max conn>: Max # of Stations

<ssid hidden>:

0: SSID is broadcasted. (default)

1: SSID is not broadcasted.

 

AT+CWLIF

Using this command, you can get the IP addresses of Stations that are connected to ESP8266, which is configured in SoftAP Mode.

AT+CWLIF
Format (Execute Command)AT+CWLIF
Response

<ip addr>,<mac>

OK

Parameters

<ip address>: IP Address of the Station

<mac>: MAC Address of the station

 

TCP/IP AT Commands

The TCP/IP AT Commands are responsible for communication over the internet. There are a total of 25 TCP/IP AT Commands for ESP8266 WiFi Module. Some of the important ones are mentioned here.

TCP/IP Commands
AT+CIPSTATUS
AT+CIPSTART
AT+CIFSR
AT+CIPMUX
AT+CIPSERVER
AT+CIUPDATE

 

AT+CIPSTATUS

This TCP/IP AT Command of the ESP8266 WiFi Module get the information or status of the connection. Only the Execute type command is available.

AT+CIPSTATUS
Command TypeExecute
FormatAT+CIPSTATUS
Response

STATUS:<stat>

+CIPSTATUS:<linkID>,<type>,<remoteIP>,<remoteport>,<localport>,<tetype>

Parameter

<stat>:

2: Connected to an AP and its IP is obtained.

3: Created a TCP or UDP transmission.

4: Disconnected.

5: Does NOT connect.

<linkID>: ID of the connection.

<type>: “TCP” or “UDP”.

<remoteIP>: Remote IP address.

<remoteport>: Remote port number.

<localport>: Local port number.

<tetype>:

0: Client.

1: Server.

 

AT+CIPSTART

This AT Command is used to establish one of the three connections: TCP, UDP or SSL. Depending on the type of TCP Connection (single or multiple), the format of the Set command will vary.

AT+CIPSTART
Command TypeSet
FormatSingle TCP ConnectionMultiple TCP Connection

AT+CIPSTART=<type>,

<remoteIP>,<remoteport>

[,<TCPkeepalive>]

AT+CIPSTART=<linkID>,<type>,

<remoteIP>,<remoteport>

[,<TCPkeepalive>]

Response

OK

or

ERROR

(Response when TCP connection is already established:

ALREADY CONNECTED)

Parameters

<link    ID>: ID of connection.

<type>: “TCP”, “UDP” or “SSL”.

<remoteIP>: Remote IP address.

<remoteport>: Remote port number.

[<TCPkeepalive>]: detection time interval

 

NOTE: The above table shows command for only establishing the TCP Connection. For establishing UDP and SSL Connections, please refer to the official documentation.

AT+CIFSR

This AT Command is used to obtain the IP Address of the ESP8266 WiFi Module.

AT+CIFSR
Command TypeExecute
FormatAT+CIFSR
Response

+CIFSR:APIP,<SoftAPIPaddress>

+CIFSR:APMAC,<SoftAPMACaddress>

+CIFSR:STAIP,<StationIPaddress>

+CIFSR:STAMAC,<StationMACaddress>

OK

Parameters

<SoftAPIPaddress>: IP address of the ESP8266 SoftAP;

<SoftAPMACaddress>: MAC address of the ESP8266 SoftAP

<StationIPaddress>: IP address of the ESP8266 Station.

<StationMACaddress>: MAC address of the ESP8266 Station

 

AT+CIPMUX

This AT Command is used to enable or disable multiple TCP Connections.

AT+CIPMUX
Command TypeQuerySet
FormatAT+CIPMUX?AT+CIPMUX=<mode>
Response

+CIPMUX:<mode>

OK

OK
Parameters

<mode>:

0: Single connection

1: Multiple connections

 

AT+CIPSERVER

This AT Command is used to create or delete a TCP Server.

AT+CIPSERVER
Command TypeSet
FormatAT+CIPSERVER=<mode>[,<port>]
ResponseOK
Parameters

<mode>:

0: Delete Server.

1: Create Server.

 

NOTE: A TCP Server can be created only when AT+CIPMUX=1 i.e. multiple connections are enabled.

AT+CIUPDATE

This AT Command is used update the software through WiFi Connection i.e. for over the air (OTA) updates.

AT+CIUPDATE
Command TypeExecute
FormatAT+CIUPDATE
Response

+CIPUPDATE:<n>

OK

Parameters

<n>:

1: Find the Server

2: Connect to the Server

3: Get the Software Version

4: Start Update

 

RELATED POSTS:

GETTING STARTED WITH ESP8266 AND ARDUINO 

HOW TO FLASH FIRMWARE IN ESP8266? 

DIY BREAKOUT BOARD FOR ESP8266 PCB

4 Responses

  1. hello bro, thank you for your post, but please how do i get the mac address of my client? for exemple, esp8266 mode: station webserver, i need to get the mac address of my client, using command AT.

    one more time, very thanks for your post.

Leave a Reply

Your email address will not be published. Required fields are marked *