WLAN Commands
The following sections document RS9116 WiSeConnect commands, parameters, responses and availability. For error codes returned by commands, see https://docs.silabs.com/rs9116-wiseconnect/latest/wifibt-wc-sapi-reference/error-codes
Index
Group | AT Command API | Description |
---|---|---|
Configuration & Setup | ||
rsi_apconf | Configure AP Mode | |
rsi_buf_alloc | Set Rx/Tx/Global buffer ratio | |
rsi_cfgenable | Enable Auto-Join / Auto-Create | |
rsi_cfgget | Read Stored Configuration Parameters | |
rsi_cfgsave | Store Configuration Parameters | |
rsi_store_server_ip_port | Store Server IP and Port Parameters | |
rsi_config | WLAN Configuration | |
rsi_filter_bcast | Set Broadcast Filter threshold | |
rsi_init | Initialise PHY and Radio | |
rsi_mac | Query MAC Address | |
rsi_opermode | Operating Mode | |
rsi_reset | Soft Reset | |
rsi_setmac | Set MAC Address | |
rsi_trigger_auto_config | Trigger Auto Configuration | |
rsi_usercfg | Store User Configuration Parameters | |
Firmware Update | ||
rsi_fwupok | Wireless Firmware Update | |
rsi_fwversion | Query Firmware Version | |
rsi_httpota | Update firmware via HTTP | |
rsi_otaf | Update firmware via TCP | |
Networking Protocols and Data Transfer | ||
rsi_ftp | FTP Client | |
rsi_cls | Close Socket | |
rsi_credentials | Set HTTP server credentials | |
rsi_ctcp | Query TCP Server Socket Status | |
rsi_dnsget | DNS Resolution | |
rsi_dnsserver | DNS Server | |
rsi_dnsupdate | DNS Update | |
rsi_jsoncreate | Write Dynamic Webpage | |
rsi_http_abort | Abort HTTP GET/POST | |
rsi_httpget | HTTP Get | |
rsi_httppost | HTTP Post | |
rsi_http_post_data | HTTP Post Data | |
rsi_httpput | HTTP Put | |
rsi_ipconf | Set IP Parameters | |
rsi_mdns | mDNS/DNS-SD Client | |
rsi_mqtt | MQTT Client | |
rsi_multicast_filter | Multicast Filter | |
rsi_multicast | Join/Leave Multicast Group | |
rsi_nwparams | Query Network Parameters | |
rsi_ping | ICMP Ping | |
rsi_read | Read Data | |
rsi_snd | Send Data | |
rsi_sntp | SNTP Client | |
rsi_socket_config | Socket Configuration Parameters | |
rsi_tcp | Open a Socket | |
rsi_trans_mode_params | Transparent Serial passthrough mod | |
rsi_webpage | Write Static Webpage | |
Peripherals & Time | ||
rsi_get_rtc_time | Get RTC time | |
rsi_get_ram_dump | Get RAM Dump | |
rsi_hfc | UART Hardware flow Control | |
rsi_host_rtc_time | Set RTC time | |
Powersave | ||
rsi_pwmode | Power Mode | |
rsi_sleeptimer | Set Sleep Timer | |
rsi_wmm_config | WMM Powersave | |
Radio Configuration | ||
rsi_antenna | Select Antenna | |
rsi_band | Radio Band | |
rsi_calib_write | Write Calibration Data | |
rsi_feat_frame | Set Feature Frame (radio parameters) | |
rsi_freq_offset | Frequency Offset Correction | |
rsi_gain_table | Configure Gain Table | |
rsi_setregion | Set Regulatory domain for Client Mode | |
rsi_setregion_ap | Set Regulatory Domain for AP Mode | |
Security | ||
rsi_authmode | WEP Authentication Mode | |
rsi_cert_index | Set Certificate with Index | |
rsi_cert | Set TLS Certificate | |
rsi_eap | EAP Configuration | |
rsi_wepkey | Set WEP Keys | |
rsi_wps_method | WPS Pin Method | |
Test & PER | ||
rsi_bytes_sent_count | Query Socket Transmit byte count | |
rsi_clearfiles | Erase All Webpages | |
rsi_debug | Configure UART Debug Prints | |
rsi_erasefile | Erase Static Webpage | |
rsi_erasejson | Erase Dynamic Webpage | |
rsi_get_wlan_stats | Get WLAN Statistics | |
rsi_per | PER Mode Transmit Test | |
rsi_per_stats | Query PER Statistics | |
rsi_urlrsp | Webpage Passthrough | |
Wi-Fi Connection | ||
rsi_bgscan | Background Scan | |
rsi_disassoc | Wi-Fi Disassociate | |
rsi_ht_caps | High-throughput Capabilities | |
rsi_join | Wi-Fi Join | |
rsi_psk | Wi-Fi Preshared Key | |
rsi_rejoin | Wi-Fi Rejoin | |
rsi_roam_params | Roam Parameters | |
rsi_scan | Wi-Fi Scan | |
rsi_timeout | Set WLAN Connection Timeouts |
.
AT Command API (Asynchronous Responses) | Description |
---|---|
RSI_CLIENT_STATION_CONNECTED | Client Connection Change Notifications (AP mode) |
RSI_STATE-X | AP Connection Change Notifications (Client mode) |
RSI_IPCONF | IP Change Notification |
RSI_CLOSE | Remote Socket Close Notification |
RSI_READ | Receive data on socket Notification |
RSI_LTCP_CONNECT | TCP Socket Established Notification |
Note!
-
All commands must be terminated with
\r\n
(CRLF).
rsi_opermode :: Operating Mode
Description
This is the first AT command that needs to be sent from the Host after receiving the card ready frame from the module. This command configures the module in different functional modes.
Command Format
Note that all parameters are shown on a new line to make the command format easier to read.
at+rsi_opermode=<oper_mode>,
<feature_bit_map>,
<tcp_ip_feature_bit_map>,
<custom_feature_bit_map>,
<ext_custom_feature_bit_map>,
<bt_feature_bit_map>,
<ext_tcp_ip_feature_bit_map>,
<ble_feature_bit_map>,
<ble_coustom_ext_feature_bit_map>,
<config_feature_bit_map>
Some arguments for the
rsi_opermode
command are only enabled when conditions according to the following table are met.
The argument ... | is enabled when ... |
---|---|
<ext_custom_feature_bit_map>
|
custom_feature_bitmap[31]
=
1
|
<ext_tcp_ip_feature_bit_map>
|
tcp_ip_feature_bit_map[31]
=
1
|
<bt_feature_bit_map>
|
custom_feature_bit_map[31]
=
1
,
ext_custom_feature_bit_map[31]
=
1
|
<ble_feature_bit_map>
|
custom_feature_bitmap[31]
=
1
,
ext_custom_feature_bit_map[31]
=
1
,
bt_feature_bit_map[31]
=
1
|
<ble_custom_ext_feature_bit_map>
|
ble_feature_bit_map[31]
=
1
|
<config_feature_bit_map>
|
tcp_ip_feature_bit_map[31]
=
1
,
ext_tcp_ip_feature_bit_map[31]
=
1
|
Parameters
oper_mode
-
Sets the mode of operation.
<oper_mode>
contains two parts <wifi_oper_mode
,coex_mode
>. The lower two bytes representswifi_oper_mode
and higher two bytes representscoex_modes
.
oper_mode = ((wifi_oper_mode) | (coex_mode << 16))
where ...
wifi_oper_mode
|
Meaning | Description |
---|---|---|
0 | Wi-Fi Client Mode | The module works as a normal client that can connect to an Access Point with different security modes other than enterprise security. |
2 | Enterprise Security Client Mode | The module works as a client that can connect to an Access Point with WPA/WPA2-Enterprise security. |
6 | Access Point mode | In this mode, the module acts as an Access Point, depending on the inputs supplied for the command 'Configure AP Mode'. In Access Point mode, a Maximum of 16 clients can connect based on the bits set in custom feature bit map selection in opermode. Enable DHCP server by tcp_ip_feature_bit_map. |
8 | PER Mode. | This mode is used for calculating packet error rate and mostly used during RF certification tests. |
9 | Concurrent mode | This mode is used to run module in concurrent mode. In concurrent mode, host can connect to a AP and can create AP simultaneously. |
Note!
Opermode WiFi-Direct(1) mode is not supported.
Note!
When operating in Concurrent Mode:
-
The AP mode MAC address is identical to the station mode MAC address, except the last bit of the last byte of the AP mode MAC address is set to
1
. - Maximum of 4 Station devices can be connected to Concurrent AP.
- In TCP/IP non-bypass mode, Broadcast / Multicast packet goes to first created interface (e.g. if Station mode connects first, the broadcast / multicast packet goes to the network that belongs to station mode).
- Aggregation is not supported.
- The Station and AP interfaces must be configured to the same channel.
coex_mode | Description |
---|---|
0 | WLAN |
5 | WLAN + Bluetooth |
9 | WLAN + Dual Mode |
13 | WLAN + BLE |
Note!
- Co-ex modes are supported only in 384K memory configuration.
- For WLAN Co-ex mode, AP mode scan is not allowed.
If Co-ex mode is enabled in opermode command, then BT / BLE protocol will start and give corresponding card ready in parallel with opermode command response (which will be handled by corresponding application). BT card ready frame is described in the RS9116W BT Classic AT Command Programming Reference Manual and BLE card ready frame is described in the RS9116W BLE AT Command Programming Reference Manual
Other Parameters
-
<feature_bit_map>
, see feature_bit_map . -
<tcp_ip_feature_bit_map>
, see tcp_ip_feature_bit_map . -
<custom_feature_bit_map>
, see custom_feature_bit_map . -
<ext_custom_feature_bit_map>
, see ext_custom_feature_bit_map . -
<bt_feature_bitmap>
, see bt_feature_bitmap . -
<ext_tcpip_feature_bitmap>
, see ext_tcpip_feature_bitmap . -
<ble_feature_bit_map>
, see ble_feature_bit_map . -
<ble_custom_ext_feature_bit_map>
, see ble_custom_ext_feature_bit_map . -
<config_feature_bitmap>
, see config_feature_bitmap .
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0021
,
0x0025
,
0xFF73
,
0x002C
,
0xFF6E
,
0xFF6F
,
0xFF70
,
0xFFC5
.
Example 1
When only
oper_mode
is given in Command Format
Command
at+rsi_opermode=0
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x6F 0x70 0x65 0x72 0x6D 0x6F 0x64 0x65 0x3D 0x30 0x0D 0x0A
Response
OK
0x4F 0x4B 0x0D 0x0A
Example 2
When other parameters along with
mode_val
is given in opermode Command Format
This command configures the device into Wi-Fi client mode with HTTP server enabled in Open security mode.
at+rsi_opermode=0,1,2,0
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x6F 0x70 0x65 0x72 0x6D 0x6F 0x64 0x65 0x3D 0x30 0x2C 0x31 0x2C 0x32 0x2C 0x30 0x0D 0x0A
[ Go to top ]
rsi_band :: Radio Band
Description
This command configures the radio band. This command has to be issued after
opermode
command.
at+rsi_band=<band_value>
Parameters
The valid values for the parameter for this command are as follows:
band_value (1 byte)
band_value | Functionality |
---|---|
0 | 2.4 GHz |
1 | 5 GHz |
2 | Dual band (2.4 GHz and 5 GHz) |
Note!
- Dual band is supported in station mode
- 802.11J is only supported in 5 GHz
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0005, 0x0021, 0x0025, 0x002C, 0x003c
.
Availability
This command is available in all operating modes.
Example
Command
at+rsi_band=0
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x62 0x61 0x6E 0x64 0x3D 0x30 0x0D 0x0A
Response
OK
0x4F 0x4B 0x0D 0x0A
[ Go to top ]
rsi_config :: WLAN Configuration
Description
This command configures WLAN parameters. This command must be issued after init command.
Command Format
at+rsi_config=<config_type>,<config_val>
Parameters
config_type (2 bytes)
-
1
- Configure RTS (Request to send) threshold value other values are reserved for future use.
config_value (2 bytes)
-
0-2347
- Range of RTS (Request to send) threshold value
Note! Only RTS_THRESHOLD config type is supported.
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0063, 0x0064
.
Availability
This command is available in all operating modes.
Example
Command
at+rsi_config=1,256
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x63 0x6F 0x6E 0x66 0x69 0x67 0x3D 0x31 0x2C 0x32 0x35 0x36 0x0D 0x0A
Response
OK
0x4F 0x4B 0x0D 0x0A
[ Go to top ]
rsi_setmac :: Set MAC Address
Description
This command sets the MAC address of module. This command must be issued before the
rsi_band
command.
Command Format
at+rsi_setmac=<mac_address>
Parameters
mac_address (6 bytes)
- MAC address to be set for module.
Note! In concurrent mode, given MAC is applied to station mode and AP mode MAC address last byte will differ from station mode MAC. AP mode MAC address last byte will be one plus the station mode MAC address last byte given by host.
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0021, 0x0025, 0x002C
.
Availability
This command is available in all operating modes.
Example
Command
at+rsi_setmac=001122334455
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x73 0x65 0x74 0x6D 0x61 0x63 0x3D 0x30 0x30 0x31 0x31 0x32 0x32 0x33 0x33 0x34 0x34 0x35 0x35 0x0D 0x0A
Response
OK
0x4F 0x4B 0x0D 0x0A
[ Go to top ]
rsi_init :: Initialize PHY and Radio
Description
This command programs Baseband and RF components of the module and returns the MAC address of module to the host. This command must be issued after band command.
Command Format
at+rsi_init
Parameters
None.
Response
For Non-concurrent Mode
Result Code | Description |
---|---|
OK <MAC_Address> | MAC address of the module. In concurrent mode, two MAC addresses are returned, MAC_Address1 is the station MAC address and MAC_Address2 is the created AP MAC address. MAC address is returned in 6-bytes in hex format. |
ERROR <Error code>
|
Failure. |
For Concurrent Mode
|
Result Code
|
Description
|
| OK <MAC_Address1><MAC_Address2>| Successful execution of command. MAC_Address1 is the station MAC Address and MAC_Address2 is of the AP created in the module.|
|
ERROR <Error code>
| Failure. |
Possible error codes are
0x0021, 0x0025, 0x002C, 0x0002
.
Availability
This command is available in all operating modes
Example 1 - Client or AP mode
Command
at+rsi_init
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x69 0x6E 0x69 0x74 0x0D 0x0A
Response
OK <MAC_Address>
0x4F 0x4B 0x80 0xC9 0x55 0x34 0xF0 0x10 0x0D 0x0A
Example 2 - Concurrent mode
at+rsi_init
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x69 0x6E 0x69 0x74 0x0D 0x0A
Response
OK <MAC_Address1><MAC_Address2>
0x4F 0x4B 0x80 0xC9 0x55 0x34 0xF0 0x10 0x80 0xC9 0x55 0x34 0xF0 0x11 0x0D 0x0A
[ Go to top ]
rsi_gain_table :: Configure Gain Table
Description
This command overwrites the default region based gain tables (present in firmware) with user-defined region based gain tables. The 2.4 GHz and 5 GHz gain tables can be loaded consecutively by changing the band. This command should be issued immediately after the init command. Customer can load the two gain tables (i.e., 2.4GHz-20Mhz, 5GHz-20Mhz) one after other by changing band.
Note! Internally, firmware maintains two tables : Worldwide table and Region-based table. Worldwide table is populated by firmware with Max power values that chip can transmit that meets target specifications like EVM. Region-based table has default gain value set.
- When certifying with user antenna, Region must be set to Worldwide and sweep the power from 0 to 21 dBm. Arrive at max power level that is passing certification especially band-edge.
- These FCC/ETSI/TELEC/KCC Max power level should be loaded in end-to-end mode via WLAN User Gain table. This must be called done every boot-up since this information is not saved inside flash. Region based user gain table sent by application is copied onto Region based table .SoC uses this table in FCC/ETSI/TELEC/KCC to limit power and not to violate allowed limits.
For Worldwide region, the firmware uses Worldwide table for Tx. For other regions (FCC/ETSI/TELEC/KCC), the firmware uses min value out of Worldwide & Region based table for Tx. Also, there will be part to part variation across chips and offsets are estimated during manufacturing flow which will be applied as correction factor during normal mode of operation. This frame must be used by customers who has done FCC/ETSI/TELEC/KCC certification with their own antenna. All other customers should not use this. Inappropriate use of this frame may result in violation of FCC/ETSI/TELEC/KCC or any certifications, and Silicon Labs is not liable for that.
Command Format
at+rsi_gain_table=<band_value>,<bandwidth>,<payload_length>,<payload>
Parameters
band_value (1-byte) | band_value | Frequency Band | |--------|---------------| | 1 | 2.4 GHz | | 2 | 5 GHz |
bandwidth (1-byte) | Mode | Bandwidth | |--------|---------------| | 0 | 20 MHz | | 1 | Reserved.
payload_length (2-bytes)
- Max table size in 2.4 GHz band is 128 bytes
- Max table size in 5 GHz band is 64 bytes
payload (n-bytes, see table)
- Pass channel gain values for different regions in the format shown as follows.
-
Gain table Format for 2.4 GHz band
.
- Each entry in the table is 1 byte.
- In the 2.4 GHz, the maximum Gain/Power obtained from certification must be multiplied by 2 .
<TABLE NAME>[] =
{
<NUMBER OF REGIONS>,
<REGION NAME 1>,
<CHANNEL CODE 2G>,
<CHANNEL NUMBER 1>, <2 * MAX POWER 11b RATE>, <2 * MAX POWER 11g RATE>, <2 * MAX POWER 11n RATE>,
<CHANNEL NUMBER 2>, <2 * MAX POWER 11b RATE>, <2 * MAX POWER 11g RATE>, <2 * MAX POWER 11n RATE>,
...
<CHANNEL NUMBER m-1>, <2 * MAX POWER 11b RATE>, <2 * MAX POWER 11g RATE>, <2 * MAX POWER 11n RATE>,
<CHANNEL NUMBER m>, <2 * MAX POWER 11b RATE>, <2 * MAX POWER 11g RATE>, <2 * MAX POWER 11n RATE>,
<REGION NAME 2>,
<CHANNEL_CODE_2G>,
<CHANNEL NUMBER 1>, <2 * MAX POWER 11b RATE>, <2 * MAX POWER 11g RATE>, <2 * MAX POWER 11n RATE>,
<CHANNEL NUMBER 2>, <2 * MAX POWER 11b RATE>, <2 * MAX POWER 11g RATE>, <2 * MAX POWER 11n RATE>,
...
<CHANNEL NUMBER m-1>, <2 * MAX POWER 11b RATE>, <2 * MAX POWER 11g RATE>, <2 * MAX POWER 11n RATE>,
<CHANNEL NUMBER m>, <2 * MAX POWER 11b RATE>, <2 * MAX POWER 11g RATE>, <2 * MAX POWER 11n RATE>,
...
};
Gain table Format for 5 GHz band
- In 5GHz, Max Gain/Power obtained from certification should be loaded.
- Each entry in the table is 1 byte.
<TABLE NAME>[] =
{
<NUMBER OF REGIONS>,
<REGION NAME 1>,
<CHANNEL CODE 5G>,
<CHANNEL NUMBER IN BAND 1 IF ANY> / <BAND NUMBER 1>, <MAX POWER 11a RATE>, <MAX POWER 11n RATE>,
<CHANNEL NUMBER IN BAND 2 IF ANY> / <BAND NUMBER 2>, <MAX POWER 11a RATE>, <MAX POWER 11n RATE>,
<CHANNEL NUMBER IN BAND 3 IF ANY> / <BAND NUMBER 3>, <MAX POWER 11a RATE>, <MAX POWER 11n RATE>,
<CHANNEL NUMBER IN BAND 4 IF ANY> / <BAND NUMBER 4>, <MAX POWER 11a RATE>, <MAX POWER 11n RATE>
...
<REGION NAME 2>,
<CHANNEL CODE 5G>,
<CHANNEL NUMBER IN BAND 1 IF ANY> / <BAND NUMBER 1>, <MAX POWER 11a RATE>, <MAX POWER 11n RATE>,
<CHANNEL NUMBER IN BAND 2 IF ANY> / <BAND NUMBER 2>, <MAX POWER 11a RATE>, <MAX POWER 11n RATE>,
<CHANNEL NUMBER IN BAND 3 IF ANY> / <BAND NUMBER 3>, <MAX POWER 11a RATE>, <MAX POWER 11n RATE>,
<CHANNEL NUMBER IN BAND 4 IF ANY> / <BAND NUMBER 4>, <MAX POWER 11a RATE>, <MAX POWER 11n RATE>
...
};
<REGION NAME #>
Substitute the
<REGION NAME #>
corresponding to the desired region.
REGION NAME # | Region |
---|---|
0 | FCC |
1 | ETSI |
2 | TELEC |
4 | KCC |
<CHANNEL CODE 2G>
An 8-bit value encoded as follows:
-
If the transmit power of all the channels are the same, use
<CHANNEL_CODE_2G>
=17
and<CHANNEL NUMBER>
=255
. -
If the transmit power is not the same for all channels, use
<CHANNEL_CODE_2G>
as number of channels and specify transmit power values for all channels.
<CHANNEL CODE 5G>
An 8-bit value encoded as number of rows in a region 5 GHz band.
-
5 GHz is divided into 4 sub bands
- band 1: channel number <= 48
- band 2: channel number > 48 and channel number <= 64
- band 3: channel number > 64 and channel number <= 144
- band 4: channel number > 144
- If any channel in a specific band has a differing set of power values, specify the channel number followed by the power values.
-
If all channels in band
X
have identical power values, specify the band number asX
followed by the power value.
Note!
- As worldwide certification is not possible, a gain table for worldwide is not applicable.
-
Length of the payload must match
<payload_len>
parameter value.
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0021, 0x003E
.
Availability
This command is available in WLAN operating modes.
Example
Command
at+rsi_gain_table=1,0,67,<payload>
Note!
-
For
<payload_len>
parameter, the user must provide actual length of the payload. If the gain table length is 70 and if the user enters 128 then an error (0x003E
) is returned. -
To calculate the value of
<payload_len>
, add the number of bytes in the<payload>
excluding spaces and commas. parameter. - Payload examples are provided in the following sub-section.
Response
OK
0x4F 0x4B 0x0D 0x0A
Payload Examples
This is a payload example for:
- band = 2.4 GHz
- bandwidth = 20 MHz
{ 3, // Number of Regions
FCC, // Region Name
13, // Number of channels
1, 34, 20, 20, // rate, 11b, 11g, 11n
2, 34, 28, 28,
3, 34, 32, 32,
4, 34, 36, 36,
5, 34, 38, 38,
6, 34, 40, 40,
7, 34, 38, 38,
8, 34, 36, 36,
9, 34, 32, 32,
10, 34, 32, 32,
11, 34, 24, 24,
12, 34, 16, 24,
13, 34, 12, 12,
TELEC, // Region Name
17, // Number of channels
255, 20, 16, 16, // rate, 11b, 11g, 11n
KCC, // Region Name
17, // Number of channels
255, 26, 20, 20, // rate, 11b, 11g, 11n
}
This is a payload example for:
- band = 5 GHz
- bandwidth = 20 MHz
{
2, // Number of Regions
FCC, // Region Name
6, // Number of rows in 5 GHz region
1, 9, 10, // band 1
2, 8, 9, // band 2
100, 4, 4, // band 3
3, 6, 8, // band 3
149, 3, 3, // band 4
4, 6, 7, // band 4
TELEC, // Region Name
4, // Number of rows in 5 GHz region
1, 9, 10, // band 1
2, 8, 10, // band 2
3, 6, 8, // band 3
4, 6, 7, // band 4
}
Example 2
Customers using Certified MARS antenna should use the following gain table.
This is a payload example for:
- band = 2.4 GHz
- bandwidth = 20 MHz
{
3, // Number of Regions
FCC, // Region Name
13, // Number of channels
1, 28, 32, 30, // rate, 11b, 11g, 11n
2, 28, 32, 30,
3, 28, 32, 30,
4, 30, 28, 34,
5, 30, 28, 34,
6, 30, 28, 34,
7, 30, 28, 34,
8, 30, 28, 34,
9, 28, 30, 30,
10, 28, 30, 30,
11, 28, 30, 30,
12, 28, 30, 30,
13, 28, 30, 30,
TELEC, // Region Name
17, // Number of channels
255, 20, 16, 16, // rate, 11b, 11g, 11n
KCC, // Region Name
17, // Number of channels
255, 26, 20, 20, // rate, 11b, 11g, 11n
};
This is a payload example for:
- band = 5 GHz
- bandwidth = 20 MHz
{
2, // Number of Regions
FCC, // Region Name
6, // Number of rows
1, 12, 12, // band 1
2, 11, 11, // band 2
100, 10, 12, // band 3
3, 13, 13, // band 3
140, 10, 11, // band 4
4, 13, 13, // band 4
TELEC, // Region name
4, // Number of rows in 5GHz region
1, 9, 10, // band 1
2, 8, 10, // band 2
3, 6, 8, // band 3
4, 6, 7, // band 4
}
[ Go to top ]
rsi_per :: PER Mode/Transmit Test
Description
This command configures the PER (Packet Error Rate) Mode in RS9116-WiSeConnect. This command should be issued after
rsi_init
command.
Command Format
at+rsi_per=<per_mode_enable>,<power>,<rate>,<length>,<mode>,<channel>,<rate_flags>,<aggr_enable>,<no_of_pkts>,<delay>
Parameters
per_mode_enable (2 bytes)
-
Enable or disable PER Mode.
-
0
– Disable PER mode -
1
– Enable PER mode
-
power (2 bytes)
- Set transmit power in dbm. Valid values are from 2dBm to 18dBm.
Note!
To configure the maximum power level for a particular frequency band, set
<power>
=
127
.
rate (4 bytes)
- Set transmit data rate.
<rate>
|
Selected Data Rate (Mbps) |
---|---|
0
|
1*
|
2
|
2*
|
4
|
5.5*
|
6
|
11*
|
139
|
6
|
143
|
9
|
138
|
12
|
142
|
18
|
137
|
24
|
141
|
36
|
136
|
48
|
140
|
54
|
256
|
MCS0
|
257
|
MCS1
|
258
|
MCS2
|
259
|
MCS3
|
260
|
MCS4
|
261
|
MCS5
|
262
|
MCS6
|
263
|
MCS7
|
Note!
- Date rate of 1, 2, 5.5, 11 Mbps (i.e., rate parameter: 0, 2, 4, 6) are not supported when operating in 5 GHz channel.
length (2 bytes)
-
Configure length of the transmit packet. Valid values are in the range:
-
[24 .. 1500]
bytes in burst mode -
[24 ... 260]
bytes in continuous mode
-
mode (2 bytes)
- Transmit mode
Mode | Transmit Mode |
---|---|
0
|
Burst Mode |
1
|
Continuous Mode |
2
|
CW Mode (unmodulated) in DC mode |
3
|
CW Mode (unmodulated) with a single tone at:
center frequency - 2.5 MHz
|
4
|
CW Mode (unmodulated) with a single tone at:
center frequency + 5 MHz
|
Note!
Burst Mode
The instrument outputs a waveform of the specified number of cycles or packets (burst count) when a trigger is received. After the specified number of cycles or packets have been output, the instrument stops and waits for the next trigger.
Continuous Mode
The instrument outputs an unmodulated waveform continuously.
Continuous Wave Mode (Non-Modulation) in DC Mode:
The instrument outputs a spectrum only at the center frequency of the channel. A basic signal with no modulation is that of a sine wave and is usually referred to as a continuous wave (CW) signal. A basic signal source produces sine waves. Ideally, the sine wave is perfect. In the frequency domain, it is viewed as a single line at some specified frequency.
Continuous Wave Mode (Non-Modulation) in Single Tone Mode (Center frequency -2.5 MHz):
The instrument outputs a spectrum that is generated at -2.5 MHz from the center frequency of the channel selected. Some amount of carrier leakage will be seen at Center Frequency.
For example, for 2412 MHz the output will be seen at 2409.5 MHz
Continuous Wave Mode (Non-Modulation) in Single Tone Mode (Center frequency +5 MHz):
The instrument outputs a spectrum that is generated at 5MHz from the center frequency of the channel selected. Some amount of carrier leakage will be seen at Center Frequency.
For example, for 2412 MHz the output will be seen at 2417 MHz.
Note!
-
Before starting CW mode, it is required to start Continuous mode with power and channel values which is intended to be used in CW mode as follows:
- Start Continuous mode with intended power value and channel value; pass any valid values for rate and length
- Stop Continuous mode
- Start CW mode.
- To switch CW mode, stop PER mode and then give CW mode to where the user wants to switch to
channel (2 bytes)
- Sets the channel number in 2.4 GHz / 5 GHz. The following tables map the channel number to the actual radio frequency in the 2.4 GHz spectrum. To support PER mode in channels 12, 13 and 14, the correct region command must be given by the host before the PER command.
Channel Number (2.4 GHz) | Center frequency in MHz for 20MHz channel width |
---|---|
1
|
2412
|
2
|
2417
|
3
|
2422
|
4
|
2427
|
5
|
2432
|
6
|
2437
|
7
|
2442
|
8
|
2447
|
9
|
2452
|
10
|
2457
|
11
|
2462
|
12
|
2467
|
13
|
2472
|
14
|
2484
|
- Channel numbers in the 5 GHz band are in the range 36 to 165. The following table maps the channel number to the actual radio frequency in the 5 GHz spectrum for 20MHz channel bandwidth.
Channel Number (5 GHz) | Center frequency in MHz for 20MHz channel width |
---|---|
36
|
5180
|
40
|
5200
|
44
|
5220
|
48
|
5240
|
52
|
5260
|
56
|
5280
|
60
|
5300
|
64
|
5320
|
100
|
5500
|
104
|
5520
|
108
|
5540
|
112
|
5560
|
116
|
5580
|
120
|
5600
|
124
|
5620
|
128
|
5640
|
132
|
5660
|
136
|
5680
|
140
|
5700
|
144
|
5720
|
149
|
5745
|
153
|
5765
|
157
|
5785
|
161
|
5805
|
165
|
5825
|
- The following tables maps the channel number to the actual radio frequency in the 4.9 GHz spectrum for 802.11J. 802.11J features are only valid when the Japan region is set. For other regions, even if 802.11J is enabled, it has no effect.
Channel Number (4.9GHz) | Center frequency in MHz for 20MHz channel width |
---|---|
184
|
4920
|
188
|
4940
|
192
|
4960
|
196
|
4980
|
8
|
5040
|
12
|
5060
|
16
|
5080
|
rate_flags (2 bytes)
-
Rate flags contain short GI, Greenfield and channel width values. Various fields in
rate_flags
are divided as specified below:
Fields | Short GI | Greenfield | Channel Width | Reserved | Immediate Transfer | Reserved |
---|---|---|---|---|---|---|
Bits |
0
|
1
|
2-4
|
5
|
6
|
7-15
|
-
Short GI. Set
rate_flags[0]
=1
to enable Short GI (Short GI is not available in all software releases). -
Greenfield. Set
rate_flags[1]
=1
to enable Greenfield mode. - Channel width should be set to zero to set 20MHz channel width.
- Reserved: This field can be ignored. Set '0'.
- Immediate Transfer : CCA is enabled by default, set this bit to transfer packets immediately by ignoring CCA.
- Reserved: This field can be ignored. Set '0'.
aggr_enable (2 bytes)
- This parameter is for enabling or disabling aggregation support. Aggregation feature is supported only in burst mode. This field will be ignored in case of continuous mode.
no_of_pkts (2 bytes)
-
This parameter sets the number of packets to be sent in burst mode. If the value given is
n
thenn
number of packets will be sent on air, after that transmission will be stopped. If this field is given as0
then packets will be sent continuously until user stops the transmission. This field will be ignored in case of continuous mode.
delay (4 bytes)
-
This parameter is used to set the delay between packets in burst mode. Delay should be given in microseconds. i.e. if the value is given as
n
then a delay ofn
microseconds will be added for every transmitted packet in burst mode. -
If this field is set to
0
then packets will be sent continuously without any delay. This field will be ignored in case of continuous mode.
Note!
Only
per_mode_enable
,
power
,
rate
,
length
,
mode
,
channel
,
rate_flags
fields are valid. Remaining fields are not supported.
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x000A, 0x0021, 0x0025, 0x002C, 0x0033
.
Availability
This command is available when the module is configured in operating mode
8
.
Example
To start transmitting
at+rsi_per=1,18,139,30,0,1,0,0,0,0
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x70 0x65 0x72 0x3D 0x31 0x2C 0x31 0x38 0x2C 0x31 0x33 0x39 0x2C 0x33 0x30 0x2C 0x30 0x2C 0x31 0x2C 0x30 0x2C 0x30 0x2C 0x30 0x2C 0x30 0x0D 0x0A
To stop transmitting
at+rsi_per=0
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x70 0x65 0x72 0x3D 0x30 0x0D 0x0A
Response
OK
0x4F 0x4B 0x0D 0x0A
[ Go to top ]
rsi_freq_offset :: Frequency Offset Correction
Command Description
This command is used during the RF calibration process and requires PER mode transmissions to be initiated prior. This command sends freq_offset (deviation) as observed on the signal analyzer against the expected channel frequency. This command is relevant in PER mode.
Command Format
at+rsi_freq_offset=<freq_offset_in_khz>
Parameters
freq_offset_in_khz
- Frequency deviation in kHz or ppm.
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Availability
This command is available when the module is configured in Operating Mode
8
.
Example
To send frequency offset as 10 ppm:
Command
at+rsi_freq_offset=10
Response
OK
[ Go to top ]
rsi_calib_write :: Write Calibration Data
Description
This API is used during the RF calibration process and requires PER mode transmissions to be initiated prior. This API will command the firmware to update the existing Flash/EFuse calibration data with the xo ctune (given or picked from hardware register) and gain offset values. This command is relevant in PER mode.
The
rsi_freq_offset
command needs to be called before this command when xo ctune value from hardware register is to be used.
Command Format
at+rsi_calib_write=<target>,<flags>,<gain_offset>,<xo_ctune>
Parameters
target (1 byte)
-
Sets the target for calibration data
-
0
-BURN_INTO_EFUSE
. Burns calibration data to EFuse -
1
-BURN_INTO_FLASH
. Burns calibration data to Flash
-
flags (1 byte)
-
Bit 0 =
BURN_GAIN_OFFSET
.-
0
- Skip gain offset update -
1
- Update gain offset to calibration data
-
-
Bit 1 =
BURN_FREQ_OFFSET
-
0
- Skip XO Ctune update -
1
- Update XO Ctune to calibration data
-
-
Bit 2 =
SW_XO_CTUNE_VALID
-
0
- Use XO Ctune value as read from hardware register -
1
- Use XO Ctune provided as argument to update calibration data
-
-
Bit 3 =
BURN_XO_FAST_DISABLE
- This BIT is used to apply patch for cold temperature issue on CC0/CC1 module.
- Bits 7-4 = Reserved
gain_offset (1 byte)
- Gain offset offset as observed in dBm
xo_ctune (1 byte)
-
This field allows user to directly update
xo_ctune
value to calibration data bypassing the freq offset loop, valid only whenBURN_FREQ_OFFSET
andSW_XO_CTUNE_VALID
flags are set.
Response
Value | Description |
---|---|
0 | Success |
Non Zero Value | Failure |
Example
The gain offset can be calculated with the following equation.
gain_offset = observed_power_level + cable_loss - configured_power_level
where ...
- observed_power_level = 14.3 dBm
- cable_loss = 1.7 dB
- configured_power_level = 18.0 dBm
To write the gain offset as -2 dBm into flash/efuse, use the following command.
at+rsi_calib_write=1,1,-2
To write the
xo_ctune
value available in the hardware register to flash/efuse (after frequency calibration is performed), use the following command.
at+rsi_calib_write=1,2,0
To write a user configured
xo_ctune
value to flash/efuse (without performing the frequency calibration process), use the following command. Note that
xo_ctune
is in the range [0..255].
at+rsi_calib_write=1,2,0,<xo_ctune>
Note!
To recalibrate the gain offset after it has been burnt to flash, the gain offset must be reset first, followed by the standard calibration flow. Recalibration is not possible if the EFuse is being used instead of flash. To reset the gain offset, use
rsi_calib_write = 1,1,0
.
Response
OK
[ Go to top ]
rsi_apconf :: Configure AP Mode
Description
This command is used to set the configuration information for AP mode. This command must be issued after the
rsi_init
command.
Command Format
at+rsi_apconf = <channel_no>,<ssid>,<security_type>,<encrypt_type>,<psk>,<beacon_interval>,<dtim_period>,<sta support>,<ap_keepalive_type>,<ap_keepalive_period>
Parameters
channel_no (2 bytes)
- The channel in which the AP operates. A value of zero enables the Auto channel selection (ACS) feature to automatically determine which channel configuration to use. The channel with the least traffic will be selected.
- The following table maps the channel number to the actual radio frequency in the 2.4 GHz spectrum.
Channel Number (2.4GHz) | Center frequency in MHz for 20MHz channel width |
---|---|
1
|
2412
|
2
|
2417
|
3
|
2422
|
4
|
2427
|
5
|
2432
|
6
|
2437
|
7
|
2442
|
8
|
2447
|
9
|
2452
|
10
|
2457
|
11
|
2462
|
12
|
2467
*
|
13
|
2472
*
|
14
|
2484
*
|
Note!
Operation in channels 12/13/14 requires configuration of the correct regulatory region using the
set_region
command.
- The following table maps the channel number to the actual radio frequency in the 5 GHz spectrum.
Channel Number (5GHz) | Center Frequency in MHz for 20MHz channel width |
---|---|
36
|
5180
|
40
|
5200
|
44
|
5220
|
48
|
5240
|
144
|
5720
|
149
|
5745
|
153
|
5765
|
157
|
5785
|
161
|
5805
|
165
|
5825
|
Note! DFS channels are not supported in AP mode.
ssid (34 bytes)
- SSID of the AP to be created.
Note!
-
To support a comma
,
in the SSID, enclose the SSID in double quotes e.g. “MY, NETWORK” -
Double quotes
"
in the SSID are not supported. - The maximum length of the SSID is 32 bytes; the remaining 2 bytes are reserved for NULL termination and internal alignment.
security_type (1 byte)
- Security type
security_type | Security Type |
---|---|
0
|
Open
|
1
|
WPA
|
2
|
WPA2
|
encrypt_type (1 byte)
- Encryption type
Mode | Encryption |
---|---|
0
|
Open
|
1
|
TKIP
|
2
|
CCMP
|
psk (64 bytes)
-
PSK of the AP in security mode.
-
If the AP is in Open mode, this parameter can be set to
0
. - If the security mode is WPA/WPA2, the PSK must between 8 and 63 bytes.
-
If the AP is in Open mode, this parameter can be set to
beacon_interval (2 bytes)
- Beacon interval of the AP in milliseconds. Allowed values are integers in the range 100 to 1000 in multiples of 100.
dtim_period (2 bytes)
- DTIM period. Allowed values are from 1 to 255
ap_keepalive_type (1 byte)
-
This is the bitmap to enable AP keep alive functionality and to select the keep alive type.
-
BIT[0] - Enable/disable keep alive functionality.
-
0
- To disable keep alive functionality -
1
- To enable keep alive functionality
-
-
BIT[1] - Select AP keep alive method.
-
0
- Default keep alive functionality i.e. disconnect the station if there are no wireless exchanges from station with in ap_keepalive_period -
1
- Enable null data frame based keep alive functionality.
-
-
BIT[0] - Enable/disable keep alive functionality.
ap_keepalive_period (1 byte)
-
This is the period after which AP will disconnect the station if there are no wireless exchanges from station to AP. Keep alive period is calculated in terms of 32 multiples of beacon interval i.e if there are no wireless transfers from station to AP with in (
32
xbeacon_interval
=keep_alive_period
) milliseconds time period, station will be disconnected. If null data based method is selected, AP checks the connectivity of station by sending null data packet. If station does not acknowledge the packet, that station will be disconnected from AP after 4 retries.
max_sta_support (2 bytes)
-
Number of clients supported. This value should be less than or equal to the value given in custom feature select bit map
BIT[13:16]
of the Set Operating Mode command. If value is not set in custom feature select bit mapBIT[13:16]
of the Set Operating Mode then maximum supported stations are 4.
Note! RS9116W supports for connecting 16 clients to the created AP by setting custom_feature_bit_map 13:16] and extended_custom_feature_bit_map 15] by using the equation mentioned below:
Number of stations = (Stations Obtained by setting BIT[13-16] + 1 ) * 2
For example, if the host wants 16 clients support in AP, then set following bits:
BIT[13]
,
BIT[14]
and
BIT[15]
(leave
BIT[16]
as
0
) in custom feature bitmap and
BIT[15]
in extended custom feature bitmap, then the number of stations will become
(7+1) * 2 = 16
. If configuring more than 16 stations, it will throw an error.
If the extended custom feature bitmap is not set, then it can configure a maximum of 8 stations. This is
Backward Compatibility. Also, if configuring more than 8 stations, it will throw an error
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0021, 0x0025, 0x002C, 0x0026, 0x004C, 0x0028, 0x001A, 0x000A, 0x001D
Availability
This command is available when the module is configured in Operating Mode 6.
Example 1
Configured AP with:
- channel_no: 11
- ssid: ap_ssid
- security_type: open mode
- beacon_interval: 100
- dtim_period: 3
- max_sta_support: 3
Command
at+rsi_apconf=11,ap_ssid,0,0,0,100,3,3
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x61 0x70 0x63 0x6F 0x6E 0x66 0x3D 0x31 0x31 0x2C 0x72 0x65 0x64 0x70 0x69 0x6E 0x65 0x2C 0x30 0x2C 0x30 0x2C 0x30 0x2C 0x31 0x30 0x30 0x2C 0x33 0x2C 0x33 0x0D 0x0A
Response
OK
0x4F 0x4B 0x0D 0x0A
Example 2
Configured AP with:
- channel_no: 0 (ACS)
-
ssid:
MY_SSID
- security_type: WPA2
- encrypt_type: CCMP
- psk: 12345678
- beacon_interval: 100
- dtim_period: 3
- max_sta_support: 3
Command
at+rsi_apconf=0,MY_SSID,2,2,12345678,100,3,3
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x61 0x70 0x63 0x6F 0x6E 0x66 0x3D 0x30 0x2C 0x4D 0x59 0x5F 0x53 0x53 0x49 0x44 0x2C 0x32 0x2C 0x32 0x2C 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x2C 0x31 0x30 0x30 0x2C 0x33 0x2C 0x33 0x0D 0x0A
Response
OK
0x4F 0x4B 0x0A 0x00 0x0D 0x0A
[ Go to top ]
rsi_wps_method :: WPS PIN Method
Description
This command configures the WPS PIN method to be used in RS9116-WiSeConnect.This command should be issued before join command.
Command Format
at+rsi_wps_method=<wps_method>,<generate_pin>,<wps_pin>
Parameters
wps_method (2 bytes)
- Set to '1' for PIN method.
generate_pin (2 bytes)
-
This parameter specifies whether to validate entered PIN or generate PIN. This parameter is valid only if
wps_method
is1
.-
0
- Use entered pin in wps_pin field -
1
- PIN generation
-
-
If
generate_pin
is0
, module will validate the given 8 digitwps_pin
. If pin given is less than 8 digit or if pin is wrong then module will give error.
wps_pin (8 bytes)
-
wps_pin
is of 8 digits pin. Module validates and uses this pin only in case of when -
wps_method
is PIN method andgenerate_pin
is0
.
Response
Response contains a
wps_pin
payload only if PIN method is selected. In case of PUSH method response does
not contains any payload.
wps_pin
: The WPS PIN will be used by the module to connect with WPS AP.
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0021, 0x0025, 0x002C, 0x0037, 0x0038
.
Availability
This command is available when the module is configured in Operating Mode 0 and 6.
Example 1
When PIN of length 8 is given:
Command
at+rsi_wps_method=1,0,12345678
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x77 0x70 0x73 0x5F 0x6D 0x65 0x74 0x68 0x6F 0x64 0x3D 0x31 0x2C 0x30 0x2C 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x0D 0x0A
Response
OK 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x4F 0x4B 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x0D 0x0A
Example 2
When PIN of length less than 8 is given:
Command
at+rsi_wps_method=1,1,1234
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x77 0x70 0x73 0x5F 0x6D 0x65 0x74 0x68 0x6F 0x64 0x3D 0x31 0x2C 0x30 0x2C 0x31 0x32 0x33 0x34 0x0D 0x0A
[ Go to top ]
rsi_scan :: Wi-Fi Scan
Description
This command scans for Access Points and gives the scan results to the host. The scan results are sorted in decreasing order of signal strength (RSSI value). The scanned access point with highest signal strength will be the first in the list. This command has to be issued after init (#rsi_init---initialize-phy-and-radio) command and before join (#rsi_join---wifi-join) command.
Command Format
There are two command format options available:
- Scanning multiple channels
- Scanning a specific channel
at+rsi_scan=<channel>,<ssid>,<channel_bit_map_2_4>,<channel_bit_map_5>
at+rsi_scan=<channel>,<ssid>,<scan_feature_bitmap>
Parameters
Channel (4 byte)
- Channel Number on which scan has to be done. If this value is 0, the module scans in all the channels in the band that is selected through the band command. The values of this parameter are listed in table below To select DFS channels user need to set custom feature bit in opermode command.
Note!
-
If
chan_num
is0
and channel bit maps (selective scan) are provided, then module will scan only the channels specified in bitmaps instead of scanning all channels. -
In case of 5GHz, module performs passive scan in DFS channels only when
BIT[8]
is set in custom feature bit map in Set Operating Mode command. -
scan feature bitmap
-
BIT[0]
(QUICK SCAN feature) - It is valid only if channel number and ssid is given. -
BIT[1]
(SCAN RESULTS TO HOST) - When it is enabled additional scan results are given to host. After getting scan results, host has to issue another scan request by disabling this bit in scan feature bitmap before issuing join command.
-
- If channel bitmap is specified, module will scan only channels which are valid in selected region
Channel Number (2.4 GHz) |
chan_num
|
---|---|
All channels | 0 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 6 |
7 | 7 |
8 | 8 |
9 | 9 |
10 | 10 |
11 | 11 |
12 | 12 |
13 | 13 |
14 | 14 |
Note! Scanning in 12, 13, 14 channels is allowed based on the region selected in Set Region command.
Channel Number (5 GHz) |
chan_num
|
---|---|
All channels | 0 |
36 | 36 |
40 | 40 |
44 | 44 |
48 | 48 |
149 | 149 |
153 | 153 |
157 | 157 |
161 | 161 |
165 | 165 |
DFS Channel Number (5 GHz) |
chan_num
|
---|---|
52 | 52 |
56 | 56 |
60 | 60 |
64 | 64 |
100 | 100 |
104 | 104 |
108 | 108 |
112 | 112 |
116 | 116 |
120 | 120 |
124 | 124 |
128 | 128 |
132 | 132 |
136 | 136 |
140 | 140 |
144 | 144 |
Channel Number (4.9 GHz) |
chan_num
|
---|---|
All channels | 0 |
184 | 184 |
188 | 188 |
192 | 192 |
196 | 196 |
8 | 8 |
12 | 12 |
16 | 16 |
ssid (34 byte)
- Optional Input. For scanning a hidden Access Point, its SSID can be provided as part of the SCAN command. The maximum number of scanned networks reported to the host is 11. If not used, null characters should be supplied to fill the structure.
Note!
-
To support a comma
,
in the SSID, enclose the SSID in double quotes e.g. “MY, NETWORK” -
Double quotes
"
in the SSID are not supported. - The maximum length of the SSID is 32 bytes; the remaining 2 bytes are reserved for NULL termination and internal alignment.
scan_feature_bitmap (1 byte)
-
BIT[0]
: Enable/disable quick scan feature.- 0 - Disable quick scan feature.
- 1 - Enable quick scan feature.
-
BIT[1:7]
: Reserved
channel_bit_map_2_4 (2 bytes)
- channel bitmap for scanning in set of selective channels in 2.4 GHz.
channel_bit_map_5 (4 bytes)
- channel bitmap for scanning a set of selective channels in 5 GHz.
Note!
For 11J, channel bit map need to give in
channel_bit_map_5
.
Channel Number 2.4 GHz |
channel_bit_map_2_4
|
---|---|
1 | 0 |
2 | 1 |
3 | 2 |
4 | 3 |
5 | 4 |
6 | 5 |
7 | 6 |
8 | 7 |
9 | 8 |
10 | 9 |
11 | 10 |
12 | 11 |
13 | 12 |
14 | 13 |
Channel Number (5 GHz) |
channel_bit_map_5
|
---|---|
36 | 0 |
40 | 1 |
44 | 2 |
48 | 3 |
149 | 20 |
153 | 21 |
157 | 22 |
161 | 23 |
165 | 24 |
DFS Channel Number (5 GHz) |
channel_bit_map_5
|
---|---|
52 | 4 |
56 | 5 |
60 | 6 |
64 | 7 |
100 | 8 |
104 | 9 |
108 | 10 |
112 | 11 |
116 | 12 |
120 | 13 |
124 | 14 |
128 | 15 |
132 | 16 |
136 | 17 |
140 | 18 |
144 | 19 |
Channel Number (4.9 GHz) |
channel_bit_map_5
|
---|---|
8 | 0 |
12 | 1 |
16 | 2 |
184 | 3 |
188 | 4 |
192 | 5 |
196 | 6 |
Result Code | Description |
---|---|
OK <scan_count>\
|
Success |
ERROR <Error code>
|
Failure |
where ...
scan_count (4 bytes)
- Number of Access Points scanned
padding(4 bytes)
- padding bytes which can be ignored.
rf_channel (1 byte)
- Channel Number of the scanned Access Point
security_mode (1 byte)
Mode | Functionality |
---|---|
0 | Open |
1 | WPA |
2 | WPA2 |
3 | WEP |
4 | WPA Enterprise |
5 | WPA2 Enterprise |
7 | WPA3 |
rssi_val (1 byte)
- RSSI of the scanned Access Point
u_network_type(1 byte)
- Network type of the scanned Access Point 1– Infrastructure mode
ssid (34 bytes)
- SSID of the scanned Access Point
bssid (6 bytes)
- MAC address of the scanned Access Point.
reserved (2 bytes)
- Reserved bytes.
Availability
This command is available when the module is configured in Operating Mode 0, 2, 6.
Examples
To scan all the networks in all channels
Command
at+rsi_scan=0
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x73 0x63 0x61 0x6E 0x3D 0x30 0x0D 0x0A
To scan a specific network "Test_AP" in a specific channel 6
Command
at+rsi_scan=6,Test_AP
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x73 0x63 0x61 0x3D 0x36 0x2C 0x54 0x65 0x73 0x74 0x5F 0x41 0x50 0x0D 0x0A
Response If two networks are found with the SSID "ap_ssid_net1" and "ap_ssid_net2" in channels 6 and 10, with measured RSSI of -20dBm and -14dBm respectively, the return value is:
OK <scan_count=2> <padding> <rf_channel=0x0A> <security_mode=0x02> <rssi_val=14> <u_network_type=0x01> <ssid =ap_ssid_net2> <bssid=0x00 0x23 0xA7 0x1F 0x1F 0x15> <reserved ><rf_channel=0x06> <security_mode=0x00> <rssi_val=20> <u_network_type=0x01> <ssid=ap_ssid_net1> <bssid=0x00 0x23 0xA7 0x1F 0x1F 0x14> <reserved>
0x4F 0x4B 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x0A 0x02 0x0D 0x01 0x52 0x65 0x64 0x70 0x69 0x6E 0x65 0x5F 0x6E 0x74 0x32 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x23 0xA7 0x1F 0x1F 0x15 0x00 0x00 0x06 0x00 0x14 0x01 0x52 0x65 0x64 0x70 0x69 0x6E 0x65 0x5F 0x6E 0x74 0x31 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x23 0xA7 0x1F 0x1F 0x14 0x00 0x00 0x0D 0x0A
[ Go to top ]
rsi_join :: Wi-Fi Join
Description
This command is used for following:
- Associate to an access point (operating mode = 0 or 2)
- Create an Access Point (operating mode 6)
- To enable WPS PUSH method in Access point mode
Command Format
at+rsi_join=<ssid>,<data_rate>,<power_level>,<security_mode>,<join_feature_bitmap>,<listen_interval>,<vap_id>,<join_bssid>
Parameters
ssid (34 bytes)
- When the module is in Operating modes 0 or 2, this parameter is the SSID of the Access Point (assuming WPS is not enabled in the Access Point).
- When the module is in operating modes 0 or 2, and wants to connect to an access point in WPS mode then the value of this parameter is NULL .
- When an Access Point needs to be created, this parameter should be the same as the parameter ssid in the command "Configure AP mode".
Note!
-
To support a comma
,
in the SSID, enclose the SSID in double quotes e.g. “MY, NETWORK” -
Double quotes
"
in the SSID are not supported. - The maximum length of the SSID is 32 bytes; the remaining 2 bytes are reserved for NULL termination and internal alignment.
data_rate (1 byte)
Data Rate (Mbps) |
data_rate
|
---|---|
Auto-rate | 0 |
1 | 1 |
2 | 2 |
5.5 | 3 |
11 | 4 |
6 | 5 |
9 | 6 |
12 | 7 |
18 | 8 |
24 | 9 |
36 | 10 |
48 | 11 |
54 | 12 |
MCS0 | 13 |
MCS1 | 14 |
MCS2 | 15 |
MCS3 | 16 |
MCS4 | 17 |
MCS5 | 18 |
MCS6 | 19 |
MCS7 | 20 |
power_level (1 byte)
- This fixes the Transmit Power level of the module. This value can be set as follows:
- At 2.4 GHz:
Mode | Functionality |
---|---|
0 | Low power (7 +/- 1) dBm |
1 | Medium power (10 +/- 1) dBm |
2 | High power (18 +/- 2) dBm |
- At 5 GHz:
Mode | Functionality |
---|---|
0 | Low power (5 +/- 1) dBm |
1 | Medium power (7 +/- 1) dBm |
2 | High power (12 +/- 2) dBm |
security_mode (1 byte)
- This variable is used to define the security mode of the Access point to which module is supposed to connect. Possible values are shown in the following table:
Mode | Functionality |
---|---|
0 | Connect only to AP in open mode |
1 | Connect to AP in WPA mode |
2 | Connect to AP in WPA2 mode |
3 | Connect to AP in WEP open mode |
4 | Connect to AP in EAP WPA mode |
5 | Connect to AP in EAP WPA2 mode |
6 | Connect to AP in either WPA/WPA2 mode (Mixed mode → It gives priority to WPA2 configured AP) |
7 | Connect to AP in WPA3 mode |
Note!
- Security_mode parameter is valid only if opermode is 0 or 2.
-
psk
is required for security mode 1,2,7. Otherwise, the module returns Join failure with error0x16
. - In Enterprise mode(Security_mode 4,5), module will derive the PSK using EAP exchanges with Authentication server.
- Module strictly obey security mode specified in Join command, not depends on PSK.
- In opermode 6, Once Access point is created host can enable WPS PUSH method by giving join command (with same parameters which were used to create Access point) again.
- WPS method is not supported in CoEx mode.
- In open mode, WEP mode, Enterprise Security, this should be filled with NULL characters.
join_feature_bitmap (1 byte)
join_feature_bit_map | Functionality | Bit set to 0 | Bit set to 1 | Note and Info |
---|---|---|---|---|
join_feature_bit_map[0]
|
b/g only mode in station mode | Disable | Enable | |
join_feature_bit_map[1]
|
listen interval from join command | Disable | Enable | |
join_feature_bit_map[2]
|
quick join feature | Disable | Enable | This configuration from application will enables UMAC, to starts Authentication process with join command. This will skip the unicast probing process. |
join_feature_bit_map[3]
|
CCXV2 | Disable | Enable | |
join_feature_bit_map[4]
|
AP based on BSSID | Disable | Enable | |
join_feature_bit_map[5]
|
Management Frame Protection Capable only(802.11W) | Disable | Enable | |
join_feature_bit_map[6]
|
Management Frame Protection required(802.11W) | BIT[5] and BIT[6] valid when 11W (BIT[13] in ext custom feature bitmap) enabled, if both bits are not set it will disable PMF. | ||
join_feature_bit_map[7]
|
listen interval from powersave command | Disable | Enable |
Note!
- BIT[5] and BIT[6] of join_feature_bit_map must be set for enabling WPA3 security.
listen_interval (4 bytes)
-
This is valid only if
join_feature_bit_map[1]
is set. This value is given in time units (1024 microseconds). This parameter is used to configure maximum sleep duration in powersave.
Note! To ensure data for module is buffered for sufficient time in access point,
- Listen interval in association request is incremented by 6 if user configured interval is greater than 11.
- If user configured listen interval less than or equal to 11, by default module will send listen interval 16 in association request. But during powersave module goes to sleep for user defined listen interval only
vap_id (1 byte)
-
Create a virtual access point (AP).
-
0
– Module will try to connect to scanned AP. -
1
– Module will create AP.
-
join_bssid (6 bytes)
-
This contains BSSID of selected AP. This is valid only if
join_feature_bitmap[4]
is set otherwise module will ignore the value.
Note!
-
vap_id
will be considered only in concurrent mode. - In concurrent mode, if connected station network is same as default dhcp server network then dhcp server will not start but join command for AP creation will give success message to host.
- For join with BSSID don’t use spaces or colons between MAC address in join command.
Example
To join particular AP in security mode,
Command
at+rsi_join=SILABS_AP,0,2,2
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x6A 0x6F 0x69 0x6E 0x3D 0x4E 0x41 0x4E 0x20 0x48 0x6F 0x6D 0x65 0x2C 0x30 0x2C 0x32 0x2C 0x32 0x0D 0x0A
Response
OK
0x4F 0x4B 0x43 0x0D 0x0A
[ Go to top ]
rsi_timeout :: Set WLAN Timeouts
Description
This command is used to set various WLAN timeouts including authentication, association request timeouts, active scan time per channel and WLAN keepalive interval.
Command Format
at+rsi_timeout=<timeout_bitmap>,<timeout_value>
timeout_bitmap (4 bytes)
timeout_bitmap | Functionality |
---|---|
timeout_bitmap[0]
|
Sets timeout for association and authentication request.
timeout_value
is timeout value in milliseconds (default 300ms).
|
timeout_bitmap[1]
|
Sets each channel active scan time in ms (default 100ms) |
timeout_bitmap[2]
|
Sets the WLAN keep alive time in seconds (default value is 30 s) |
Note!
For setting WLAN keepalive timeout need to give time out command before init. If timeout is given as
0
, keep alive functionality will be disabled.
Example
Set authentication and association request timeout to 1.5 seconds.
Command
at+rsi_timeout=1,1500
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x74 0x69 0x6D 0x65 0x6F 0x75 0x74 0x3D 0x31 0x2C 0x31 0x35 0x30 0x30 0x0D 0x0A
Response
OK
0x4F 0x4B 0x0D 0x0A
[ Go to top ]
rsi_rejoin_params :: Wi-Fi Rejoin
Description
The module automatically tries to rejoin if its existing network connection is lost. During the rejoin process, if the host sends any command to the module, the module will not accept it and will return an error with the error code
0x37
. The module aborts the rejoin after a fixed number of re-tries (maximum number of retries for rejoin is 20 by default). If this happens, an asynchronous message is sent to the Host with an error code 25. User can configure the rejoin parameters using rejoin command.
Note! When rejoin fails, module will close all prior opened TCP/IP sockets.
Command Format
at+rsi_rejoin_params=<rsi_max_try>,<rsi_scan_interval>,<rsi_beacon_missed_count >,<rsi_first_time_retry_enabled>
Parameters
rsi_max_try (4 bytes)
- This represents the number of attempt for join before giving up the error. If the number of rejoin attempts is 0, then module will try to rejoin indefinitely.
rsi_scan_interval (4 bytes)
- This is the time interval in seconds for the subsequent retry.
rsi_beacon_missed_count (4 bytes)
- This is the beacon missed count that module used to declare module connection status. If module found continuous beacon missed is greater than or equal to this value then it will declare connection as disconnected and will start rejoin process again.
rsi_first_time_retry_enable (4 bytes)
- If this is set to 1, then module will retry to connect if first join attempt fails. Number of attempts and scan interval may be configured by rsi_max_try and rsi_scan_interval respectively.
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0025, 0x002C
.
Asynchronous responses from module:
The following message indicates that module is in rejoin process. So, it is unable to process requested command.
ERROR<Error code=37>
0x45 0x52 0x52 0x4F 0x52 0x25 0x00 0x0D 0x0A
Following message to indicate rejoin failure to host.
ERROR<Error code=25>
0x45 0x52 0x52 0x4F 0x52 0x19 0x00 0x0D 0x0A
Availability
This command is available when the module is configured in Operating Mode 0, 2.
[ Go to top ]
rsi_wmm_config :: WMM PS
Description
This command is used to enable WMM Powersave configurations. This command should be issued before join command and before powersave command.
Command Format
at+rsi_wmm_config=<wmm_ps_enable>,<wmm_ps_type>,<wmm_ps_wakeup_interval>,<wmm_ps_uapsd_bitmap>
Parameters
wmm_ps_enable (2 bytes)
-
Enable or disable WMM PS
- 0 - disable
- 1 - enable
wmm_ps_type (2 bytes)
-
WMM PS type
- 0 - Transmit Based
- 1 - Periodic
wmm_ps_wakeup_interval (4 bytes)
- Wakeup interval in milli seconds.
wmm_ps_uapsd_bitmap (1 byte)
- Bitmap, 0 to 15 possible values.
wmm_ps_uapsd_bitmap | Functionality |
---|---|
wmm_ps_uapsd_bitmap[0]
|
Access category: voice |
wmm_ps_uapsd_bitmap[1]
|
Access category: video |
wmm_ps_uapsd_bitmap[2]
|
Access category: background |
wmm_ps_uapsd_bitmap[3]
|
Access category: Best effort U-APSD |
wmm_ps_uapsd_bitmap[4:7]
|
All set to
0
. Don't care bits.
|
-
Parameters
wmm_ps_type
,wakeup_interval
,wmm_ps_uapsd_bitmap
will be used for WMM-PS if Powersave is enabled andpsp_type
given as UAPSD.
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0021, 0x0025, 0x002C
.
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
Example
Command
at+rsi_wmm_config=1,1,0,10
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x77 0x6D 0x6D 0x5F 0x70 0x73 0x3D 0x31 0x2C 0x31 0x2C 0x30 0x2C 0x31 0x30 0x0D 0x0A
Response
OK
0x4F 0x4B 0x0D 0x0A
[ Go to top ]
rsi_sleeptimer :: Set Sleep Timer
Description
This command configures the sleep timer of the module to go into sleep during powersave operation. The command can be issued any time in case of powersave mode 9. If this command is not issued, then by default module takes 3 seconds as sleep timer.
Command Format
at+rsi_sleeptimer=<time_value>
Parameters
time_value (2 bytes)
- Sleep Timer value in seconds in the range [1 ... 2100].
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0025, 0x002C
.
Availability
This command is available when the module is configured in Operating Mode 0, 2.
[ Go to top ]
rsi_pwmode :: Power Mode
Description
This command configures the powersave mode of the module. Powersave is disabled by default. The command can be issued any time after the #join command in case of powersave mode 1, 2 and 3.
And after #init command before join command in case of powersave mode 8 and 9.
Note!
- RS9116-WiSeConnect doesn't support powersave modes while operating in AP or group owner mode.
- Powersave modes 2 and 8 are not supported in USB interface.
- In SPI interface when ULP mode is enabled, after wakeup from sleep, host must initialize SPI interface of the module.
-
To use num_of_dtim_skip feature, listen interval should be disable in join command,
listen_interval_dtim
param inat+rsi_pwmode
command should be1
(DTIM alligned).
Command Format
at+rsi_pwmode=<power_value>,<ulp_mode_enable>,<listen_interval_dtim>,<psp_type>,<monitor_interval>,<num_of_dtim_skip>,<listen_interval>
Parameters
power_value (1 byte)
Mode | Functionality |
---|---|
0
|
Powersave Mode 0 (Disable) |
1
|
Powersave Mode 1 |
2
|
Powersave Mode 2 |
3
|
Powersave Mode 3 |
8
|
Powersave Mode 8 |
9
|
Powersave Mode 9 |
ulp_mode_enable (1 byte)
Mode | Functionality | Validity |
---|---|---|
0
|
Low Power Mode. |
power_value
=
2
,
3
,
8
,
9
|
1
|
Ultra low power mode with RAM retention. |
power_value
=
2
,
3
,
8
,
9
|
2
|
Ultra low power mode without RAM retention. |
power_value
=
8
,
9
|
listen_interval_dtim (1 byte)
-
According to set or reset of this param, the module computes the desired sleep duration based on listen interval (from join command) and its wakeup alignment with Beacon or DTIM Beacon (based on this parameter).
-
0
- Module wakes up before nearest Beacon that does not exceed the specified listen interval time. -
1
- Module wakes up before nearest DTIM Beacon that does not exceed the specified listen interval time.
-
psp_type (1 byte)
-
This parameter shows powersave procedure type used. Following is the values for the
psp_type
.-
0
– Max powersave procedure -
1
– Fast powersave procedure -
2
– UAPSD powersave procedure
-
-
The recommended PSP mode is called
ENHANCED MAX PSP
. This is essentially a MAX PSP mode but switches to Fast PSP mode if AP does not deliver data within 20ms for PS-Poll. To enable this mode please follow below procedure.
-
Enable
BIT(26)
inCONFIG_FEATURE_BITMAP
-
Set
psp_type
=1
(Fast PSP) - Configure Monitor interval as required
-
Enable
Note!
-
When Fast PSP is enabled, module will disable powersave for
monitor_interval
of time for each data packet received or sent. -
UAPSD powersave is valid only if wmm is enabled through
at+rsi_wmm_config
command
monitor_interval (2 bytes)
- This is the time in ms to keep module in wakeup state for each TX or RX traffic sent or received respectively. Default value for this is 50 ms.
num_of_dtim_skip (1 byte)
- This parameter is to skip the number of DTIM. If its value is n then our module will wakeup at (n+1)th DTIM at each wakeup cycle.
-
To use this feature, ensure following condition:
BIT(1)
is reset in thejoin_feature_bitmap
injoin
command.
listen_interval (2 bytes)
-
This is valid only if
BIT(7)
injoin_feature_bit_map
is set. This value is given in time units (1024 microseconds). This parameter is used to configure maximum listen interval in powersave and should be less than the listen interval configured in join command.
Note!
To change the
listen_interval
dynamically, disable and then re-enable powersave with a new
listen_interval
.
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0021, 0x0025, 0x002C, 0xFFF8, 0x0015, 0x0026, 0x0052
Availability
This command is available when the module is configured in Operating Mode 0,5,9,13 Module can configure Coex modes are 1,5,9,12,13.
Powersave Operation
The behavior of the module differs according to the powersave mode configured. The following terminology is used in the below section in order to describe the functionality.
Protocol | Non Connected State | Connected State |
---|---|---|
WLAN | This mode is significant when module is not connected with any AP. In non-connected state, powersave modes supported are 8 and 9. | This mode is significant when module is in associated state with AP. In connected state, Powersave modes supported are 2 and 3. |
BT Classic | This mode is significant when module is in Idle (standby) state. | This mode is significant when module is in Connected sniff mode, Discoverable mode (ISCAN) and Connectable mode (PSCAN) |
BLE | This mode is significant when module is in Idle (standby) state. | This mode is significant when module is in Advertising state, scan state or connected state. |
Note!
- In case of WLAN, wake up period will be calculated based on DTIM interval.
- In case of BT-Classic, wake up period will be calculated based on inquiry scan interval in discoverable mode, page scan interval in connectable mode and sniff interval in connected mode.
- In case of BLE, wake up period will be calculated based on advertise interval in advertising state, scan interval in scanning state and connection interval in connected state.
- If incase BT/BLE wakeup period is less than the WLAN wakeup period, the module will wake up and serves BT/BLE and goes back to the sleep again.
Powersave: Mode 0
In this mode, module is active and powersave is disabled. It can be configured any time, while powersave is enabled with powersave mode 2 or powersave mode 8.
Powersave: Mode 1
Once the module is configured in powersave mode 1, it wakes up periodically based upon the DTIM interval configured in the connected AP. In power mode 1, only the RF part of the module is in power save while SoC continues to work normally. This command has to be given only when the module is in the connected state (with the AP).
After configuring the module to powersave mode 1, the host can issue subsequent commands. In powersave mode 1, the module can receive data from the host at any point in time, but it can send/receive the data to/from the remote terminal (like a remote socket), only when it wakes up at DTIM interval.
Figure: Powersave: Mode 1
Powersave: Mode 2
Once the module is configured in powersave mode 2, it can be woken up either by the host or periodically during its sleep-wake-up cycle based upon the DTIM interval. Power mode 2 uses GPIO based handshake.
In ULP mode,
feature_bit_map[4]
has to be set in opermode command.
In this mode, when the host wants to send data to the module, it sends a wakeup request to the module by asserting
ULP_GPIO_5
high in the case of LP or
UULP_GPIO_2
in case of ULP (which make the module wake up from powersave). After wakeup, if the module is ready for data transfer, it sends a wakeup indication to the host by asserting the
UULP_GPIO_3
or
UULP_GPIO_0
.
The host is required to wait until the module gives the wakeup indication, before sending any data to the module. After completion of data, the host can give sleep permission to the module by de-asserting
ULP_GPIO_5
in the case of LP or
UULP_GPIO_2
in the case of ULP. After recognizing sleep permission from the host, the module confirms the host by de-asserting
UULP_GPIO_3
or
UULP_GPIO_0
and goes back to its sleep-wakeup cycle.
The module can send a received packet or response to the host at any point in time. No handshake is required on the receive path.
Figure: Powersave: Mode 2
Powersave: Mode 3
Powersave Mode 3 uses a Message-based handshake. In Powersave Mode 3, both radio and SoC of RS9116- WiSeConnect are in powersave.
This mode is significant when the module is connected to the AP. Module wakes up periodically every DTIM and sends a wakeup message ("WKP") to the host. The module cannot be woken up asynchronously.
Every time module intends to go to sleep it sends a sleep request message ("SLP") to the host and expects the host to send the ACK message ("ACK"). Host either sends an acknowledgment message ("ACK") or any other pending message. But once ACK is sent, the host should not send any other message until the next wakeup message from the module is received.
The module will not go into complete power save state if ACK is not received from the host for the sent sleep message ("SLP"). The module can send a received packet or response to the host at any point in time. No handshake is required on the receive path.
Powersave message | Source |
---|---|
WKP
|
from Module |
SLP
|
from Module |
ACK
|
from Host |
Figure: Powersave Mode 3
Powersave: Mode 8
Powersave mode 8 uses GPIO based handshake. This command must be issued after the #init command. In Powersave Mode 8 both RF and SoC of RS9116-WiSeConnect are in complete powersave mode. This mode is significant when the module is not connected with any AP.
In ULP mode,
feature_bit_map[4]
has to be set in opermode command. In the case of LP (when ulp_mode_enable is
0
) host can wake up the module from power save by asserting
ULP_GPIO_5
. In the case of ULP (when ulp_mode_enable is
1
or
2
) host can wake up the module from power save by asserting
UULP_GPIO_2
.
When ulp_mode_enable is set to
0
or
1
, once the module gets a wake-up request from the host, DUT wakes up and indicates it is awake by asserting
UULP_GPIO_3
or
UULP_GPIO_0
based on the Wakeup indication GPIO selection in opermode command. The host is required to wait until the module gives the wakeup indication, before sending any next command to the module. After completion of command/data, the host can give sleep permission to the module by de-asserting ULP_GPIO_5 in the case of LP or
UULP_GPIO_2
in the case of ULP. After recognizing sleep permission from the host, the module confirms the host by de-asserting
UULP_GPIO_3
or
UULP_GPIO_0
and goes back to its sleep-wakeup cycle.
The module can send a received packet or response to the host at any point in time. No handshake is required on the receive path.
When ulp_mode_enable is set to
2
, after the module wakes up from sleep, the host needs to start giving commands from the beginning(opermode) as the module's state is not retained.
Figure: Powersave Mode 8
Note!
By default
UULP_GPIO_3
is used for wakeup indication to host. If
config_feature_bit_map[0] = 1
then
UULP_GPIO_0
is used for wakeup indication to host.
Powersave: Mode 9
Powersave Mode 9 uses a Message-based handshake. In this mode, the entire module, including the radio, enters powersave mode. This mode is significant when the module is not connected with any AP.
After receiving a powersave mode 9 command, the module sends
SLP (Sleep)
request to the host and waits for an
ACK
from the host. After the
ACK (Acknowledgement)
is received, the module goes to sleep. The sleep timer starts when powersave command is received. It can be configured by the host using the at+rsi_sleeptimer command.
If the host does not set any sleep time, the timer is configured for 3 seconds by default. Upon wakeup, the module sends a wakeup message to the host and expects the host to send an ack before it goes into the next sleep cycle. The host either sends an
ACK
or a message. However, once an
ACK
is sent, no other packet should be sent before receiving the next wakeup message.
Powersave message | Source |
---|---|
WKP (WAKE UP)
|
from Module |
SLP
|
from Module |
ACK
|
from Host |
When
ulp_mode_enable
is set to
2
, after waking up from sleep, the module sends the wakeup from sleep message (WKP FRM SLEEP) to the host when RAM retention is not enabled. After receiving the message, the host needs to start giving commands from the beginning (opermode) as the module's state is not retained.
Powersave message | Source |
---|---|
WKP FRM SLEEP
|
from Module |
Note!
Sleep Timer starts when
SLP
request is sent to the host. Sleep time varies based on the
ACK
sent by the host. If the
ACK
sent by the host is delayed, Module will be in sleep state for the remaining time.
Figure: Powersave Mode 9
[ Go to top ]
rsi_psk :: Wi-Fi Pre-shared Key
Description
The command is used to set the PSK (Pre shared key) to join to WPA/WPA2-PSK enabled APs. Using this command user can also pass the PMK (PAIRWISE MASTER KEY) as a parameter and can also generate PMK by providing PSK and SSID of connecting AP.
User can directly give PMK from host to reduce the connection time. This command should be issued after init and before join command, if module needs to connect to an secure Access point. This command can be ignored if the AP is in Open mode.
Command Format
Standard PSK Format
at+rsi_psk=<psk_type>,<psk_or_pmk>,<ap_ssid>
Length-based PSK Format enables a comma in the PSK
at+rsi_psk=<psk_type>,<length_of_psk>,<psk_or_pmk>,<ap_ssid>
Parameters
psk_type (1 byte)
-
1
-pre_shared_key
is provided inpsk_or_pmk
field -
2
-pairwise_master_key
is provided inpsk_or_pmk field
-
3
- generate pairwise master key from given pre shared key and SSID to which module wants to connect. -
4
- length based PSK -
5
- generation of PMK from length based PSK and SSID
length_of_psk (1 byte)
- Length of PSK which can include a comma
psk_or_pmk (64 bytes)
- In this field expected parameters are pre shared key of the access point to which module wants to associate or pair wise master key. Length of this field is 64 Bytes. In case of PMK only 32 bytes are valid, In case of PSK length can vary (8 to 63).
-
The PMK is 32 bytes in hex format (64 characters). The following example shows the PMK as an array.
PMK[32] = ;
-
The command using this PMK is
at+rsi_psk=2,7172010A161707907172010A161707907172010A161707907172010A16170790
ap_ssid (34 bytes)
-
This field contains the SSID of the access point, this field will be valid only if
psk_type
value is3
.- The maximum length of SSID is 32 bytes and the remaining 2 bytes are reserved for NULL termination and alignment.
-
If user generates PMK using
psk_type = 3 or 5
(i.e., by providing psk and ssid) then module uses generated PMK for connection establishment and there is no need to give pre-shared key or pair wise master key again.
Response
Response contains following payload only if
psk_type
=
3
or
5
. In case of
psk_type
=
1
or
2
, response does not contain any payload.
Result Code | Description |
---|---|
OK |
Success. If TYPE value is
1
or
2
|
OK
|
Success. If TYPE value is
3
or
5
|
ERROR <Error code>
|
Failure |
Pair wise master key of 32-bytes is given to host if
psk_type
is 3 or 5.
Possible error codes for this command are
0x0021, 0x0025, 0x0026, 0x0028, 0x002C, 0x0039, 0x003a, 0x003b
.
Availability
This command is available in operating mode 0.
Example 1
To join a WPA2-PSK security enabled network with key "12345ABCDE", the command is
Command
at+rsi_psk=1,12345ABCDE
0x61 0x740x2B0x720x730x690x5F 0x70 0x73 0x6B 0x3D 0x31 0x2c 0x31 0x32 0x33 0x34 0x35 0x41 0x42 0x43 0x44 0x45 0x0D 0x0A
Response
OK
0x4F 0x4B 0x0D 0x0A
Example 2
To join a WPA2-PSK security enable network with
pairwise_master_key
"ABCDEFABCDEFABCDEF12345678901234ABCDEFABCDEFABCDEF12345678901234",the command is:
Command
at+rsi_psk=2,ABCDEFABCDEFABCDEF12345678901234ABCDEFABCDEFABCDEF12345678901234
Response
OK
0x4F 0x4B 0x0D 0x0A
Example 3
To generate
pairwise_master_key
for the
pre_shared_key
=
12345678
and SSID
MY_NETWORK_NAME
, the command is
Command
at+rsi_psk=3,12345678,MY_NETWORK_NAME
Response
OK <pairwise_master_key>
0x4F 0x4B <32bytes of pairwise_master_key> 0x0D 0x0A
[ Go to top ]
rsi_wepkey :: Set WEP Keys
Description
This command configures the WEP key in the module to connect to an AP with WEP security. This command should be issued before join.
Command Format
at+rsi_wepkey=<index>,<key1>,<key2>,<key3>,<key4>
Parameters
index (2 bytes)
-
Selects key index configured in AP
- 0 - Key 1 is used
- 1 - Key 2 is used
- 2 - Key 3 is used
- 3 - Key 4 is used
keyX
-
key1
,key2
,key3
,key4
are the WEP keys. The module supports WEP hex mode only. -
The WEP key supplied to the AP should be of 10 characters (for 64 bit WEP mode) or 26 characters (for 128 bit WEP mode), and only the following characters are allowed for the key:
-
A
,B
,C
,D
,E
,F
-
a
,b
,c
,d
,e
,f
-
0
,1
,2
,3
,4
,5
,6
,7
,8
,9
-
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0021, 0x0025, 0x002C, 0x002D
Availability
This command is available when the module is configured in Operating Mode 0.
Example
Provide 4 WEP keys:
Command
at+rsi_wepkey=0,ABCDE12345,ABCDE12346,ABCDE12347, ABCDE12348
Provide one WEP key:
Command
at+rsi_wepkey=0,ABCDE12345,0,0,0
at+rsi_wepkey=2,0,0,ABCDE12345,0
Response
OK
0x4F 0x4B 0x0D 0x0A
[ Go to top ]
rsi_authmode :: WEP Authentication Mode
Description
This command configures the authentication mode for WEP in the module, if the AP is in WEP security mode.
Command Format
at+rsi_authmode=<auth_mode>
Parameters
auth_mode
-
Set to
0
for open WEP authentication. WEP shared mode is NOT supported.
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure, |
Possible error codes are
0x0021, 0x0025, 0x002C, 0xFFF8, 0x002D
Availability
This command is available when the module is configured in Operating Mode 0
Example
Command
at+rsi_authmode=0
0x61 0x74 0x2B0x72 0x73 0x69 0x5F 0x61 0x75 0x74 0x68 0x6D 0x6F 0x64 0x65 0x3D 0x30 0x0D 0x0A
Response
OK
0x4F 0x4B 0x0D 0x0A
[ Go to top ]
rsi_eap :: EAP Configuration
Description
This command is used to configure the EAP parameters for connecting to an Enterprise Security enabled Access Point. The supported EAP types are
EAP-TLS
,
EAP-TTLS
,
EAP-PEAP
,
EAP-FAST
and
EAP-LEAP
. EAP-GTC is not supported for EAP-FAST. This command can be sent any time after
rsi_init
and
rsi_join
in enterprise security mode.
Command Format
at+rsi_eap =<eap_method>,<inner_method>,<user_identity>,<password>,<okc>,<private_key_password>
Parameters
eap_method (32 bytes)
- Selects EAP method: TLS, TTLS, FAST, PEAP or LEAP. It should be ASCII character string.
inner_method (32 bytes)
- This field is valid only in TTLS/PEAP. In case of TTLS/PEAP supported inner methods are MSCHAP/MSCHAPV2. In case of TLS/FAST/LEAP this field is not valid and it should be fixed to MSCHAPV2.
- Here MSCHAP/MSCHAPV2 are ASCII character strings.
user_identity (64 bytes)
- User ID which is configured in the user configuration file of the radius sever.
password (128 bytes)
- Password which is configured in the user configuration file of the Radius Server for that User Identity.
okc (4 bytes)
-
To enable or disable opportunistic key caching (OKC)
-
0
– disable -
1
– enable
-
- When this is enabled, module will use cached PMKID to get MSK(Master Session Key) which is need for generating PMK which is needed for 4-way handshake.
private_key_password (82 bytes)
- This is password for encrypted private key given to the module. Module will use this password during decryption of encrypted private key. password length must be 80 bytes or less.
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0021, 0x0025, 0x002C
Availability
This command is available when the module is configured in Operating Mode 2.
Example
Command
at+rsi_eap=PEAP,MSCHAPV2,user1,12345678,0
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x65 0x61 0x70 0x3D 0x50 0x45 0x41 0x50 0x2C 0x4D 0x53 0x43 0x48 0x41 0x50 0x56 0x32 0x2C 0x75 0x73 0x65 0x72 0x31 0x2C 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x2C 0x30 0x0D 0x0A
See the AT Command Example reference for additional examples.
Response
OK
0x4F 0x4B 0x0D 0x0A
[ Go to top ]
rsi_cert :: Set TLS Certificate
Description
This command is used to load/erase SSL/TLS (certificate and private keys) and enterprise security (EAP-TLS or EAP-FAST) certificates. Certificates should be loaded before using SSL/EAP. This command should be sent before join command for enterprise security mode and before socket creation for SSL sockets. Certificates will be loaded in non-volatile memory of the module, so that loading certificate is required to be done only once.
Note!
- Enable powersave before loading certificates if the module is in Wi-Fi connected state.
- Need to shut down the SSL socket for which it wants to change the certificates, if the socket is already in the connected state, otherwise, the firmware will throw an error.
Command Format
at+rsi_cert =<cert_type>,<total_len>,<key_pwd>,<certificate>
Parameters
cert_type (1 byte)
cert_type | Type of certificate |
---|---|
1 | EAP client certificate |
2 | FAST PAC file |
3 | SSL Client Certificate |
4 | SSL Client Private Key |
5 | SSL CA Certificate |
6 | SSL Server Certificate |
7 | SSL Server Private Key |
17 | EAP private key |
33 | EAP public key |
49 | EAP CA certificate |
total_len (2 bytes)
- Certificate's total length in bytes.
Note!
- For Enterprise security, maximum certificate length should be 12280 bytes. For TLS Certificates, the max length is 12280 bytes and for the Private Keys, it is 4088 bytes.
- Module shares same TLS certificates for all supported SSL sockets.
-
For enterprise, user can load certificates in two ways
- User can provide wifiuser.pem which contains 4 certificates in a given fixed order of private key, client certificate 1, client certificate 2, CA certificate with CertType as 1.
- User can load individual EAP certificates private key, public key, and CA certificates with CertType as 17,33 and 49 respectively. Maximum certificate length for each individual certificates is 4088 bytes
- Certificate Loading into Flash is only allowed upto init state. After init state e.g. scan/join etc certificate loading into flash is not allowed.
- Certificate Loading into RAM is allowed in connected state also provided same type of socket already does not exist. For example, loading client cert is only allowed if there does not exist any client socket. Same is for server certificates too
- Root certificate has the highest authority being at the top of the signing hierarchy.
- Root certificate is an expected/required certificate which usually comes pre-installed in the operating systems and it plays a key part in certificate chain verification when a device is performing TLS authentication with the IoT endpoint.
- On RS9116 device, we do not maintain root trust repository due to memory constraints, so it is mandatory to load Root certificate for successful mutual authentication.
- On RS9116 to authenticate, firstly Root CA is validated (validate the Root CA received with the Root CA loaded on the device). Once the Root CA is validation is successful , other certificates sent from the server are validated.
- RS9116 will not be able to authenticate to server if intermediate CA certificates are loaded instead of Root CA and would result in Handshake error.
- The valid certificate format to load into the module is .pem . It is recommended to use loading of single certificate method (wifiuser.pem)
-
By default, TLS certificates will be loaded onto flash. Set
BIT(27)
intcp_ip_feature_bit_map
to load TLS certificate onto RAM.
key_pwd(128 bytes)
- Reserved.
certificate
- This is the data of the actual certificate.
-
To erase a certificate, set
total_len
,key_pwd
,certificate
fields '0'.cert_type
should be set to type of the certificate to erase as mentioned above. See the following example.
at+rsi_cert=<cert_type>,0,0,0
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0015, 0x0021, 0x0025, 0x0026, 0x002C
Availability
This command is available when the module is configured in Operating Mode 0,2
Example
The following example shows the procedure for loading certificates using Python on a PC. Requirements: Python 2.7.10 and pyserial
It may not be possible to issue this command in Hyper-terminal because the content of a certificate file needs to be supplied as one of the inputs of the command. This can be done by other means, such as using a Python script.
- Loading or erasing the certificates should be performed only after the opermode command has been issued.
- Before loading the certificate, certificates should be erase the certificate.
-
To load the certificate, run the python script
load_certificate.py
available in the WiSeConnect SDK utilities folder
-
Copy
load_certificate.py
to...\resouces\certificates
folder in the SDK. - Ensure the serial port and baudrate of the hardware e.g. sp=serial.Serial(port="COMx",baudrate=115200,timeout=0.01))
-
Run the python scripts using ->
python load_certificate.py <CertType> <Certificate>
-
After successful certificate loading, the script respondes with
OK
Command
at+rsi_cert=1,0,0,0
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x63 0x65 0x72 0x74 0x3D 0x31 0x2C 0x30 0x2C 0x30 0x2C 0x30 0x0D 0x0A
Response
OK
0x4F 0x4B 0x0D 0x0A
[ Go to top ]
rsi_cert_index :: Set Certificate With Index
Description
This command is used to load/erase SSL (certificate and private keys). Certificates should be loaded before using TLS. This command should be sent before socket creation for TLS sockets. Certificates will be loaded in non-volatile memory of the module, so that loading certificate is required to be done only once.
Note!
- This command is used for standalone Wi-Fi mode in case of loading certificates for multiple TLS sockets to flash.
-
This command should be sent only after
opermode
command.
Command Format
at+rsi_cert_index =<cert_type>,<total_len>,<cert_index>,<key_pwd>,<certificate>
Parameters
cert_type (1 byte)
|
cert_type
|
Type of certificate
|
|------------------|----------------------|
| 1 | EAP Client certificate |
| 2 | FAST PAC file |
| 3 | SSL Client Certificate |
| 4 | SSL Client Private Key |
| 5 | SSL CA Certificate |
| 6 | SSL Server Certificate |
| 7 | SSL Server Private Key |
| 17 | EAP private key |
| 33 | EAP public key |
| 49 | EAP CA certificate |
total_len (2 bytes)
- Certificate's total length in bytes.
Note!
- For TLS certificates, the max length is 12280 bytes and for the Private Keys, it is 4088 bytes.
- Recommended to use loading of single certificate method (wifiuser.pem)
-
Set
BIT[27]
intcp_ip_feature_bit_map
to load TLS certificate onto RAM. By default SSL certificates will be loaded onto flash. -
Set
BIT[31]
intcp_ip_feature_bit_map
&BIT[29]
inext_tcp_ip_feature_bit_map
to open 3 SSL Client sockets.
cert_index (1 byte)
- RS9116 can either load certificates onto RAM or FLASH, but not both at a time.
- Module can hold two sets of TLS certificate into RAM. This field is used to provide the index of the certificates and possible values are 0 and 1.
- Module can hold three sets of TLS certificate onto Flash. This field is used to provide the index of the certificates and possible values are 0, 1 and 2.
key_pwd (127 bytes)
- Reserved.
certificate
- This is the data of the actual certificate.
-
To erase a certificate, set
total_len
,key_pwd
,certificate
fields '0'.cert_type
should be set to type of the certificate to erase as mentioned above. See the following example.
at+rsi_cert_index=<cert_type>,0<cert_index>,0,0.
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0015, 0x0021, 0x0025, 0x0026, 0x002C, 0x005D, 0x005E, 0x005F
.
Availability
This command is available when the module is configured in Operating Mode 0, 2.
Example
The following example shows the procedure for loading certificates using Python on a PC. Requirements: Python 2.7.10 and pyserial
It may not be possible to issue this command in Hyper-terminal because the content of a certificate file needs to be supplied as one of the inputs of the command. This can be done by other means, such as using a Python script.
- Loading or erasing the certificates should be performed only after the opermode command has been issued.
- Before loading the certificate, certificates should be erase the certificate.
-
To load the certificate, run the python script
load_certificate.py
available in the WiSeConnect SDK utilities folder
-
Copy
load_certificate_with_inx.py
to '...\utilities\certificates' folder. - User needs to ensure the serial port and baudrate of the hardware e.g. sp=serial.Serial(port="COMx",baudrate=115200,timeout=0.01)
-
Run the python scripts using ->
python load_certificate_with_inx.py <CertType><CertInx> <Certificate>
- After successful certificate loading,scripts give 'OK' as response.
After successful certificate loading,scripts give 'OK' as response.
For erasing certificate with index 0:
Command
at+rsi_cert_index=1,0,0,0,0
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x63 0x65 0x72 0x74 x5F 0x69 0x6E 0x78 0x3D 0x31 0x2C 0x30 0x2C 0x30 0x2C 0x30 0x2C 0x30 0x0D 0x0A
Response
OK
0x4F 0x4B 0x0D 0x0A
[ Go to top ]
rsi_disassoc :: Wi-Fi Disassociate
Description
This command is issued to request the module to disassociate (disconnect) from an Access Point. The Host can then issue a fresh set of #init, #scan and #join commands to connect to a different Access Point or the same Access Point with a different set of connection parameters. This command can also be used to stop the module from continuing an on-going rejoin operation. Additionally, this command is used when the module is in AP mode, to remove clients from its list of connected nodes.
Command Format
at+rsi_disassoc=<mode_flag>,<client_mac_addr>
Parameters
mode_flag (2 bytes)
Mode | Functionality |
---|---|
0 | Module is in client mode. The second parameter mac_addr is ignored when mode is 0. |
1 | Module is in AP mode. |
client_mac_addr (6 bytes)
- MAC address of the client to disconnect. Used when the module is in AP mode
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0006, 0x0013, 0x0021, 0x002C, 0x0015
.
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
Note! After issuing disconnect command, any powersave enabled by that time will be disabled. User can reissue the powersave command after initializing the module again.
Example 1
Module is in client mode and is connected to an AP. It wants to formally disconnect from the AP.
Command
at+rsi_disassoc=0
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x64 0x69 0x73 0x61 0x73 0x73 0x6F 0x63 0x3D 0x30 0x0D 0x0A
Example 2
Module is in AP mode and 3 clients are connected to it. One of the clients, with MAC 0x01 0x02 0x03 0x040 0x05 0x06, needs to be disconnected by the AP.
Command
at+rsi_disassoc=1,010203040506
0x61 0x740x2B0x720x730x690x5F 0x64 0x69 0x73 0x61 0x73 0x73 0x6F 0x63 0x3D 0x31 0x2C 0x30 0x31 0x30 0x32 0x30 0x33 0x30 0x34 0x30 0x35 0x30 0x36 0x0D 0x0A
Response
OK
0x4F 0x4B 0x0D 0x0A
[ Go to top ]
rsi_ipconf :: Set IP Parameters
Description
This command configures the IP address, subnet mask and default gateway for the module.
Command Format
at+rsi_ipconf=<dhcp_mode>,<ip_addr>,<netmask>,<gateway>,<hostname>,<vap_id>,<fqdn_flag>
Parameters
dhcp_mode (1 byte)
-
Used to configure TCP/IP stack in manual or DHCP modes.
-
0
– Manual -
1
– DHCP enabled -
3
- Enable DHCP and to send host name in DHCP discover -
5
- Enable Option 71 (Network News Server Addresses) with static IP.
-
Note!
- DHCP Mode 5 is currently not supported.
-
In AP mode only DHCP manual mode (static IP) is valid. sending host name is valid only in DHCP enable mode.
-
4
- To enable FQDN Option with static ip (Option 81 with static IP) -
7
- To enable DHCP, hostname, DHCP Client FQDN option (Option 81: Fully Qualified Domain Name with Dynamic IP) -
9
- To support DHCP unicast Offer from server
-
- Module can obtain the DNS server IP address from DHCP offer, if the DHCP server supports it. However, the DNS server IP address it obtained is not accessible to the host.
ip_addr (4 bytes)
- IP address in 4 bytes hex format. This can be 0's in case of DHCP.
netmask (4 bytes)
- Subnet mask in 4 bytes hex format. This can be 0's in case of DHCP.
gateway (4 bytes)
- Gateway in 4 bytes hex format. This can be 0's in case of DHCP.
hostname (31 bytes)
- Host name for DHCP Client. This can be null, when DHCP mode is not enabled. This field is valid only when dhcp_mode value is 3. Maximum Hostname length is valid up to 31 bytes including NULL.
vap_id (1 byte)
-
Virtual Access Point (AP) is only relevant in concurrent mode and when dhcp mode is manual
-
0
– Use to assign static IP for client mode. -
1
- Use to start DHCP server in concurrent AP mode (should be given before AP creation i.e. join).
-
fqdn_flag (4 bytes)
-
0
DNS Client should update TYPE_A (host name) record and TYPE_PTR records. -
1
DHCP Server will update both TYPE_A and TYPE_PTR records
Response
Result Code | Description |
---|---|
OK <MAC_Address><IP_Address><Subnet_Mask><Gateway>
|
Success |
ERROR <Error code>
|
Failure |
where ...
- MAC_Address (6 bytes). MAC Address
- IP_Address (4 bytes). Assigned IP address
- Subnet_Mask (4 bytes). Assigned subnet address
- Gateway (4 bytes). Assigned gateway address
Possible error codes are
0x0021, 0x0025, 0x002C, 0xFFFC, 0xFF74, 0xFF9C, 0xFF9D
.
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
Example 1
To configure in manual mode, with
-
192.168.1.3
as IP address -
255.255.255.0
as subnet mask -
192.168.1.1
as the gateway
Command
at+rsi_ipconf=0,192.168.1.3,255.255.255.0,192.168.1.1
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x69 0x70 0x63
0x6F 0x6E 0x66 0x3D 0x30 0x2C 0x31 0x39 0x32 0x2E
0x31 0x36 0x38 0x2E 0x31 0x2E 0x33 0x2C 0x32 0x35
0x35 0x2E 0x32 0x35 0x35 0x2E 0x32 0x35 0x35 0x2E
0x30 0x2C 0x31 0x39 0x32 0x2E 0x31 0x36 0x38 0x2E
0x31 0x2E 0x31 0x0D 0x0A
Response
OK <MAC_Address><IP_Address><Subnet_Mask><Gateway>
0x4F 0x4B 0x01 0x02 0x03 0x04 0x05 0x06 0xC0 0xA8 0x01 0x03 0xFF 0xFF 0xFF 0x00 0xC0 0xA8 0x01 0x01 0x0D0x0A
Example 2
To configure the IP in DHCP enabled mode.
Command
at+rsi_ipconf=1,0,0,0
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x69 0x70 0x63 0x6F 0x6E 0x66 0x3D 0x31 0x2C 0x30 0x2C 0x30 0x2C 0x30 0x0D 0x0A
Response
OK <MAC_Address><IP_Address><Subnet_Mask><Gateway>
0x4F 0x4B 0x01 0x02 0x03 0x04 0x05 0x06 0xC0 0xA8 0x01 0x03 0xFF0xFF0xFF0x000xC00xA80x010x01 0x0D 0x0A
Example 3
To configure the IP in DHCP enabled mode with hostname.
Command
at+rsi_ipconf=3,dhcp_client
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x69 0x70 0x63 0x6F 0x6E 0x66 0x3D 0x31 0x2C 0x30 0x2C 0x30 0x2C 0x30 0x0D 0x0A
Response
OK <MAC_Address><IP_Address><Subnet_Mask><Gateway>
0x4F 0x4B 0x01 0x02 0x03 0x04 0x05 0x06 0xC0 0xA8 0x01 0x03 0xFF0xFF0xFF0x000xC00xA80x01 0x01 0x0D 0x0A
[ Go to top ]
RSI_IPCONF :: IP Change Notification
Description
This notification is received when module gets a different IP compared to modules old IP address, after DHCP renewal. Module indicates this IP change to host by an asynchronous frame.
Notification Format
AT+RSI_IPCONF<mac_addr><ip_addr><netmask><gateway>
where ...
mac_addr (6 bytes)
- MAC Address ip_addr(4 bytes) Assigned IP address
netmask (4 bytes)
- Assigned subnet address
gateway (4 bytes)
- Assigned gateway address
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
Example
Command
at+rsi_ipconf<macAddr><ip_addr><netmask><gateway>
0x41 0x54 0x2B 0x52 0x53 0x49 0x5F 0x49 0x50 0x43 0x4F 0x4E 0x46 0x3D 0x01 0x02 0x03 0x04 0x05 0x06 0xC0 0xA8 0x01 0x03 0xFF 0xFF 0xFF 0x00 0xC0 0xA8 0x01 0x01 0x0D 0x0A
[ Go to top ]
rsi_tcp :: Open a Socket
Description
This command is used to establish either a client or server socket.
Note!
- A maximum of 10 sockets can be opened. Range of socket handles are between 1 to 10.
- Module supports maximum of 2 TLS sockets. These can be either client or server sockets. When HTTPS server is enabled then user can open only 1 TLS socket.
- Module supports maximum of 8 non TLS Web sockets and 2 TLS Web sockets.
- After MQTT connection, the maximum LTCP can support is only 9.
- Each TLS/Web socket will occupy one TCP socket. TLS is supported only in Wi-Fi Client mode
- If TLS is enabled, module uses same TLS version until module reboots.
- If TLS is enabled, the module uses the same CA certificate for both TLS server socket and TLS Client socket until module reboots.
- If the destination IP address is given as 0.0.0.0, the module will read the server IP and port number from the flash using index number . The Port number should be same as the index number value given while storing the server IP and port number using rsi_store_server_ip_port command. Index number range value : 0 to 3.
Case 7 is valid only when BIT(27) is not set in tcp_ip_feature_bit_map (module will use TLS certificates from FLASH).
If BIT(27) (TLS certificate on to the RAM feature) is set in tcp_ip_feature_bit_map, module only supports either TLS server socket or TLS Client socket.
Command Format
UDP Client (IPv4)
at+rsi_udp=<dest_ip_addr>,<dest_port>,<local_port>,<tos>,<socket_bitmap>,<vap_id>
UDP Server (IPv4)
at+rsi_ludp=<local_port>,<tos>,<socket_bitmap>,<vap_id>
TCP/TLS/Web Client (IPv4)
at+rsi_tcp=<dest_ip_addr>,<dest_port>,<local_port>,<tos>,<tls_ws_enable>,<tls_ciphers_bitmap>,<webs_resource_name>, <webs_host_name>,<tcp_retry_count>,<socket_bitmap>,<rx_window_size>,<tcp_keepalive_timeout>,<vap_id>,<cert_index>
TCP/TLS/Web Server (IPv4)
at+rsi_ltcp=<local_port>,<max_count>,<tos>,<tls_ws_enable>,<tls_ciphers_bitmap>,<tcp_retry_count>,<socket_bitmap>,<rx_window_size>,<tcp_keepalive_timeout>,<vap_id>,<cert_index>
Note!
When using TCP sockets, it is recommended to set
ext_tcp_ip_feature_bit_map[16]
when configuring the operating mode using the command:
rsi_opermode
.
Parameters
dest_ip_addr
- IP Address
dest_ip_addr (4 bytes)
-
IPv4 address if
ip_version 4
is selected. Module ignores remaining 12 bytes in case of ip version 4.
local_port (2 bytes)
-
Local port number used by the module for the socket. Value ranges from
[1024 .. 49151]
dest_port (2 bytes)
-
Destination port. Value ranges from
[1024 .. 49151]
EXCEPT30000
which is reserved. Ignored when TCP server or listening UDP sockets are to be opened.
max_count (2 bytes)
- Maximum number of clients which can be connected in case of LTCP.
Note!
Module supports maximum two TLS sockets, so
max_count
should be less than or equal to 2 when a listening TCP server (LTCP) is used. If
max_count
is 2 then host can create only one TLS based LTCP socket with two clients support.
This field
max_count
can be ignored if the socket type is other than 2 (TCP server).
tos (4 bytes)
-
Type of Service field. Possible values are
[0 .. 7]
TOS Value | Description |
---|---|
0 | Best Effort |
1 | Priority |
2 | Immediate |
3 | Flash-mainly used for voice signaling |
4 | Flash Override |
5 | Critical - mainly used for voice RTP (Real-time Tranlocal_port Protocol) |
6 | Internet |
7 | Network |
tls_ws_enable (1 byte)
-
This field is used to enable the following socket combinations
-
0x00
– Open TCP socket -
0x01
- Open SSL Client socket -
0x02
- Open Web socket client -
0x04
- Open SSL socket with TLS 1.0 version -
0x08
- Open SSL socket with TLS 1.2 version -
0x80
- Open High performance TCP Rx socket
-
Note!
To support TLS sockets with multiple TLS Versions, set
ext_custom_feature_bitmap[14] = 1
-
Example combinations are listed below.
-
0x00
to open normal TCP socket -
0x01
to open SSL over TCP socket. By default module will open TLS socket that supports both TLS 1.0 and TLS 1.2. -
0x02
to open web socket client over TCP socket -
0x03
to open web socket over SSL TCP socket -
0x05
to open SSL over TCP socket with TLS 1.0 version -
0x09
to open SSL over TCP socket with TLS 1.2 version -
0x07
to open web socket client over SSL TCP socket with TLS 1.0 version -
0x0B
to open web socket client over SSL TCP socket with TLS 1.2 version -
0x80
to open High performance TCP socket -
0x81
to open High performance TCP socket over SSL -
0x82
to open High performance Web socket -
0x83
to open High performance Web socket over SSL
-
tls_ciphers_bitmap (4 bytes)
-
The default set of ciphers that are always available is listed below.
-
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBE_SHA
-
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
-
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
-
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
-
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
-
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
-
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
-
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
-
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
-
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
-
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
-
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
-
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
-
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
-
-
tls_ciphers_bitmap[31]
is used to select between a basic set of additional ciphers or an extended set of ciphers. -
When
tls_ciphers_bitmap[31] = 0
, the following ciphers are available according to whether the corresponding bit is set.
Bit Position | Value | Name |
---|---|---|
BIT[1]
|
2
|
TLS_RSA_WITH_AES_256_CBC_SHA256
|
BIT[2]
|
4
|
TLS_RSA_WITH_AES_128_CBC_SHA256
|
BIT[3]
|
8
|
TLS_RSA_WITH_AES_256_CBC_SHA
|
BIT[4]
|
16
|
TLS_RSA_WITH_AES_128_CBC_SHA
|
BIT[5]
|
32
|
TLS_RSA_WITH_AES_128_CCM_8
|
BIT[6]
|
64
|
TLS_RSA_WITH_AES_256_CCM_8
|
-
When
tls_ciphers_bitmap[31] = 1
, the following extended set of ciphers is available according to whether the corresponding bit is set.
Bit Position | Macro | Set to 0 | Set to 1 |
---|---|---|---|
BIT[ 0]
|
BIT_TLS_RSA_WITH_AES_256_CBC_SHA256
|
Disable | Enable |
BIT[ 1]
|
BIT_TLS_RSA_WITH_AES_128_CBC_SHA256
|
Disable | Enable |
BIT[ 2]
|
BIT_TLS_RSA_WITH_AES_256_CBC_SHA
|
Disable | Enable |
BIT[ 3]
|
BIT_TLS_RSA_WITH_AES_128_CBC_SHA
|
Disable | Enable |
BIT[ 4]
|
BIT_TLS_RSA_WITH_AES_128_CCM_8
|
Disable | Enable |
BIT[ 5]
|
BIT_TLS_RSA_WITH_AES_256_CCM_8
|
Disable | Enable |
BIT[ 6]
|
Reserved | ||
BIT[ 7]
|
Reserved | ||
BIT[ 8]
|
BIT_TLS_DHE_RSA_WITH_AES_12_8_GCM_SHA256
|
Disable | Enable |
BIT[ 9]
|
BIT_TLS_DHE_RSA_WITH_AES_25_6_GCM_SHA384
|
Disable | Enable |
BIT[10]
|
BIT_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
|
Disable | Enable |
BIT[11]
|
BIT_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
|
Disable | Enable |
BIT[12]
|
Reserved | ||
BIT[13]
|
Reserved | ||
BIT[14]
|
BIT_TLS_DHE_RSA_WITH_AES_25_6_CBC_SHA256
|
Disable | Enable |
BIT[15]
|
BIT_TLS_DHE_RSA_WITH_AES_12_8_CBC_SHA256
|
Disable | Enable |
BIT[16]
|
BIT_TLS_DHE_RSA_WITH_AES_25_6_CBC_SHA
|
Disable | Enable |
BIT[17]
|
BIT_TLS_DHE_RSA_WITH_AES_12_8_CBC_SHA
|
Disable | Enable |
BIT[18]
|
BIT_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
|
Disable | Enable |
BIT[19]
|
BIT_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
|
Disable | Enable |
BIT[20]
|
BIT_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
|
Disable | Enable |
BIT[21]
|
BIT_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
|
Disable | Enable |
BIT[22]
|
BIT_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
|
Disable | Enable |
BIT[23]
|
BIT_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
|
Disable | Enable |
BIT[24]
|
BIT_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
|
Disable | Enable |
BIT[25]
|
BIT_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
|
Disable | Enable |
BIT[26]
|
BIT_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
|
Disable | Enable |
BIT[27]
|
BIT_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
|
Disable | Enable |
BIT[28]
|
Reserved | ||
BIT[29]
|
Reserved | ||
BIT[30]
|
Reserved | ||
BIT[31]
|
SSL_NEW_CIPHERS
|
Disable | Enable |
Note! The RS9116 does not include hardware support for GCM based ciphers. Use of these ciphers may impact performance since related crypto operations are performed by software.
- Index of the curve that may be used by TLS at the time of handshake
Curve Id | Description |
---|---|
15 | secp160k1 |
16 | secp160r1 |
17 | secp160r2 |
18 | secp192k1 |
19 | secp192r1 |
20 | secp224k1 |
21 | secp224r1 |
22 | secp256k1 |
23 | secp256r1 |
24 | secp384r1 |
25 | secp521r1 |
26 | brainpoolP256r1 |
27 | brainpoolP384r1 |
28 | brainpoolP512r1 |
webs_resource_name (51 bytes)
-
The resource name to connect with at the websocket server. NULL is passed by default and the server assumes it as root. Examples:
-
/
(default, the root of the server) -
/chat
-
/sensor_pipe
-
- A string of 50 characters plus null terminator is the maximum possible input to this variable.
webs_host_name (51 bytes)
-
Web socket hostname is the URL name of Websocket server to whom client will connect, by default NULL is passed and firmware sends it as localhost. Examples:
-
service.example.com
-
sensors.mydomain.com
-
- A string of 50 characters plus null terminator is the maximum possible input to this variable.
tcp_retry_count (1 byte)
- Configure TCP retransmission count.
socket_bitmap (1 byte)
- Configure socket bit map
socket_bitmap | Functionality | Description |
---|---|---|
socket_bitmap[0]
|
Synchronous data read | Module sends data to host only after receiving data read request from host. |
socket_bitmap[1]
|
TCP socket | To open a listening TCP socket and to accept client connection, host need to provide accept command. |
socket_bitmap[2]
|
TCP ACK indication | When this bit is enabled module gives an TCP ACK indication (Frame type 0xAB) to host after receiving TCP ACK from remote peer.Host has to send next data packet to module only after receiving this TCP ACK indication |
socket_bitmap[3]
|
If this bit is set module handles small sized received packets effectively. | Recommended to set for the sockets which receive small size packets |
socket_bitmap[4]
|
TCP RX window size | When this bit is enabled, module opens socket with RX window size based on the value provided in rx_window_size field |
socket_bitmap[5]
|
Enable certificate indexing |
When
socket_bitmap[5] = 1
, certificate configured with
cert_index
is used, otherwise defaults certificate(s) are used.
|
rx_window_size (1 byte)
- This field is used to configure the RX window size for the TCP socket. Possible values are 1 to 15 based on the availability of memory.
tcp_keepalive_timeout (2 bytes)
- This field is used to configure TCP keep alive initial timeout in seconds.
vap_id
-
Possible values are 0 and 1.
-
0
– Module will try to connect to scanned AP. -
1
– Module will create AP.
-
cert_index (1 byte)
- Index for loading the certificate. Possible values: 0 and 1 for loading into RAM. Possible values: 0, 1, and 2 for loading into FLASH.
Note! Index-based certificate loading is valid only for storing certificates on to ram or flash but not both at a time.
Response
TCP/SSL/Web socket over IPv4
Result Code | Description |
---|---|
OK <ip_version> <socket_type> <socket_descriptor> <local_port> <dest_port> <local_ip_addr> <dest_ip_addr> <mss> <window_size>
|
Success. |
ERROR <Error code>
|
Failure |
TCP/SSL server socket over IPv4 / LUDP socket over IPv4
Result Code | Description |
---|---|
OK <ip_version> <socket_type> <socket_descriptor> <local_port> <ip_addr>
|
Success. |
ERROR <Error code>
|
Failure |
where ...
-
ip_version
(2 bytes) is the IP version used, either 4 or 6. -
socket_type
(2 bytes) is Type of the created socket:-
0
– TCP/SSL Client -
2
– TCP/SSL Server (Listening TCP) -
4
– Listening UDP
-
-
socket_descriptor
(2 bytes). Created socket's descriptor or handle, starts from 1. socket_descriptor ranges from 1 to 10. The first socket opened will have a socket descriptor of 1, the second socket will have 2 and so on. -
local_port
(2 bytes). Port number of the socket in the module. -
dest_port
(2 bytes) Port number of the socket in the destination side. -
ip_addr
- IPv4 (4 bytes) IPv4 address if IPv4 is selected. Module ignores remaining 12 bytes in case of IPv4.
-
dest_ip_addr
- IPv4 (4 bytes) IPv4 address if IPv4 is selected. Module ignores remaining 12 bytes in case of ip version 4.
-
mss
(2 bytes) maximum segment size of the remote peer. In case ofludp
/ltcp
this field will not be present. - -window_size
(4 bytes) Window size of the remote peer. In case ofludp
/ltcp
this field will not be present.
Possible error codes are
0xBB46, 0xBB22, 0xBB23, 0xBB33, 0xBB34, 0xBB35, 0xBB36, 0xBB45, 0xBB46, 0x0015, 0x0021, 0x0025, 0x002C, 0xFF74, 0xBBD3, 0xBBD2, 0xBBD1, 0xFF80
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
Example 1
Open TCP socket over IPv4
Command
at+rsi_tcp=192.168.0.2,34000,1234,0,0,0,0
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x74 0x63 0x70 0x3D 0x31 0x39 0x32 0x2E 0x31 0x36 0x38 0x2E 0x30 0x2E 0x32 0x2C 0x33 0x34 0x30 0x30 0x30 0x2C 0x31 0x32 0x33 0x34 0x2C 0x30 0x2C 0x30 0x2C 0x30 0x0D 0x0A
Response
OK <ip_version =0x04 0x00><socket_type =0x0000><socket_descriptor =0x0001><local_port=0x4d2><dest_port = 0x84D0><local_ip_addr= 0xC0 0xA8 0x00 0x04 0x00(12 times)><dest_ip_addr= 0xC0 0xA8 0x00 0x02 0x00(12 times)><mss =0x8C 0x05><window_size =0x00 0x00 0xFF 0xFF>
0x4F 0x4B 0x04 0x00 0x00 0x00 0x01 0x00 0xD2 0x04 0xD0 0x84 0xC0 0xA8 0x00 0x04 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xC0 0xA8 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x8C 0x05 0xFF 0xFF 0x00 0x00 0x0D 0x0A
Example 2
Open High performance TCP socket over IPv4
Command
at+rsi_tcp=192.168.0.2,8000,1236,0,128,0
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x74 0x63 0x70 0x3D 0x31 0x39 0x32 0x2E 0x31 0x36 0x38 0x2E 0x30 0x2E 0x32 0x2C 0x38 0x30 0x30 0x30 0x2C 0x31 0x32 0x33 0x36 0x2C 0x30 0x2C 0x31 0x32 0x38 0x2C 0x30 0x0D 0x0A
Response
OK <ip_version =0x04 0x00><socket_type =0x0000><socket_descriptor =0x0001><local_port=0x4d2><dest_port = 0x1F40><local_ip_addr= 0xC0 0xA8 0x00 0x02 0x00(12 times)> <dest_ip_addr= 0xC0 0xA8 0x00 0x04 0x00(12 times)><mss=0x8C 0x05><window_size =0x00 0x00 0xFF 0xFF>
0x4F 0x4B 0x04 0x00 0x00 0x00 0x01 0x00 0xD4 0x04 0x40 0x1F 0xC0 0xA8 0x00 0x04 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xC0 0xA8 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x8C 0x05 0xFF 0xFF 0x00 0x00 0x0D 0x0A
Example 3
Open Web socket over IPv4
Command
at+rsi_tcp=174.129.224.73,80,1234,0,2,0,echo.websocket.org
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x74 0x63 0x70 0x3D 0x31 0x37 0x34 0x2E 0x31 0x32 0x39 0x2E 0x32 0x32 0x34 0x2E 0x37 0x33 0x2C 0x38 0x30 0x2C 0x35 0x30 0x30 0x30 0x2C 0x30 0x2C 0x32 0x2C0x30 0x2C 0x2C 0x65 0x63 0x68 0x6F 0x2E 0x77 0x65 0x62 0x73 0x6F 0x63 0x6B 0x65 0x74 0x2E 0x6F 0x72 0x67 0x3C 0x43 0x52 0x3E 0x3C 0x4C 0x46 0x3E
Response
OK <ip_version =0x04 0x00><socket_type =0x0000><socket_descriptor =0x0001><local_port
=0x4d2><ipv4_addr= 0xC0 0xA8 0x28 0x12 0x00(12 times)> <mss =0xB4 0x05><window_size =0x00 0x00 0x01 0x0>
0x4F 0x4B 0x04 0x00 0x00 0x00 0x01 0x00 0xd2 0x04 0xC0 0xA8 0x28 0x12 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xB4 0x05 0x00 0x00 0x01 0x00 0x0D 0x0A
Example 4
Open LTCP socket over IPv4
Command
at+rsi_ltcp=5001,5,0,0
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x6C 0x74 0x63 0x70 0x3D 0x35 0x30 0x30 0x31 0x2C 0x35 0x2C 0x30 0x2C 0x30 0x0D 0x0A
Response
OK <ip_version><socket_type><socket_handle><Lport><local_ip_addr>
OK <ip_version=0x040x00><socket_type=0x0002><socket_descriptor=0x0001><local_port=0x1389><ip_addr = 0xC0 0xA8 0x01 0x6B 0x00(28 times)>
0x4F 0x4B 0x04 0x00 0x02 0x00 0x01 0x00 0x89 0x13 0x00 0x00 0xC0 0xA8 0x01 0x6B 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x0D 0x0A
Example 5
Open UDP socket over IPv4:
Command
at+rsi_udp=192.168.1.104,5001,5001,0,0,0,0,0,0
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x75 0x64 0x70 0x3D 0x31 0x39 0x32 0x2E 0x31 0x36 0x38 0x2E 0x31 0x2E 0x31 0x30 0x34 0x2C 0x35 0x30 0x30 0x31 0x2C 0x35 0x30 0x30 0x31 0x2C 0x30 0x2C 0x30 0x2C 0x30 0x2C 0x30 0x2C 0x30 0x2C 0x30 0x0D 0x0A
Response
OK <ip_version=0x04 0x00><socket_type=0x0001><socket_descriptor =0x0001><local_port=0x1389><ip_addr= 0xC0 0xA8 0x01 0x66 0x00(28 times) >
0x4F 0x4B 0x04 0x00 0x01 0x00 0x01 0x00 0x89 0x13 0x89 0x13 0xC0 0xA8 0x01 0x66 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xC0 0xA8 0x01 0x68 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x0D 0x0A
Example 6
Open LUDP socket over IPv4
Command
at+rsi_ludp=5001
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x6C 0x75 0x64 0x70 0x3D 0x35 0x30 0x30 0x31 0x0D 0x0A
Response
OK <ip_version =0x04 0x00><socket_type=0x0004><socket_descriptor=0x0001><local_port=0x4d2><ip_addr= 0xC0 0xA8 0x28 0x12 0x00(28 times)>
0x4F 0x4B 0x04 0x00 0x04 0x00 0x01 0x00 0x89 0x13 0x00 0x00 0xC0 0xA8 0x01 0x6B 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x0D 0x0A
[ Go to top ]
RSI_LTCP_CONNECT :: TCP Socket Connection Notification
Description
If a server TCP socket is opened in the module, the socket remains in listening state until the time the remote terminal opens and binds a corresponding client TCP socket. Once the socket binding is done, the module sends an asynchronous notification message to the Host to indicate that its server socket is now connected to a client socket.
Notification Format
Result Code | Description |
---|---|
AT+RSI_LTCP_CONNECT=<ip_version><socket_id>,<from_port_num>,<ip_address><mss><window_size><src_port_num>
|
Asynchronous message from modue to host on TCP connection establishment . |
where ...
ip_version (2 bytes)
-
IP version, use
4
.
socket_id(2 bytes)
- Socket descriptor of the server TCP socket.
from_port_num(2 bytes)
- Port number of the remote socket
ip_address (16 bytes)
- Remote IPv4 address. Only first four bytes of ipv4_address are filled, rest 12 bytes are zero.
mss (2 bytes)
- Maximum segment size of remote peer.
window_size (4 bytes)
- Window size of the remote peer.
src_port_num (2 bytes)
- Source Port Number to which client is connected.
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
[ Go to top ]
rsi_ctcp :: Query TCP Server Socket Status
Description
This command is issued for knowing the TCP socket connection status when the module acts as a TCP server.
Command Format
at+rsi_ctcp=<socket_descriptor>
Parameters
socket_descriptor (2 bytes)
- Socket descriptor of the listening socket.
Response
Result Code | Description |
---|---|
OK <socket_descriptor><ip_version><ip_address><dest_port> | Successful Execution of Command. |
ERROR
|
Failure |
where ...
socket_descriptor (2 bytes)
- Socket handler for a listening TCP socket in the module.
ip_version (2 bytes)
-
IP version, use
4
.
dest_port (2 bytes)
- Port number of the remote peer client whose socket is connected
Possible error codes are
0x0021, 0x0025, 0x002C, 0xFF86, 0xFFFA, 0xFF82
.
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
Example
Command
at+rsi_ctcp=7
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x63 0x74 0x63 0x70 0x3D 0x37 0x0D 0x0A
Response
OK <socket_descriptor=7><ip_version><ipv4_address =192.168.40.10><dest_port=8001>
0x4F 0x4B 0x07 0x00 0x04 0xC0 0xA8 0x28 0x0A 0x41 0x1F 0x0D 0x0A
[ Go to top ]
rsi_cls :: Close Socket
Description
This command closes a TCP/LTCP/UDP/SSL/Web socket in the module.
Command Format
at+rsi_cls=<socket_descriptor>,<port_number>
Parameters
socket_descriptor (2 bytes)
- Socket descriptor of the socket to be closed.
port_number (2 bytes)
- This field is valid only for LTCP socket.
- When this field is mentioned module closes all LTCP connections which are opened with provided port number.
Note!
- This field will be ignored in case of closing UDP/TCP client sockets.
- To use port based socket close to close all LTCP sockets, user has to set socket_handle as zero.
- For web socket: If close command is given socket will be closed without waiting for server to initiate web socket close.
-
In order get graceful closure, host has to issue data send command with an opcode of 0x8 and fin bit set and with an dummy data. This dummy data will be ignored by server side web socket. For example:
at+rsi_snd=1,0,0,136
. - In this case module sends web socket close frame to server. On receiving this frame, the server initiates a web socket close. After successful socket closes exchanges, module gives remote terminate indication to host.
Response
Result Code | Description |
---|---|
OK <socket_dsc><bytes_sent > | Successful execution of command |
ERROR <Error code>
|
Failure |
where ...
socket_dsc (2 bytes)
- Socket descriptor of the socket closed.
bytes_sent (4 bytes)
- Number of bytes sent successfully on that socket.
Note!
In the case of TCP socket, when a remote peer closes the socket connection, the module sends the
AT+RSI_CLOSE<socket_handle><number of bytes sent>
message to the Host. This is an asynchronous message sent from module to host and not the response of a specific command. Socket_handle is sent in 2 bytes, number of bytes sent is 4 bytes in hex. The least significant byte is returned first.
AT+RSI_CLOSE
is returned in uppercase and ASCII format
Possible error codes are
0x0021, 0x0025, 0x002C, 0xFF86, 0xBB35, 0xBB27, 0xBB42
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
Example
To close the socket with handle 1, the command is
Command
at+rsi_cls=1
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x63 0x6C 0x73 0x3D 0x31 0x0D 0x0A
Response
OK <socket_handle><number of bytes sent>
0x4F 0x4B 0x01 0x00 0x01 0x02 0x03 0x04 0x0D 0x0A
[ Go to top ]
rsi_snd :: Send Data
Description
This command is used to send data from the host to the module, which is transmitted.
Note! The following table lists the maximum individual chunk of data that can be sent over each supported protocol.
Protocol | Maximum data chunk (bytes) |
---|---|
TCP/LTCP socket | 1460 |
LUDP socket | 1472 |
Web socket | 1450 |
TCP-SSL/LTCP-SSL | 1370 |
Web socket over SSL | 1362 |
Command Format
at+rsi_snd=<socket_descriptor>,<send_buf_len>,<dest_ip_addr>,<dest_port>,<send_data_buf>
Parameters
socket_descriptor (2 byte)
- Socket handle of the socket over which data is to be sent.
send_buf_len (4 bytes)
- Length of the data that is getting transmitted. Wrong parameter may cause module to hang in some cases. In case of Web socket correct length is mandatory.
dest_ip_addr (4 bytes)
- Destination IP Address. Should be '0' in case of data transmitting on a TCP/LTCP/SSL socket.
dest_port (2 bytes)
- Destination Port. Should be '0' in case of data transmitting on a TCP/LTCP/SSL socket.
- In case of Web sockets, this field represents web socket information.
-
In web socket information the seventh bit indicates the FIN packet and
bit[3:0]
indicates the opcode (type of the packet to be included in web socket header). - OPCODE should be as follows, see The Websocket Protocol - RFC 6455 .
Mode | Functionality |
---|---|
0
|
Continuation frame |
1
|
Text frame |
2
|
Binary frame |
3-7
|
Reserved for further non-control frames |
8
|
Connection close frame |
9
|
Ping frame |
10
|
Pong frame |
11-15
|
Reserved for further control frames |
FIN Bit |
0
: More web socket frames to be followed.
1
: Final frame web socket message.
|
send_data_buf (1400 bytes)
- Actual data to be sent to the specified socket.
Response
Result Code | Description |
---|---|
OK <length>
(or)
|
2 bytes length (2 bytes hex), length of data sent. |
OK <socket id><length>
|
1 byte socket id, 2 bytes length (2 bytes hex), length of data sent. |
ERROR <Error code>
|
Failure. On a failure while sending the data on the TCP socket, if the error code indicates "TCP connection closed", then the module closes the socket. Possible error codes are
0x0030, 0xFFFE, 0xFF7E, 0xFFF8, 0x003F, 0xFFF7.
|
Note!
-
When enabled the socket bit map(2)(open socket), the send response gives 3bytes. User needs to consider the following for
snd
command ifTCP_ACK(bit[2]
is enabled. User will get an immediateOK <socket id ><length>
response forsnd
command. This indicates thesnd
command transaction happened successfully at the host interface level. This doesn’t mean that the packet is successfully transmitted to the remote peer. Module responds withOK <socket id ><length>
and takes the nextsnd
command till it has buffers to buffer those packets. - In case of SSL socket the response of send command gives length of data (Includes SSL data) on the TCP socket.
-
The parameter
send_data_buf
contains the actual data not the ASCII representations of the data. User need to consider following for "snd" command in case of UART mode. User will get an immediateOK <length>
response forsnd
command. This indicates thesnd
command transaction happened successfully at the host interface level. This doesn't mean that the packet is successfully transmitted to the remote peer. Module responds withOK <length>
and takes the nextsnd
command till it has buffers to buffer those packets. User need to take care that the data_len value that is given insnd
command should be same as the number of bytes that are getting transmitted withsnd
command. -
In TCP/IP bypass mode, only
<send_data_buf>
parameter is valid and remaining parameters are dummy user can send dummy parameter as 0. After successfull joining in TCP/IP bypass mode, user can use this 'at command' to communicate further. For example,at+rsi_snd=0,0,0,0,<ARP broadcast>
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
Note! Byte Stuffing is handled as described in the following text.
The '' character sequence (0x0D, 0x0A in hex) is used to indicate the termination of an AT command. If the actual data to be sent from Host comprises of characters in sequence, the host should replace this set of characters with (0xDB) and (0xDC). If (0xDB) itself is part of the data then (0xDB 0xDD ) has to be sent. If (0xDB 0xDC) itself is part of the data then (0xDB 0xDD 0xDC) has to be sent. If either 0xDD or 0xDC is not sent after 0xDB, then an error (-9) is sent.
Example 1. If 0x41 0x42 0x43 0x0D 0x0A is the actual data stream that needs to be sent then the command is
at+rsi_snd <hn> <sz=5> <Dip> <dest_port> <0x41> <0x42> <0x43> <0xDB> <0xDC> <0x0D> <0x0A>
Example 2. If 0x41 0x42 0x43 0x0D 0x0A 0x31 0x32 is the actual data stream that needs to be sent then the command is
at+rsi_snd <hn> <sz=7> <Dip> <dest_port> <0x41> <0x42> <0x43> <0xDB> <0xDC> <0x31> <0x32> <0x0D> <0x0A>
Example 3. If 0x41 0x42 0x43 0xDB 0x31 0x32 is the actual data stream that needs to be sent then the command is
at+rsi_snd <hn> <sz=7> <Dip> <dest_port> <0x41> <0x42> <0x43> <0xDB> <0xDD> <0x31> <0x32> <0x0D> <0x0A>
Example 4. If 0x41 0x42 0x43 0xDB 0xDC 0x31 0x32 is the actual data that needs to be transmitted, then the command is
at+rsi_snd <hn> <sz=8> <Dip> <dest_port> <0x41> <0x42> <0x43> <0xDB><0xDD><0xDC> <0x31><0x32> <0x0D> <0x0A>
Example 5. If 0x41 0x42 0x43 0x0D 0x0A 0xDB 0x31 0x32 is the actual data that needs to be transmitted, then the command is
at+rsi_snd <hn> <sz=9> <Dip> <dest_port> <0x41> <0x42> <0x43> <0xDB><0xDC> <0xDB> <0xDD> <0x31> <0x32> <0x0D> <0x0A>
Example 6. If 0x41 0x42 0x43 0x0D 0x0A 0xDB 0xDC 0x31 0x32 is the actual data that needs to be transmitted, then the command is
at+rsi_snd <hn> <sz=10> <Dip> <dest_port> <0x41> <0x42> <0x43> <0xDB><0xDC> <0xDB> <0xDD> <0xDC> <0x31> <0x32> <0x0D> <0x0A>
at+rsi_snd
is the only command that requires byte stuffing to be done by the Host before sending to the module. There are NO other commands (from Host to module) that require byte stuffing. There are NO responses (from module to Host) that are byte stuffed by module before giving to Host.
Example
Data Stuffing Command Format
To send a data stream 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A over a TCP socket.
at+rsi_snd=1,10,0,0, 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x61 0x74 0x2B 0x72 0x73 0x690x5F0x730x6E0x64 0x3D 0x31 0x2C 0x31 0x30 0x2C 0x30 0x2C 0x30 0x2C 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0D 0x0A
To send a data stream 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A over a UDP socket to a destination IP 192.168.1.20 and destination port 8001.
at+rsi_snd=1,10,192.168.1.20,8001, 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x73 0x6E 0x64 0x3D 0x31 0x2C 0x31 0x30 0x2C 0x310x39 0x32 0x2E 0x31 0x36 0x38 0x2E 0x31 0x2E 0x32 0x30 0x2C 0x38 0x30 0x30 0x31 0x2C 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0D 0x0A
To send a stream "abcdefghij" over a Multicast socket.
at+rsi_snd=1,10,239.0.0.0,1900,abcdefghij
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x73 0x6E 0x64 0x3D 0x31 0x2C 0x31 0x30 0x2C 0x32 0x33 0x39 0x2E 0x30 0x2E 0x30 0x2E 0x30 0x2C 0x31 0x39 0x30 0x30 0x2C0x61 0x62 0x63 0x64 0x65 0x66 0x67 0x68 0x69 0x6A 0x0D 0x0A
Response for 250 bytes.
OK 250
0x4F 0x4B 0xFA 0x00 0x0D 0x0A
When TCP_ACK(bit[2]) is enabled in the socket_bitmap while opening the socket, the send response gives 3 Bytes of which 1 Byte is for socket id and 2 Bytes is for length.
at+rsi_snd=1,10,0,0,0123456789
Response.
OK 0x02\0x00
0x4F 0x4B 0x02 0x0A 0x00 0x0D 0x0A
To send data over SSL.
at+rsi_snd=1,10,0,0,hellohello
Response.
OK
0x4F 0x4B 0x01 0x45 0x00 0x0D 0x0A
Possible error codes are
-2, 63
.
[ Go to top ]
rsi_read :: Read Data
This section explains how to read socket data from the module to host.
Note! To use this feature, BIT(0) should be set in socket_bitmap (TCP/UDP open socket parameter) while opening a socket.
Description
This command is used to request number of bytes received on given socket. Module will give requested number of bytes received on particular socket (synchronous) only if this command is given from host. If requested numbers of bytes are greater than bytes available on given socket module will return only available number of bytes to host. If no data available on given socket module will wait till data received on given socket to serve this command.
Command Format
at+rsi_read=<socket_descriptor>,<no of bytes>,<timeout in ms>
Parameters
socket_descriptor (1 byte)
- Socket handle of the socket over which data is to be received.
no of bytes (4 bytes)
- Length of the data that has to be read from the module.
timeout in milliseconds (2 bytes)
- Read timeout in milliseconds to configure read data time out.
Response
AT+RSI_READ<ip_version><recv_socket><recv_buf_len><ip_address><src_port><recv_data_buf>
where ...
ip_version (2 bytes, hex)
-
IP version of the data received.
-
4
– for IPv4
-
recv_socket (2 bytes, hex)
- Socket handle of the socket over which the data is received. The least significant byte is returned first. If Web socket has been enabled, upper byte holds the web socket info.Seventh bit indicates the FIN packet and bit 3:0 gives the opcode information from web socket header.
recv_buf_len (2 bytes, hex)
- Number of bytes received.The least significant byte is sent first. For example, 900 bytes (0x0384) would be sent as <0x84> <0x03>
ap_address (16 bytes)
- Source IP address. i.e IP address from which data is received.This field is not present in the message if the data is received over a TCP socket. Only first 4 bytes are filled rest 12 bytes are zero for IPv4 address.
src_port (2 bytes, hex)
- Source port. i.e port number from which data is received. This field is not present in the message if the data is received over a TCP socket.
recv_data_buf
- Actual received data stream. A maximum of 1472 bytes can be received in case of UDP and 1460 bytes in case of TCP, in this field.When the module sends data to the Host, byte stuffing is NOT done by the module. The size parameter should be used to know how many bytes of valid data is expected. |
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
Example
Command
at+rsi_read=1,4,100
Response
If
abcd
is sent from remote terminal to module, on an UDP socket with handle 1, from source IPv4 address
192.168.1.1
to destination IPv4 address
192.168.1.2
(module address) and source port
8001
, the module sends the following response to the host.
AT+RSI_READ 4 1 4 192 168 1 1 8001 abcd
0x41 0x54 0x2B 0x52 0x53 0x49 0x5F 0x52 0x45 0x41 0x44 0x04 0x00 0x01 0x00 0x04 0x00 0xC0 0xA8 0x01 0x01 0x41 0x1F 0x61 0x62 0x63 0x64 0x0D 0x0A
If
abcd
is sent from remote terminal to module, on a TCP socket with handle 1, the module sends the following response to the host.
AT+RSI_READ 4 1 4 abcd
0x41 0x54 0x2B 0x52 0x53 0x49 0x5F 0x52 0x45 0x41 0x44 0x04 0x00 0x01 0x00 0x04 0x00 0x61 0x62 0x63 0x64 0x0D 0x0A
Note! The data delivered to the Host on receiving data on a TCP socket does not include the source IP address and source port.
[ Go to top ]
RSI_READ :: Socket Receive Data Notification
This section explains how the module sends received data to Host.
Note!
The module supports a maximum TLS record size of 4K. If the TLS record size is greater than 4K, the module will close the socket.
To support more than 4K record size, user has to enabled 16K record size. ie., enable
BIT [6]
in
ext_tcp_ip_feature_bit_map
.
Description
The module delivers the data obtained on a socket to the Host with this message. This is an asynchronous response. It is sent from the module to the host when the module receives data from a remote terminal. SSL data is also received in a similar fashion.
Notification Format
AT+RSI_READ<ip_version><recv_socket><recv_buf_len><ip_address><src_port><recv_data_buf>
where ...
ip_version (2 bytes, hex)
-
IP version of the data received.
-
4
– for IPv4
-
recv_socket (2 bytes, hex)
- socket handle of the socket over which the data is received. The least significant byte is returned first. If Web socket has been enabled, upper byte holds the web socket info.Seventh bit indicates the FIN packet and bit 3:0 gives the opcode information from web socket header.
recv_buf_len (2 bytes, hex)
- Number of bytes received.The least significant byte is sent first. For example, 900 bytes (0x0384) would be sent as <0x84> <0x03>
ip_address (16 bytes)
- Source IP address. i.e IP address from which data is received.This field is not present in the message if the data is received over a TCP socket. Only first 4 bytes are filled rest 12 bytes are zero for IPv4 address.
src_port (2 bytes, hex)
- Source port. i.e port number from which data is received. This field is not present in the message if the data is received over a TCP socket.
recv_data_buf
- Actual received data stream. A maximum of 1472 bytes can be received in case of UDP and 1460 bytes in case of TCP, in this field.When the module sends data to the Host, byte stuffing is NOT done by the module. The size parameter should be used to know how many bytes of valid data is expected. |
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
Example
Command
at+rsi_read=1,4,100
Response for IPv4
If 'abcd' is sent from remote terminal to module, on a UDP socket with handle 1, from source IPv4 address
192.168.1.1
to destination IPv4 address
192.168.1.2
(module address) and source port
8001
, the module sends the following response to the host.
AT+RSI_READ 4 1 4 192 168 1 1 8001 abcd
0x41 0x54 0x2B 0x52 0x53 0x49 0x5F 0x52 0x45 0x41 0x44 0x04 0x00 0x01 0x00 0x04 0x00 0xC0 0xA8 0x01 0x01 0x41 0x1F 0x61 0x62 0x63 0x64 0x0D 0x0A
If 'abcd' is sent from remote terminal to module, on a TCP socket with handle 1, the module sends the following response to the host.
AT+RSI_READ 4 1 4 abcd
0x41 0x54 0x2B 0x52 0x53 0x49 0x5F 0x52 0x45 0x41 0x44 0x04 0x00 0x01 0x00 0x04 0x00 0x61 0x62 0x63 0x64 0x0D 0x0A
Note! The data delivered to the Host on receiving data on a TCP socket does not include the source IP address and source port.
[ Go to top ]
rsi_fwupok :: Wireless Firmware Update
Description
This command is sent as a response to a wireless firmware udpate request.
When user clicks on update button on the wireless update page, module sends an asynchronous message,
AT+RSI_FWUPREQ
to the host. Upon receiving this message, the host should send wireless firmware update request message if update is required. Host can ignore if update is not required.
For an example command sequence showing how to use this command, see Wireless Firmware Update Example .
Command Format
at+rsi_fwupok
Parameters
N/A
Response
There is no response for this command.
After successful update, firmware gives a success indication with an asynchronous message as
AT+RSI_FWUPSUCCESS
. Also "Firmware update successful" pop-up window appears on the browser.
On firmware update failure or host not responding for firmware update request, module gives an error message on pop-up window: "module not responding" on the browser.
Possible error codes are
0x0021, 0x0025, 0x002C, 0x0034
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
[ Go to top ]
rsi_bgscan :: Background Scan
Description
This command is used to scan for Wi-Fi Access Points when the module is in a connected state. The scan results are sorted in decreasing order of signal strength (RSSI value). The scanned access point with highest signal strength will be the first in the list.
Upon issuing this command, RS9116 WiSeConnect validates the channel bit map issued through the scan command, to ensure that background scan is performed only on those channels.
For examples showing how to perform background scans, see Background Scan Example and Enable Roaming in Open mode as a client .
Command Format
at+rsi_bgscan=<bgscan_enable>,<enable_instant_bgscan>,<bgscan_threshold>,<rssi_tolerance_threshold>,<bgscan_periodicity>,<active_scan_duration>,<passive_scan_duration>,<multi_probe>
Parameters
bgscan_enable (2 bytes)
-
To enable/disable bgscan
-
0
= Disable -
1
= Enable
-
enable_instant_bgscan (2 bytes)
-
If this is set to
enable_instant_bgscan = 1
then the module sends probe requests immediately on air and bgscan results will be given to host.
Note!
-
If the host requires background scan results, then
instant_bg_enable
should be set to1
.
bgscan_threshold (2 bytes)
-
This is the threshold in
dBm
to trigger the bgscan. Afterbgscan_periodicity
, if connected AP RSSI falls below this value then bgscan will be triggered.
rssi_tolerance_threshold (2 bytes)
- This is the difference of the last RSSI of connected AP and current RSSI of connected AP. Here last RSSI is the RSSI calculated at the last beacon received and current RSSI is the RSSI calculated at current beacon received.
-
If this difference is more than
rssi_tolerance_threshold
then bgscan will be triggered irrespective of periodicity.
bgscan_periodicity (2 bytes)
-
This is time period in seconds to trigger bgscan if RSSI of connected AP is above the given
bgscan_threshold
(assuming RSSI is a positive value) .
active_scan_duration (2 bytes)
- This is active scan duration (in milliseconds) per channel.
passive_scan_duration (2 bytes)
- This is passive scan duration (in milliseconds) per DFS channel in the 5 GHz band.
multi_probe (1 byte)
-
If set to
1
the module sends two probe requests, one with specific SSID provided during join command and other with NULL SSID (to scan all access points). If not set, one probe request with connected SSID is sent.
Note!
-
Channel to scan in background scan is taken from Channel bit maps of scan command , e.g.
channel_bit_map_2_4
andchannel_bit_map_5
. -
active_scan_duration
should be less than DTIM period to avoid multicast packet loss. -
bgscan
supports a maximum of 24 channels.
Response
If
instant_bg_enable
is disabled:
OK
If
instant_bg_enable
is enabled:
Result Code | Description |
---|---|
OK <scan_count><padding><rf_channel><security_mode><rssi_val><u_network_type><ssid><bssid><reserved>
up to the number of scanned nodes
|
Success. |
ERROR <Error code>
|
Failure |
where ...
- scan_count (4 bytes) - Number of Access Points scanned
- padding (4 bytes) - Reserved bytes
- rf_channel (1 byte) - Channel Number of the scanned Access Point
-
security_mode (1 byte)
-
0
- Open -
1
– WPA -
2
– WPA2 -
3
- WEP -
4
– WPA Enterprise -
5
– WPA2 Enterprise -
7
– WPA3
-
-
rssi_val (1 byte) - RSSI of the scanned Access Point
-
u_network_type (1 byte)
- Network type of the scanned Access Point,
1
= Infrastructure mode. - ssid (34 bytes) - SSID of the scanned Access Point
- bssid (6 bytes) - MAC address of the scanned Access Point
- reserved (2 byte) - Reserved bytes.
Possible error codes are
0x0021, 0x0025, 0x002C, 0x004A
Availability
This command is available when the module is configured in Operating Mode 0, 2.
Example 1
When instant bgscan is enabled, host will get OK response followed by the response of background scan. Module will do background scanning in the configured channel given in the channel bit map or scan all channels if bitmap is not provided (all non DFS channels in 5GHz) and send the scanned result to host.
Command
at+rsi_bgscan=1,1,63,4,2,50,50,1
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x62 0x67 0x73 0x63 0x61 0x6E 0x3D 0x31 0x2C 0x31 0x2C 0x36 0x33 0x2C 0x34 0x2C 0x32 0x2C 0x35 0x30 0x2C 0x35 0x30 0x2C 0x31 0x0D 0x0A
Response
If two networks are found with the SSID
ap_ssid_net1
and
ap_ssid_net2
", in channels 6 and 11, with measured RSSI of
-20 dBm
and
-14 dBm
respectively, the return value is:
OK <scan_count =2><padding><rf_channel =0x0B> <security_mode =0x02> <rssi_val =14> <u_network_type =0x01> <ssid =ap_ssid_net2> <bssid =0x00 0x23 0xA7 0x1F 0x1F 0x15> <reserved><rf_channel =0x06> <security_mode =0x00> <rssi_val =20> <u_network_type =0x01> <ssid =ap_ssid_net1><bssid =0x00 0x23 0xA7 0x1F 0x1F 0x14> <reserved>
0x4F 0x4B 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x0B 0x02 0x0D 0x01 0x52 0x65 0x64 0x70 0x69 0x6E 0x65 0x5F 0x6E 0x74 0x32 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x23 0xA7 0x1F 0x1F 0x15 0x00 0x00 0x06 0x00 0x14 0x01 0x52 0x65 0x64 0x70 0x69 0x6E 0x65 0x5F 0x6E 0x74 0x31 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x23 0xA7 0x1F 0x1F 0x14 0x00 0x00 0x0D 0x0A
Example 2
When instant bgscan is disabled and when connected, AP RSSI falls below -63dBm (e.g. -65, -68 etc) then bgscan will be triggered at a later time, but the host will only receive the OK message immediately as shown below.
Command
at+rsi_bgscan=1,0,63,4,2,50,50,1
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x62 0x67 0x73 0x63 0x61 0x6E 0x3D 0x31 0x2C 0x30 0x2C 0x36
0x33 0x2C 0x34 0x2C 0x32 0x2C 0x35 0x30 0x2C 0x35 0x30 0x2C 0x31 0x0D 0x0A
Response
OK
0x4F 0x4B 0x0D 0x0A
[ Go to top ]
rsi_roam_params :: Roam Parameters
Description
This command is used to enable roaming and to set roaming parameters. This command can be issued any time after init command but this command will come into action only after bgscan, see the Roaming Example and Enable Roaming in Open mode as a Client Example .
Command Format
at+rsi_roam_params= <roam_enable>,<roam_threshold>,<roam_hysteresis>
Parameters
roam_enable (4 bytes)
-
To Enable/Disable roaming.
-
0
= Disable -
1
= Enable
-
roam_threshold (4 bytes)
- If connected AP RSSI falls below this value then module will search for a new AP from background scanned list.
roam_hysteresis (4 bytes)
- If module found new AP with same configuration (SSID, Security etc) and if the following relationship is true, then it will try to roam to the new selected AP.
(connected_AP_RSSI – selected_AP_RSSI) > roam_hysteresis
Response
Result Code | Description |
---|---|
OK
|
Successful execution of command. |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0021, 0x0025, 0x002C, 0x0026
.
Availability
This command is available when the module is configured in Operating Mode 0,2.
Example
Command
at+rsi_roam_params=1,67,4
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x72 0x6F 0x61 0x6D 0x5F 0x70 0x61 0x72 0x61 0x6D 0x73 0x3D 0x31 0x2C 0x36 0x37 0x2C 0x34 0x0D 0x0A
Response
OK
0x4F 0x4B 0x0D 0x0A
Suggested roaming and background scan configuration for Home environment :
Parameter | Suggested values |
---|---|
background scan | Enabled |
background scan periodicity | 2 seconds |
background scan threshold | -63 dbm |
background scan tolerance | 4 |
Active scan duration | 50ms |
Passive scan duration | 50ms |
Multiprobe | 0 |
Instant background scan | 1 |
Scan channels |
\
|
Roam Threshold | -67dbm |
Roam Hysteresis | 4 |
[ Go to top ]
rsi_ht_caps :: High Throughput Capabilities
Description
This command is used to enable high throughput capabilities in the module when operating in AP mode. This command must be issued after the AP configuration parameters command.
Command Format
at+rsi_ht_caps=<mode_11n_enable>,<ht_caps_bitmap>
Parameters
mode_11n_enable (2 bytes)
-
Enable/Disable 11n capabilities in AP Mode.
-
0
- Disable -
1
- Enable
-
ht_caps_bit_map (2 bytes)
- Bit map corresponding to high throughput capabilities.
ht_caps_bit_map | Functionality |
Set to
0
|
Set to
1
|
Description |
---|---|---|---|---|
ht_caps_bit_map[15:9]
|
-
|
Not Supported, set to
0
|
||
ht_caps_bit_map[8]
|
Rx STBC support | Disable | Enable | STA capability of receiving PPDU using STBC (Space Time Block Coding) |
ht_caps_bit_map[7:6]
|
-
|
Not Supported, set to
0
|
||
ht_caps_bit_map[5]
|
Short GI for 20Mhz support | Disable | Enable | STA capability to receive frames with a short GI in 20MHz |
ht_caps_bit_map[4]
|
Green field support | Disable | Enable | When set to 1 STA is capable of receiving HT Greenfield PPDU. |
ht_caps_bit_map[3:2]
|
-
|
Not Supported, set to
0
|
||
ht_caps_bit_map[1]
|
Channel-width Support | Disable | Enable |
0 for only 20MHz, 1 should not be enabled as 40 MHz bandwidth is not supported, set to
0
.
|
ht_caps_bit_map[0]
|
-
|
Not Supported, set to
0
|
Response
Result Code | Description |
---|---|
OK
|
Successful execution of command. |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0021, 0x0025, 0x002C, 0x004D
.
Availability
This command is available when the module is configured in Operating Mode 6.
Example
Command
at+rsi_ht_caps=1,2
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x68 0x74 0x5F 0x63 0x61 0x70 0x73 0x3D 0x31 0x2C 0x32 0x0D 0x0A
Response
OK
0x4F 0x4B 0x0D 0x0A
[ Go to top ]
rsi_dnsserver :: DNS Server
Description
This command is used to provide the DNS server's IP address to the module. This command should be issued before the "[DNS Resolution]"command and after the "Set IP Parameter" command.
Command Format
Format for IPv4
at+rsi_dnsserver=<dns_mode>,<primary_dns_ip>,<secondary_dns_ip>
Parameters
dns_mode (8 bytes)
-
0
- Value of0
should be used if the user wants to specify a primary and secondary DNS server address. -
1
- The module can obtain DNS Server IP address during the command "Set IP Params" if the DHCP server in the Access Point supports it. In such a case, value of '1' should be used if the module wants to read the DNS Server IP obtained by the module.
primary_dns_ip (16 bytes)
- This is the IP address of the Primary DNS server to which the DNS Resolution query will be sent. Should be set to '0' if dns_mode = 1. For IPv4, only the first 4 bytes are used, the remaining 12 bytes are zero.
secondary_dns_ip (16 bytes)
- This is the IP address of the Secondary DNS server to which the DNS Resolution query will be sent. If dns_mode = 1 or if the user does not want to specify a secondary DNS Server IP address, this parameter should be set to '0'. For IPv4, only the first 4 bytes are used, the remaining 12 bytes are zero.
Response
Result Code | Description |
---|---|
OK <primary_dns_ip><secondary_dns_ip>
|
Successful execution of command. |
ERROR <Error code>
|
Failure. |
Response
For IPv4, only the first 4 bytes of the IP address are filled, rest 12 bytes are zero.
Possible error codes are
0x0021, 0x0025, 0x002C, 0xFFF8, 0xFF74, 0xBBA8, 0xBBB2, 0xBBAF, 0xBB17, 0xBBB3
Availability
This command is available in Operating Modes 0, 2, 6.
Example 1 for IPv4
Command
at+rsi_dnsserver=1,0,0
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x64 0x6E 0x73 0x73 0x65 0x72 0x76 0x65 0x72 0x3D 0x31 0x2C 0x30 0x2C 0x30 0x0D 0x0A
Response
OK <primary=1.2.3.4><secondary=5.6.7.8>
0x4F 0x4B 0x01 0x02 0x03 0x04 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x05 0x06 0x07 0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x0D 0x0A
Example 2 for IPv4
Command
at+rsi_dnsserver=0,8.8.8.8,0
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x64 0x6E 0x73 0x73 0x65 0x72 0x76 0x65 0x72 0x3D 0x30 0x2C 0x38 0x2E 0x38 0x2E 0x38 0x2E 0x38 0x2C 0x30 0x0D 0x0A
Response
OK <primary=8.8.8.8><secondary=0>
0x4F 0x4B 0x08 0x08 0x08 0x08 0x00 0x00 0x00 0x00 0x0D 0x0A
[ Go to top ]
rsi_dnsget :: DNS Resolution
Description
This command is to obtain the IP address of the specified domain name.
Command Format
Format for IPv4
at+rsi_dnsget=<domain_name>,<dns_server_number>
Parameters
domain_name (90 bytes)
- This is the target domain name. A maximum of 90 characters is allowed.
dns_server_number (2 bytes)
- Reserved.
Response
For IPv4
Result Code | Description |
---|---|
OK <ip_version><ip_count><ip_addr>
... up to 10 times
|
Successful execution of command |
ERROR <Error code>
|
Failure. |
where ...
- ip_version (2 bytes) - IP version used, either 4 or 6.
- ip_count (2 bytes) - Number of IP addresses individual addresses resolved, up to a maximum of 10. Only first 4 bytes are filled in IPv4 address, rest 12 bytes are zero.
Possible error codes are
0x0015, 0x0021, 0x0025, 0x002C, 0xFFBB, 0xBBA1, 0xBBAA, 0xBBA3, 0xBBA4, 0xBBAC
Availability
This command is available in Operating Modes 0, 2 and 6.
Example for IPv4
Command
at+rsi_dnsget=www.silabs.com,1
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x64 0x6E 0x73 0x67 0x 65 0x74 0x3D 0x77 0x77 0x77 0x2E 0x72 0x65 0x64 0x70 0x69 0x6E 0x65 0x73 0x69 0x67 0x6E 0x61 0x6C 0x73 0x2E 0x63 0x6F 0x6D 0x2C 0x31 0x0D 0x0A
Response
OK< ip_version >< uIPCount >< ip_addr1= 201.168.1.100>
0x4F 0x4B 0x04 0x00 0x01 0x00 0xC9 0xA8 0x01 0x64 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x0D 0x0A
[ Go to top ]
rsi_dnsupdate :: DNS Update
Description
The DNS update functionality enables DNS Client Host to register and to dynamically update their resource records with a DNS server whenever changes occur. If you use this functionality, you can reduce the requirement for manual administration of zone records, especially for clients that frequently move and use Dynamic Host Configuration Protocol (DHCP) to obtain an IP address.
DNS Update will need the Hostname, Domain and the DNS Server specification for dynamic update of client Records
Command Format
at+rsi_dnsupdate=<ipversion>,<a_zone_name>,<a_host_name>,<dns_server_number>,<ttl>
Parameters
ip_version (1 byte)
-
IP version used
-
4
- IPv4
-
a_zone_name(31 bytes)
- This is the zone name of the Domain. A maximum of 31 characters is allowed.
a_host_name(31 bytes)
- This is the host name of the Domain. A maximum of 31 characters is allowed.
dns_server_number (2 bytes)
- DNS Server number.
ttl (2 bytes)
- Time To live. Time in seconds for which hostname should be active.
Response
Result Code | Description |
---|---|
OK
|
Successful execution of command |
ERROR <Error code>
.
|
Failure |
Possible error codes are
0x0015, 0x0021, 0x0025, 0x002C, 0xFFBB, 0xBBA1, 0xBBAA, 0xBBA3, 0xBBA4, 0xBBAC
Availability
This command is available in Operating Modes 0, 2 and 6.
Example
Command
at+rsi_dnsupdate=4,RPS,silabs,1,53
Response
OK
0x4F 0x4B 0x0D 0x0A
[ Go to top ]
rsi_httpget :: HTTP Get
Description
This command is used to transmit HTTP GET request from the module to a remote HTTP server. A subsequent HTTP GET request can be issued only after receiving the response of the previously issued HTTP GET request. Module acts as a HTTP client when this command is issued. This command should only be used after IP configuration is complete.
Command Format
Format for IPv4
at+rsi_httpget=<https_enable>,<http_port>,<user_name>,<password>,<host_name>,<ip_address>,<url>,<extended_header>
Parameters
https_enable
- Set BIT[0] to enable HTTPS.
- Set BIT[1] to enable NULL delimiter for HTTP buffer instead of comma.
- Set BIT[2] to use SSL TLS 1.0 version if HTTPS is enabled.
- Set BIT[3] to use SSL TLS 1.2 version if HTTPS is enabled.
- Set BIT[4] to use SSL TLS 1.1 version if HTTPS is enabled.
-
Set BIT[5] to enable
HTTP_POST
data feature - Set BIT[6] to enable HTTP version 1.1.
- Set BIT[7] to enable user defined http_content type in Flags.
Note! If SSL/TLS is enabled by default, it will use TLS 1.0 and TLS 1.2. BIT(2) and BIT(3) are valid only when HTTPS is enabled.
http_port
-
HTTP server port number, defaults to port
80
user_name
-
The username for HTTP/HTTPS server authentication. Default username is
admin
.
password
-
The password for HTTP/HTTPS server authentication. Default password is
admin
.
host_name
- Host name of the HTTP/HTTPS server.
ip_address
- IP address of HTTP/HTTPS server.
url
- Requested URL.
extended_header (1 byte)
-
The purpose of this is to append user configurable header fields to the default HTTP/HTTPS header. To write extended header, user must use 'Data stuffing' mentioned separately in this document as well mentioning here also in context of extended header. The extended header can have multiple header fields each ended by
\r\n
(0xD 0xA) but\r\n
is the delimiter for an AT command so use data stuffing and replace all (0xD 0xA) by 0xDB 0xDC besides delimiter(). See the example given below. -
The default http header contains the following:
- Content Type. Describes about the type of the file which user want to send like html, txt, gif, etc.
- Content Length. Tells about the length of the text which user is using.
- The abovementioned fields are created in the header by the firmware.
Note!
-
Maximum supported length for
user_name
,password
together is278
bytes.. -
Maximum supported length for Buffer is
(872-(length of User_name+length of Password))
bytes excluding delimiters. - If username, password, hostname and extended http headers are not required, user should send empty string separated by delimiter.
- If content of any field contains a comma then NULL delimiter should be used.
- Host needs to do byte stuffing in extended header field. Please refer the note about data stuffing.
Response
Module may give http response in multiple chunks for a single HTTP GET request.
Result Code | Description |
---|---|
AT+RSI_HTTPRSP=<more><status_code><offset><data_len><data>
|
After the module sends out the HTTP GET request to the remote server, it may take some time for the response to come back. The response from the remote server is sent out to the Host from the module in the following form:
AT+RSI_HTTPRSP=<more><status_code><offset><data_len><data>
. The string
AT+RSI_HTTPRSP
is in uppercase ASCII.
|
ERROR <Error_code>
|
Failure |
where ...
more (2 bytes)
-
This indicates whether more HTTP data for the HTTP GET request is pending or not.
-
0
– More data is pending. Further interrupts may be raised by the module till all the data is transferred to the Host. -
1
– End of HTTP data.
-
status_code (2 bytes)
-
Provided the HTTP status code as received in the response packet such as
200
,201
,404
etc. a status_code equal to0
indicates that there was no HTTP header in the received packet, probably a continuation of the frame body received in the previous chunk.
offset (4 bytes)
- Reserved.
data_len (4 bytes)
- data length in current chunk.
Data (maximum 1400 bytes)
- Actual http data.
Possible error codes for this command are
0x0015, 0x0021, 0x0025, 0x002C, 0xFF74, 0xBBF0
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
Example 1
-
https_enable
=0
-
http_port
=80
-
Username
=username
-
password
=password
-
host_name
=www.google.com
-
ip_address
=192.168.40.86
-
url
=/index.html
-
extended_header
=ContentType: html
ÛÜ
Command
at+rsi_httpget=0,80,username,password,hostname,192.168.40.86,/index.html,ContentType: htmlÛÜ
Example 2
Command
at+rsi_httpget=0,80,username,password,hostname,192.168.0.5,/index.html
61 74 2B 72 73 69 5F 68 74 74 70 67 65 74 3D 30 2C 38 30 2C 75 73 65 72 6E 61 6D 65 2C 70 61 73 73 77 6F 72 64 2C 68 6F 73 74 6E 61 6D 65 2C 31 39 32 2E 31 36 38 2E 30 2E 35 2C 2F 69 6E 64 65 78 2E 68 74 6D 6C 2C 0D 0A
Response
AT+RSI_HTTPRSP=<NUL><NUL>È<NUL><NUL><NUL><NUL><NUL>œ<SOH><NUL><NUL><html><head><6/22/2021 18:38:07.082RX] - style type=\"text/css\">body{font- family:Arial;background:#EFF4F3;margin:0;color:#32403f;}#wp{width:600px;margin:0 auto;} p{display:inline-block;font-weight:bold;text-align:right;margin:9px 30px 9px 0;}p,input{width:200px;} h1{text-align:center;font-size:3em;margin:0;padding:20px 0;color:#d6e4e1;border:1px solid #7F8D8C;text-shadow:1px 1px 0 #333;}input{height:24px;border:1px solid #ccc;border-radi<CR><LF> AT+RSI_HTTPRSP=<NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><STX><NUL><NUL>us:4px;padding:2px 5px;margin:0 6px 0 20px;}input:focus{border-color:#32403f;}form{padding-top: 20px;border-top:1px solid #2B3736;}.btn{width:100px;margin:15px 0 15px 250px;font-weight: 700;color:#fff;border:1px solid #000;}h1,.btn{background:#485c5a;background:linear- gradient(#485c5a,#32403f);}.btn:active{background:#32403f;}input[type=checkbox],input[type=radio]{width:16px;height:14px;}#msg{margin:0 0 10px 0;}</style></head><body><h1>Employee Details</ h1><form id=\"fm\" method=\"post\" action=\"#\" onsubmit<CR><LF> AT+RSI_HTTPRSP=<NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL>N<SOH><NUL><NUL>=\"return pt()\"><div id=\"wp\"></div><p>Employee_name:</p><input id=\"emp_name\" name=\"emp_name\"><p>Employee ID:</p><input id=\"emp_id\" name=\"emp_id\"><p>Designation:</ p><input id=\"designation\" name=\"designation\"><p>Company:</p><input id=\"company\" name=\"company\"><p>Location:</p><input id=\"location\" name=\"location\"><LF><CR>
41 54 2B 52 53 49 5F 48 54 54 50 52 53 50 3D 00 00 C8 00 00 00 00 00 9C 01 00 00 3C 68 74 6D 6C 3E
3C 68 65 61 64 3E 3C
6/22/2021 18:38:07.082RX] - 73 74 79 6C 65 20 74 79 70 65 3D 5C 22 74 65 78 74 2F 63 73 73 5C 22
3E 62 6F 64 79 7B 66 6F 6E 74 2D 66 61 6D 69 6C 79 3A 41 72 69 61 6C 3B 62 61 63 6B 67 72 6F 75 6E
64 3A 23 45 46 46 34 46 33 3B 6D 61 72 67 69 6E 3A 30 3B 63 6F 6C 6F 72 3A 23 33 32 34 30 33 66 3B
7D 23 77 70 7B 77 69 64 74 68 3A 36 30 30 70 78 3B 6D 61 72 67 69 6E 3A 30 20 61 75 74 6F 3B 7D 70
7B 64 69 73 70 6C 61 79 3A 69 6E 6C 69 6E 65 2D 62 6C 6F 63 6B 3B 66 6F 6E 74 2D 77 65 69 67 68 74
3A 62 6F 6C 64 3B 74 65 78 74 2D 61 6C 69 67 6E 3A 72 69 67 68 74 3B 6D 61 72 67 69 6E 3A 39 70 78
20 33 30 70 78 20 39 70 78 20 30 3B 7D 70 2C 69 6E 70 75 74 7B 77 69 64 74 68 3A 32 30 30 70 78 3B
7D 68 31 7B 74 65 78 74 2D 61 6C 69 67 6E 3A 63 65 6E 74 65 72 3B 66 6F 6E 74 2D 73 69 7A 65 3A 33
65 6D 3B 6D 61 72 67 69 6E 3A 30 3B 70 61 64 64 69 6E 67 3A 32 30 70 78 20 30 3B 63 6F 6C 6F 72 3A
23 64 36 65 34 65 31 3B 62 6F 72 64 65 72 3A 31 70 78 20 73 6F 6C 69 64 20 23 37 46 38 44 38 43 3B
74 65 78 74 2D 73 68 61 64 6F 77 3A 31 70 78 20 31 70 78 20 30 20 23 33 33 33 3B 7D 69 6E 70 75 74
7B 68 65 69 67 68 74 3A 32 34 70 78 3B 62 6F 72 64 65 72 3A 31 70 78 20 73 6F 6C 69 64 20 23 63 63
63 3B 62 6F 72 64 65 72 2D 72 61 64 69 0D 0A 41 54 2B 52 53 49 5F 48 54 54 50 52 53 50 3D 00 00 00
00 00 00 00 00 00 02 00 00 75 73 3A 34 70 78 3B 70 61 64 64 69 6E 67 3A 32 70 78 20 35 70 78 3B 6D
61 72 67 69 6E 3A 30 20 36 70 78 20 30 20 32 30 70 78 3B 7D 69 6E 70 75 74 3A 66 6F 63 75 73 7B 62
6F 72 64 65 72 2D 63 6F 6C 6F 72 3A 23 33 32 34 30 33 66 3B 7D 66 6F 72 6D 7B 70 61 64 64 69 6E 67
2D 74 6F 70 3A 32 30 70 78 3B 62 6F 72 64 65 72 2D 74 6F 70 3A 31 70 78 20 73 6F 6C 69 64 20 23 32
42 33 37 33 36 3B 7D 2E 62 74 6E 7B 77 69 64 74 68 3A 31 30 30 70 78 3B 6D 61 72 67 69 6E 3A 31 35
70 78 20 30 20 31 35 70 78 20 32 35 30 70 78 3B 66 6F 6E 74 2D 77 65 69 67 68 74 3A 37 30 30 3B 63
6F 6C 6F 72 3A 23 66 66 66 3B 62 6F 72 64 65 72 3A 31 70 78 20 73 6F 6C 69 64 20 23 30 30 30 3B 7D
68 31 2C 2E 62 74 6E 7B 62 61 63 6B 67 72 6F 75 6E 64 3A 23 34 38 35 63 35 61 3B 62 61 63 6B 67 72
6F 75 6E 64 3A 6C 69 6E 65 61 72 2D 67 72 61 64 69 65 6E 74 28 23 34 38 35 63 35 61 2C 23 33 32 34
30 33 66 29 3B 7D 2E 62 74 6E 3A 61 63 74 69 76 65 7B 62 61 63 6B 67 72 6F 75 6E 64 3A 23 33 32 34
30 33 66 3B 7D 69 6E 70 75 74 5B 74 79 70 65 3D 63 68 65 63 6B 62 6F 78 5D 2C 69 6E 70 75 74 5B 74
79 70 65 3D 72 61 64 69 6F 5D 7B 77 69 64 74 68 3A 31 36 70 78 3B 68 65 69 67 68 74 3A 31 34 70 78
3B 7D 23 6D 73 67 7B 6D 61 72 67 69 6E 3A 30 20 30 20 31 30 70 78 20 30 3B 7D 3C 2F 73 74 79 6C 65
3E 3C 2F 68 65 61 64 3E 3C 62 6F 64 79 3E 3C 68 31 3E 45 6D 70 6C 6F 79 65 65 20 44 65 74 61 69 6C
73 3C 2F 68 31 3E 3C 66 6F 72 6D 20 69 64 3D 5C 22 66 6D 5C 22 20 6D 65 74 68 6F 64 3D 5C 22 70 6F
73 74 5C 22 20 61 63 74 69 6F 6E 3D 5C 22 23 5C 22 20 6F 6E 73 75 62 6D 69 74 0D 0A 41 54 2B 52 53
49 5F 48 54 54 50 52 53 50 3D 00 00 00 00 00 00 00 00 4E 01 00 00 3D 5C 22 72 65 74 75 72 6E 20 70
74 28 29 5C 22 3E 3C 64 69 76 20 69 64 3D 5C 22 77 70 5C 22 3E 3C 2F 64 69 76 3E 3C 70 3E 45 6D 70
6C 6F 79 65 65 5F 6E 61 6D 65 3A 3C 2F 70 3E 3C 69 6E 70 75 74 20 69 64 3D 5C 22 65 6D 70 5F 6E 61
6D 65 5C 22 20 6E 61 6D 65 3D 5C 22 65 6D 70 5F 6E 61 6D 65 5C 22 3E 3C 70 3E 45 6D 70 6C 6F 79 65
65 20 49 44 3A 3C 2F 70 3E 3C 69 6E 70 75 74 20 69 64 3D 5C 22 65 6D 70 5F 69 64 5C 22 20 6E 61 6D
65 3D 5C 22 65 6D 70 5F 69 64 5C 22 3E 3C 70 3E 44 65 73 69 67 6E 61 74 69 6F 6E 3A 3C 2F 70 3E 3C
69 6E 70 75 74 20 69 64 3D 5C 22 64 65 73 69 67 6E 61 74 69 6F 6E 5C 22 20 6E 61 6D 65 3D 5C 22 64
65 73 69 67 6E 61 74 69 6F 6E 5C 22 3E 3C 70 3E 43 6F 6D 70 61 6E 79 3A 3C 2F 70 3E 3C 69 6E 70 75
74 20 69 64 3D 5C 22 63 6F 6D 70 61 6E 79 5C 22 20 6E 61 6D 65 3D 5C 22 63 6F 6D 70 61 6E 79 5C 22
3E 3C 70 3E 4C 6F 63 61 74 69 6F 6E 3A 3C 2F 70 3E 3C 69 6E 70 75 74 20 69 64 3D 5C 22 6C 6F 63 61
74 69 6F 6E 5C 22 20 6E 61 6D 65 3D 5C 22 6C 6F 63 61 74 69 6F 6E 5C 22 3E 0A 0D 0A 41 54 2B 52 53
49 5F 48 54 54 50 52 53 50 3D 01 00 00 00 00 00 00 00 00 00 00 00 0D 0A
[ Go to top ]
rsi_httppost :: HTTP Post
Description
This command is used to transmit a
HTTP POST
request to a remote HTTP server.
A subsequent HTTP POST request can be issued only the response to a previously issued HTTP POST request is received. Module acts as a HTTP client when this command is issued.
Use
rsi_httppost_data
to send multiple chunks (max size 900 byte) of data.
Command Format
at+rsi_httppost=<https_enable>,<http_port>,<user_name>,<password>,<host_name>,<ip_address>,<url>,<extended_header>,<data/data_length>
Parameters
https_enable
- Set BIT[0] to enable HTTPS.
- Set BIT[1] to enable NULL delimiter for HTTP buffer instead of comma.
- Set BIT[2] to use SSL TLS 1.0 version if HTTPS is enabled.
- Set BIT[3] to use SSL TLS 1.2 version if HTTPS is enabled.
- Set BIT[4] to use SSL TLS 1.1 version if HTTPS is enabled.
-
Set BIT[5] to enable
HTTP_POST
data feature - Set BIT[6] to enable HTTP version 1.1.
- Set BIT[7] to enable user defined http_content type in Flags
http_port
-
HTTP server port number, defaults to port
80
user_name
-
The username for HTTP/HTTPS server authentication. Default username is
username
.
password
-
The password for HTTP/HTTPS server authentication. Default password is
admin
.
host_name
- Host name of the HTTP/HTTPS server.
ip_address
- IP address of HTTP/HTTPS server.
url
- Requested URL.
extended_header (1 byte)
-
The purpose of this is to append user configurable header fields to the default HTTP/HTTPS header. To write extended header, user must use 'Data stuffing' mentioned separately in this document as well mentioning here also in context of extended header. extended header can have multiple header fields each ended by
\r\n
(0xD 0xA) but\r\n
is the delimiter for an AT command so use data stuffing and replace all (0xD 0xA) by 0xDB 0xDC besides delimiter(). See the example given below. -
The default http header contains the following:
- Content Type : Describes about the type of the file which user want to send like html,txt,gif etc.
- Content Length : Tells about the length of the text which user is using.
- The abovementioned fields are created in the header by the firmware.
data/data_length
- Post data to be sent / total length of the http data.
Note!
-
When BIT[6] is enabled in
https_enable
feature bitmap,hostname
is mandatory (to support HTTP version 1.1). -
When BIT[5] is enabled in
https_enable
feature bitmap, instead of data, the host need to give total HTTP data length. -
Maximum supported length for
user_name
,password
together is278
bytes. -
Maximum supported length for buffer is
(872-(length of user_name + length of password))
bytes excluding delimiters. - If username, password, hostname and extended http headers are not required, user should send empty string separated by delimiter.
- If content of any field contains comma then NULL delimiter should be used.
Example 1
-
https_enable
=0
-
http_port
=80
-
Username
=username
-
password
=password
-
host_name
=www.google.com
-
ip_address
=192.168.40.50
-
url
=/index.html
-
extended_header
=ContentType: html
ÛÜ -
data
=<data>
Example 2
Set BIT[5] in
https_enable
field.
-
https_enable
=0x20
-
http_port
=80
-
Username
=username
-
password
=password
-
host_name
=posttestserver.com
-
ip_address
=64.90.48.15
-
url
=/post.php
-
extended_header
=ContentType: html
ÛÜ -
data
=1800
Note!
As per
httppost_data
, maximun bytes of data length is
1400
only.
As per above example, sending data length as
1800
bytes but will post the data chunk by chunk i.e. 1400 bytes will be sent followed by the remaining 400 bytes.
Response
Module may give http response in multiple chunks for a single HTTP POST request.
Result Code | Description |
---|---|
AT+RSI_HTTPRSP=<more><status_code><offset><data_len><data>
|
After the module sends out the HTTP POST request to the remote server, it might take some time to receive the response. The response from the remote server is sent out to the Host from the module in the following form:
AT+RSI_HTTPRSP=<more><status_code><offset><len><data>
. The string
AT+RSI_HTTPRSP
is in uppercase ASCII.
|
ERROR <Error_code>
|
Failure |
where ...
more (2 bytes)
-
This indicates whether more HTTP data for the HTTP POST request is pending or not.
-
0
More data is pending. Further interrupts may be raised by the module till all the data is transferred to the Host. -
1
End of HTTP data. -
2
HTTP post request success response.
-
status_code (2 bytes)
-
Provided the HTTP status code as received in the response patcket such as
200
,201
,404
etc. Astatus_code
equal to 0 indicates that there was no HTTP header in the received packet, probably a continuation of the frame body received in the previous chunk.
offset (4 bytes)
- Reserved
data_len (4 bytes)
- The data length in current chunk.
data (Maximum 1400 bytes)
- Actual http data.
Possible error codes for this command are
0x0015, 0x0021, 0x0025, 0x002C, 0xFF74, 0xBBF0
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6 .
Example 1
Command
at+rsi_httppost=1,443,username,password,hostname,192.168.40.86,/index.html, ContentType: **html**ÛÜ,<data=abcd>
Example 2
Command
at+rsi_httppost=32,80,username,password,posttestserver.com,64.90.48.15,/index.html, ContentType: **html**ÛÜ, 100
at+rsi_httppost=65,443,username,password,posttestserver.com,64.90.48.15,/index.html,ContentType: **html**ÛÜ, 100
at+rsi_httppost=97,443,username,password,posttestserver.com,64.90.48.15,/index.html,ContentType: **html**ÛÜ, 100
[ Go to top ]
rsi_httppost_data :: HTTP Post Data
Description
This command is used to transmit chunks of HTTP data to http server.
To use this command it is MANDATORY to enable
large data transfer
using
https_enable[5]
in the
at+rsi_httppost
command.
A subsequent `HTTP POST data request can be issued only when the response to a previously issued HTTP POST DATA request is received. Module acts as a HTTP client when this command is issued.
Command Format
at+rsi_httppost_data=<current_chunk_length>,<data>
current_chunk_length
- Length of the current data.
data
- HTTP data.
Response
Module may give http response in multiple chunks for a single HTTP POST request.
Result Code | Description |
---|---|
AT+RSI_HTTPPOSTRSP=<more><status_code><offset><data_len><data>
|
After the module sends out the HTTP POST request to the remote server, it might take some time to receive the response. The response from the remote server is sent out to the Host from the module in the following form
AT+RSI_HTTPRSP=<more><status_code><offset><data_len><data>
. The string
AT+RSI_HTTPRSP
is in uppercase ASCII.
|
ERROR <Error_code>
|
Failure |
where ...
more (2 bytes)
-
This indicates whether more HTTP data for the HTTP POST request is pending or not .
-
4
= More data is pending from host -
5
= End of HTTP data from host(Host sent total data content length) -
8
= More data is pending from module to host. Further interrupts may be raised by the module till all the data is transferred to the Host. -
9
= End of HTTP data from module to host.
-
status_code (2 bytes)
- Provided the HTTP status code as received in the response packet such as 200, 201, 404 etc. A status_code equal to 0 indicates that there was no HTTP header in the received packet, probably a continuation of the frame body received in the previous chunk.
offset (4 bytes)
- Always contains „0?.
data_len (4 bytes)
- data length in current chunk.
data (maximum 1400 bytes)
- Actual http data.
Possible error codes for this command are as follows
0x0015,0x0021, 0x0025, 0x002C, 0xFF74, 0xBBF0, 0XBB38, 0xBBEF, 0xBB3E, 0xBB38, 0xBBE7
.
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6 .
Example
Command
at+rsi_httppost=32,80,username,password,posttestserver.com,64.90.48.15,/index.html,ContentType: **html**ÛÜ, 1800
ok successful response
at+rsi_httppost_data=1400,<first 1400 byte of total 1800 byte data>
ok successful response
at+rsi_httppost_data=400,<last 400 byte of total 1800 byte data>
ok successful response
[ Go to top ]
rsi_httpput :: HTTP Put
Description
This command is used to transmit HTTP PUT request to a remote HTTP server. Module acts as a HTTP client when this command is issued. This section explains different commands to use HTTP client PUT. This command should only be issued afterSet IP Parameterscommand. The following table explains the list of HTTP PUT commands and their description.
HTTP PUT Command | Description |
---|---|
PUT_CREATE | Creates HTTP client thread and HTTP client socket. This should be the first command to use the HTTP client PUT |
PUT_START | Connects to the specified HTTP server and creates the specified resource. |
PUT_PACKET | To send the resource data packet |
PUT_DELETE | To delete the HTTP client thread and socket |
- PUT_CREATE should be called as a first command to use HTTP PUT.
- Once put start is successful, PUT_PACKET should be called to send the resource data packet for the previously create resource.
- Once put create is successful, PUT_START should be called to create the specified resource on the specified HTTP server.
- Call PUT_DELETE to delete HTTP Client thread and socket.
Command Format
The HTTP PUT client has different command types. Based on the command type, following parameters change accordingly.
For
at+rsi_httpput=<command_type>,<remaining parameters>
the following are available command types.
HTTP PUT command | Command Type | Command Format |
---|---|---|
PUT create | 1 |
at+rsi_httpput=1
|
PUT start | 2 |
at+rsi_httpput=2,<ip_version>,<https_enable>,<port number>,<total content length>,<http buffer>
where ...
|
ip_version = 4 | ||
ip_address = IP address of the HTTP server. | ||
port number = HTTP server port number | ||
total_length = Total content length of the HTTP PUT data | ||
http_buffer = http buffer contains the username, password, host name, ip address, URL address, extended http header. | ||
PUT PACKET | 3 |
at+rsi_httpput=3,<current length>,<http buffer>
where ...
|
current length = length of the current http put content chunk | ||
http_buffer = http buffer contains the put data | ||
PUT DELETE | 4 |
at+rsi_httpput=4
|
Note!
- Maximum supported PUT buffer length is 900 bytes.
- Maximum timeout for http put start command response is 20 Seconds.
- Maximum timeout for http put packet command response is 10 Seconds.
https_enable
- Set BIT[0] to enable HTTPS.
- Set BIT[1] to enable NULL delimiter for HTTP buffer instead of comma.
- Set BIT[2] to use SSL TLS 1.0 version if HTTPS is enabled.
- Set BIT[3] to use SSL TLS 1.2 version if HTTPS is enabled.
- Set BIT[4] to use SSL TLS 1.1 version if HTTPS is enabled.
-
Set BIT[5] to enable
HTTP_POST
data feature - Set BIT[6] to enable HTTP version 1.1.
- Set BIT[7] to enable user defined http_content_type in flags.
port_number
-
HTTP server port number. If not specified, defaults to port
80
.
http_put_buffer
-
This is a character bufer that contains following values in the order of
<user_name>,<password>,<host_name>,<address>,<url>,<extended_header>
.
content_length
- Total length of the resource content.
user_name
- user_name for HTTP/HTTPS server authentication. Default user name is 'redpine'.
password
- password for HTTP/HTTPS server authentication. Default password is 'admin'.
host_name
- Host name of the HTTP/HTTPS server.
ip_address
- IPv4/IPv6 address(IPv6 is cuurently not supported) of HTTP/HTTPS server.
url
- Requested URL.
extended_header
- The purpose of this is to append user configurable header fields to the default HTTP/ HTTPS header. To write extended header through 'at' command, user must use 'Data stuffing' mentioned separately in this document as well as in context of extended header mentioned here. Extended header can have multiple header fields each ended by (oxd oxa). But here is our delimiter for whole 'at' command, so use data stuffing and replace all (0xd 0xa) by 0xdb oxdc besides delimiter()
current_length
- Current content chunk length
data
-
Resource data to be sent. This parameter is valid only for the
PUT PACKET
command.
Note!
-
Maximum supported length for
user_name
,password
together is278
bytes. -
Maximum supported length for buffer is
(872-(length of user_name + length of password))
bytes excluding delimiters. - If username, password, hostname and extended http headers are not required, user should send empty string separated by delimiter.
- If content of any field contains comma then NULL delimiter should be used.
-
When BIT[6] is enabled in
https_enable
feature bitmap,hostname
is mandatory (to support HTTP version 1.1). -
When BIT[6] is enabled in
https_enable
feature bitmap,hostname
is mandatory (to support HTTP version 1.1).
Response
Result Code | Description |
---|---|
AT+RSI_HTTPRSP=<command_type><end_of_file><offset><data_len><data>
|
After the module sends out the HTTP PUT request to the remote server, it may take some time for the response to come back. The response from the remote server is sent out to the Host from the module in the following form:
AT+RSI_HTTPRSP=<command_type><end_of_file><offset><data_len><data>
. The string
AT+RSI_HTTPRSP
is in uppercase ASCII.
|
ERROR <Error_code>
|
Failure |
where ...
command_type
- "5", HTTP Client PUT packet command type during the response from the server.
end_of_file
- Only valid for `HTTP_PUT PKT.
-
End of file or HTTP resource content.
-
8
- More data pending from server -
9
- End of HTTP file from server/resource content
-
offset (4 bytes)
- Reserved
data_length
- Data length in current chunk
data
- (Maximum 1024 bytes) Actual http data from server.
Possible Error codes for this command are
0x0021, 0x0015, 0x0025, 0xBB38
.
Availability
This command is available in Operating Modes 0, 2, 6.
Example
HTTP client PUT Service
Command
at+rsi_httpput=1
at+rsi_httpput=2,4,0,80,19,username,password,192.168.1.100,192.168.1.100,/,ContentType: **html**ÛÜ
at+rsi_httpput=3,19,<html><body></html>
at+rsi_httpput=4
[ Go to top ]
rsi_fwversion :: Query Firmware Version
Description
This command queries the version of the firmware loaded in the module.
Command Format
at+rsi_fwversion?
Response
Result Code | Description |
---|---|
OK
<firmware_version>
|
Successful execution of command. All values returned in ASCII. |
ERROR <error code>
|
Failure. |
where ...
firmware_version (20 bytes)
- The firmware version of the module.
Possible error codes for this command are
0x002C
.
Availability
This command is available in all modes.
Example
Command
at+rsi_fwversion?
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x66 0x77 0x76 0x65 0x72 0x73 0x69 0x6F 0x6E 0x3F 0x0D 0x0A
Response from RS9116 Rev 1.4
OK1610.2.5.0.0.23
0x4F 0x4B 0x31 0x36 0x31 0x30 0x2E 0x32 0x2E 0x35 0x2E 0x30 0x2E 0x30 0x2E 0x32 0x33 0x00 0x0D 0x0A
Response from RS9116 Rev 1.5
OK1611.2.5.0.0.23
0x4F 0x4B 0x31 0x36 0x31 0x31 0x2E 0x32 0x2E 0x35 0x2E 0x30 0x2E 0x30 0x2E 0x32 0x33 0x00 0x0D 0x0A
[ Go to top ]
rsi_rssi :: Query RSSI Value
Description
This command is used to retrieve the RSSI value for Access Point to which the module is connected.
Command Format
at+rsi_rssi?
Response
Result Code | Description |
---|---|
OK <rssi_val> | Successful execution of command |
ERROR <Error code>
|
Failure. |
where ...
rssi_val (2 bytes)
-
Absolute value of the RSSI of the Access Point to which the module is connected. For example, if the RSSI is -20 dBm,
rssi_val
=20
. -
Closer the RSSI value to
0
, stronger the signal strength.
Possible error codes for this command are
0x0021, 0x0025, 0x002C
.
Availability
This command is available when the module is configured in Operating Mode 0 and 2.
Example
Command
at+rsi_rssi?
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x72 0x73 0x73 0x69 0x3F 0x0D 0x0A
Response For a RSSI of -20 dBm, the return string is
OK20
0x4F 0x4B 0x14 0x00 0x0D 0x0A
[ Go to top ]
rsi_mac :: Query MAC Address
Description
This command is used to query the MAC address of the module. This command can be issued anytime after
rsi_init
command.
Command Format
at+rsi_mac?
Response
For Non-concurrent Mode
Result Code | Description |
---|---|
OK <MAC_Address> | Successful execution of command. The MAC address (6 bytes) of the module. |
ERROR <Error code>
|
Failure. |
For Concurrent Mode
| OK <MAC_Address1><MAC_Address2>| Successful execution of command. MAC_Address1 is the station MAC Address and MAC_Address2 is of the AP created in the module.|
|
ERROR <Error code>
| Failure. |
Possible error codes for this command are
0x002c
.
Availability
This command is available in all operating modes.
Example 1 - Client or AP mode
Command
at+rsi_mac?
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x6D 0x61 0x63 0x3F 0x0D 0x0A
Response
If the MAC ID is
80:C9:55:34:F0:10
, the response is
OK <MAC_Address>
0x4F 0x4B 0x80 0xC9 0x55 0x34 0xF0 0x10 0x0D 0x0A
Example 2 - Concurrent mode
Command
at+rsi_mac?
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x6D 0x61 0x63 0x3F 0x0D 0x0A
Response
OK <MAC_Address1><MAC_Address2>
0x4F 0x4B 0x80 0xC9 0x55 0x34 0xF0 0x10 0x80 0xC9 0x55 0x34 0xF0 0x11 0x0D 0x0A
[ Go to top ]
rsi_nwparams :: Query Network Parameters
Description
This command is used to retrieve the WLAN and IP configuration parameters. This command should be sent only after the connection to an Access Point is successful.
Command Format
at+rsi_nwparams?
Response
Result Code | Description |
---|---|
OK <wlan_state><channel_number><psk><mac_addr><ssid><connection_type><sec_type><dhcp_mode><ip_addr><subnet_mask><gateway><num_open_socks><prefix_length ><ip6><dgw6><tcp_stack_used><socket_id><socket_type><local_port><dest_port><dest_ip_address>
up to maximum number of sockets supported.
|
Successful execution of command |
ERROR <Error code>
|
Failure. |
where ...
wlan_state (1 byte)
-
This indicates whether the module is connected to an Access Point or not.
-
0
– Not Connected -
1
– Connected
-
channel_number (1 byte)
- Channel number of the AP to which the module is connected
psk (64 bytes)
- Pre-shared key used
mac_addr (6 bytes)
- MAC address of the module
ssid (34 bytes)
- This value is the SSID of the Access Point to which the module is connected.
- Note: The maximum length of SSID is 32 bytes; the remaining 2 bytes are reserved for NUL termination and alignment.
connection_type (2 bytes)
-
0x0001
– Infrastructure
sec_type (1 byte)
-
Security mode of the AP to which the module joined.
-
0
– Open mode -
1
– WPA security -
2
– WPA2 security -
3
- WEP -
4
– WPA-Enterprise -
5
– WPA2-Enterprise -
7
– WPA3 security
-
dhcp_mode (1 byte)
-
This value indicates whether the module is configured for DHCP or Manual IP configuration.
-
0
– Static IP configuration -
1
– Dynamic IP configuration
-
ip_addr (4 bytes)
- This is the IP address of the module.
subnet_mask(4 bytes)
- This is the Subnet Mask of the module
gateway (4 bytes)
- This is the Gateway Address of the module.
num_open_socks (2 bytes)
- This value indicates the number of sockets currently opened
prefix_length (2 bytes)
- Prefix length of IPv6 address(currently not supported).
ip6 (16 bytes)
- Not used since IPv6 is not supported.
dgw6(16 bytes)
- Not used since IPv6 is not supported.
tcp_stack_used (1 byte)
-
Defaults to
1
to indicate IPv4.
socket_id (2 bytes)
- Socket handle of an existing socket
socket_type (2 bytes)
-
0
– TCP/SSL/websocket Client -
2
– TCP/SSL Server (Listening TCP) -
4
– Listening UDP
local_port (2 bytes)
- Port number of the socket in the module.
dest_port(2 bytes)
- dest_port of the remote peer.
ip_address (16 bytes)
- IP address of the remote terminal.
- Only first 4 bytes of IP address is filled, remaining 12 bytes are zero.
Note! If the Set IP Params command was not sent to the module before Query Network Parameters command, the module returns default values for the following fields: dhcp_mode, ip_addr, subnetMask, gateway, num_open_socks, prefix_length, ip6, dgw6, tcp_stack_used, socket_info
Possible error codes for this command are
0x0021, 0x002C
.
Availability
This command is available when the module is configured in Operating Mode 0, 2.
Example
Command
at+rsi_nwparams?
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x6E 0x77 0x70 0x61 0x6D 0x73 0x3F 0x0D 0x0A
Response
Response when
rsi_nwparams
command is given before ipconfig command so ip parameters are not set in this response, and sockets are not opened yet. Here SSID is 'cisco' and gateway is '192.168.100.76'.
OK <wlan_state><channel_number><psk><mac_addr><ssid><connection_type><sec_type><dhcp_mode><ip_addr><subnet_mask><gateway><num_open_socks><prefix_length><ip6><dgw6><tcp_stack_used><socket_id><socket_type><local_port><dest_port><dest_ip_address>
OK <wlan_state =0x01><channel_number =0x06><psk =0x00(repeats 63 times)><mac_addr =0x00 0x23 0xA7 0x16 0x16 0x16><ssid =0x63 0x69 0x73 0x63 0x6F 0x00<repeats 27 times><conection_tType =0x01 0x00><sec_type =0x00 > <dhcp_mode =0x01><ip_addr =0x00 0x00 0x00 0x00><subnetMask =0xFF 0xFF 0xFF 0x00 0><gateway =0xC0 0xA8 0x64 0x4C><num_open_socks =0x00 0x00><prefix_length =0x00 0x00><ip6 =0x00(16times)><dgw6=0x00(16 times) ><socket_id =0x00 0x00><socket_type =0x00 0x00><local_port =0x00 0x00><dest_port =0x00 0x00><dstip_addr.ipv4_address/ dstip_addr.ipv6_address =0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00><repeats 11 times > 0x0D 0x0A.
Note! Command will not get PSK, it will get PMK to reduce connection time with AP from the next boot up. In the nwparams response structure you can find 32 bytes of PMK remaining are filled with Zeros.
[ Go to top ]
rsi_reset :: Soft Reset
Description
This command resets the module, including all information regarding the WLAN connection and IP configuration. After giving this command, the Host has to start from the beginning, from Auto Baud Rate Detection (ABRD) for device detection and issuing the first command "Set Operating Mode". This command is valid only in case of UART and USB-CDC interface.
There is no response for this command.
Command Format
at+rsi_reset
Parameters
N/A
Response
N/A
Availability
This command is available in all operating modes.
Example
Command
at+rsi_reset
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x72 0x65 0x73 0x65 0x74 0x0D 0x0A
Response None
[ Go to top ]
rsi_multicast_filter :: Multicast Filter
Description
This command is to configure the multicast MAC address bitmap to filter multicast packets. This command should be given after init command.
Command Format
at+rsi_multicast_filter=<mcast_bitmap_frame>
Parameters
mcast_bitmap_frame
- There are two bytes in the payload which represent 2 parts. Lower byte represent the command type (cmd as mentioned below) and higher byte is the hash value (6 Bits) generated from the desired multicast MAC address (48 Bits) using hash function.
mcast_bitmap_frame | Functionality |
---|---|
mcast_bitmap_frame[0:1]
|
These 2 bits represents the command type. Possible values are as follows ... |
RSI_ MULTICAST_MAC_CLEAR_ALL
- Clear all the bits in the multicast bitmap
|
|
RSI_ MULTICAST_MAC_SET_ALL
- Set all the bits in multicast bitmap
|
|
mcast_bitmap_frame[2:7]
|
reserved |
mcast_bitmap_frame[8:13]
|
6 bit hash value generated from the hash algorithm which corresponds to the multicast MAC address is used to set/reset corresponding bit in multicast filter bitmap.This field is valid only if 0 or 1 is selected in command type(mcast_bitmap_frame[0:1]) |
mcast_bitmap_frame[14:15]
|
reserved |
Response
Result Code | Description |
---|---|
OK
|
Successful execution of command. |
ERROR <Error code>
|
Failure. |
Possible error codes are
0x0021, 0x0025, 0x002c
.
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
Note!
The Hash function is generated using CRC-8 with the polynomial
x^8 + x^2 + x + 1
. Only 6 bits are provided as the hash input to mcast_bitmap_frame[8:13], the 2 MSBs are ignored.
[ Go to top ]
rsi_multicast :: Join/Leave Multicast Group
Description
This command is used to join or leave a multicast group. This command should be issued after IP config done. The module can only join a single Multicast group at a time.
Command Format
at+rsi_multicast=<request_type>,<ip_address>
Parameters
reqest_type (2 bytes)
-
Type of request.
-
0
- Leave multicast group -
1
- Join multicast group
-
ip_address (16 bytes)
-
IP address of the multicast group. The last 12 bytes should be set to
0
.
Response
Result Code | Description |
---|---|
OK
|
Successful execution of command. |
ERROR <Error code>
|
Failure. |
Possible error codes
0x0021, 0x0025, 0x002C, 0xBB21, 0xBB4c, 0xBB17, 0xBB55
.
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
Example 1 - Join a multicast group
Command
at+rsi_multicast=1,239.0.0.0
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x6D 0x75 0x6C 0x74 0x69 0x63 0x61 0x73 0x74 0x3D 0x31 0x2C 0x32 0x33 0x39 0x2E 0x30 0x2E 0x30 0x2E 0x30 0x0D 0x0A
Response
OK
0x4F 0x4B 0x0D 0x0A
Example 2 - Leave a multicast group
Command
at+rsi_multicast=0,239.0.0.0
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x6D 0x75 0x6C 0x74 0x69 0x63 0x61 0x73 0x74 0x3D 0x30 0x2C 0x32 0x33 0x39 0x2E 0x30 0x2E 0x30 0x2E 0x30 0x0D 0x0A
Response
OK
0x4F 0x4B 0x0D 0x0A
Note! If mDNS feature is enabled, multicast group is not supported.
[ Go to top ]
rsi_ping :: ICMP Ping
Description
This command is used to send and ICMP ping to the target IP address. This command should be issued after IP config is done. To enable, set PING from module which is
tcp_ip_feature_bit_map[11]
.
Command Format
at+rsi_ping=<ip_version>,<ping_address>,<ping_size>,<timeout_ms>
Parameters
ip_version (2 bytes)
-
IP version of the ping request.
-
4
- for IPv4
-
ping_size (2 bytes)
- Ping data size to send. Maximum supported is 300 bytes.
ping_address (16 bytes)
- Destination IPv4/IPv6 address.
timeout_ms (2 bytes)
- Ping request timeout.
Response
Result Code | Description |
---|---|
OK
|
Successful execution of command |
ERROR <Error code>
|
Failure. |
where ...
ip_version (2 bytes)
- IP version of the ping reply.
ping_size (2 bytes)
- Contains the length of the data which is present in the ping reply.
ping_address (16 bytes)
- IP address of the ping reply. Last 12 bytes are set to '0' in case of IPv4.
Availability
This command is available when the module is configured in Operating Mode 0, 2 or 6.
Possible error codes are
0x0025, 0x002C, 0x002F, 0xBB29, 0xFF74, 0x0015, 0xBB21, 0xBB4B, 0xBB55
.
Example
Command
at+rsi_ping=4,192.168.1.100,10
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x70 0x69 0x6E 0x67 0x3D 0x34 0x2C 0x31 0x39 0x32 0x2E 0x31 0x36 0x38 0x2E 0x31 0x2E 0x31 0x30 0x30 0x2C 0x31 0x30 0x0D 0x0A
Response 0x4F 0x4B 0x04 0x00 0x0A 0x00 0xC0 0xA8 0x01 0x64 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x0D 0x0A
[ Go to top ]
rsi_webpage :: Write Static Webpage
RS9116W allows two kinds of webpages to be stored in flash: static and dynamic. Static pages allow plain html, css and JavaScript; whereas dynamic pages allow JSON data to be associated with the static webpages. This JSON data can be stored, retrieved and updated independently. The webpages can fetch this data and dynamically fill form fields. These fields can be modified from the host side or the browser.
The host can store up to 10 webpages, each up to 4K in size. The size of a page can exceed the 4K limitation, but this will result in lesser number of files that can be stored. For example, user could store one 12K file, and seven 4K files. Similarly, there can be 10 JSON data objects with each NOT exceeding 512 bytes in any circumstances. These objects can only be stored if they have an associated webpage.
Description
This command is used to load a static webpage, to store a static webpage and to overwrite an existing static webpage. This command should be issued before join command.
If webpage total length is more than
MAX_WEBPAGE_SEND_SIZE
, then host has to send webpage in multiple chunks.
Command Format
at+rsi_webpage=<filename>,<total_len>,<current_len>,<has_json_data>,<webpage>
Parameters
filename (24 bytes)
- Name of the file to load the webpage.
*total_len (2 bytes)
- Total length of the webpage
current_len (2 bytes)
-
Length of the current webpage chunk
has_json_data
has_json_data (1 byte)
-
0
- if no associated data. In this case webpage is static page. -
1
- if file has associated json data
webpage (1024 bytes)
- The HTML content chunk.
Response
Result Code | Description |
---|---|
OK
|
Successful execution of command. |
ERROR <Error code>
|
Failure. |
Possible error codes are
0x0021, 0x0015, 0x0025, 0x00C1, 0x00C2, 0x00C3 , 0x00C5, 0x00C6, 0x00C8
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
Example
The host can also overwrite an existing page, this is achieved by issuing this same command with the same filename. No explicit erase is required. However the size of the new file cannot exceed the size of the old file rounded up to the 4K chunk boundary. Precisely, if an old file used 2 chunks of 4K i.e. up to 8K in size, then the new file can't exceed 8K in size. To overcome this limitation, the host should erase the existing file and then write a new file which can exceed the size of the old file provided the device has enough space available.
Command
at+rsi_webpage=sample.html,2783,1024,0,<html><head><title></title>[1024-chars]
Response
OK
[ Go to top ]
rsi_jsoncreate :: Write Dynamic Webpage
Description
This command is used to write to flash json data associated with static webpages.
Command Format
at+rsi_jsoncreate=<filename>,<total_len>,<current_len>,<json_data>
Parameters
filename (24 bytes)
- The webpage file with which this JSON data is associated.
total_length (2 bytes)
- Total length of the JSON
current_length(2 bytes)
- Length of current JSON chunk
json_data
- This is the JSON Object that stores the data of the webpage. The maximum supported JSON length is 512 bytes.
Response
Result Code | Description |
---|---|
OK | Success. |
ERROR <Error code>
|
Failure. |
There is no response payload.
Possible error codes are
0x0015, 0x0021, 0x0025, 0x002C, 0x00B1, 0x00B2,0x00B3, 0x00B4, 0x00B5, 0x00B6
.
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
Example
The webpage associated with the dynamic webpage data should already be present in the flash with
has_json_data
=
1
before issuing this command.
Command
at+rsi_jsoncreate=sample.html,60,60,{"temp":27, "accx":2.4, "accy":2.6, "accz":1.1, "enabled":true}
Response
OK
Note! The webpage associated with the dynamic webpage data should already be present in the flash with bool json set to 1 before issuing this command.
[ Go to top ]
rsi_erasefile :: Erase Static Webpage
This command is used to erase the webpage file from flash memory. This command should be issued before join command. The erase command should be used specifying the filename, this will free up the number of 4K chunks the existing file was using.
Command Format
at+rsi_erasefile=<filename>
Parameters
filename (24 bytes)
- Name of the webpage file to be erased.
Response
Result Code | Description |
---|---|
OK
|
Successful execution of command. |
ERROR <Error code>
|
Failure. |
There is no response payload.
Possible error codes are
0x0021, 0x0025,0x002C, 0x00C4
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
Example
Command
at+rsi_erasefile=sample.html
Response
OK
[ Go to top ]
rsi_erasejson :: Erase Dynamic Webpage
This command is used to erase the JSON data file associated with a webpage in the flash memory. This command should be issued after opermode command.
Command Format
at+rsi_erasejson=<filename>
Parameters
filename (24 bytes)
- Name of the webpage file of which JSON data is to be erased.
Response
Result Code | Description |
---|---|
OK
|
Successful execution of command. |
ERROR <Error code>
|
Failure. |
There is no response payload.
Possible error codes are
0x0021, 0x0025, 0x002C, 0x00B4
.
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
Example
at+rsi_erasejson=sample.html
Response
OK
[ Go to top ]
rsi_clearfiles :: Erase All Webpages
Description
This command is used to erase all webpages in the file system. This command should be issued after opermode command.
Command Format
at+rsi_clearfiles=<clear>
Parameters
clear (1 byte)
- set '1' to clear files.
Response
Result Code | Description |
---|---|
OK
|
Successful execution of command. |
ERROR <Error code>
|
Failure. |
There is no response payload.
Possible error codes are
0x0021, 0x0025, 0x002C
.
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
Example
Command
at+rsi_clearfiles=1
Response
OK
[ Go to top ]
rsi_urlrsp :: Webpage Passthrough
Description
If a request for an unknown URL (webpage) with a
.html
extension is received, the module sends an asynchronous indication message
AT+RSI_URLREQ
to the host to request the unknown webpage. The host responds with the webpage content using the
rsi_urlrsp
command.
After receiving an
AT+RSI_URLREQ
message, the host should provide the module with the webpage to serve. The format of the asynchronous indication sent to the host is shown below.
AT+RSI_URLREQ <length><url_name><request_type> <post_content_length><post_data>
where ...
url_length (1 byte)
- The number of characters in the requested URL.
url_name (40 bytes)
- The URL name.
request_type (1 byte)
-
The type of request received
-
0
– HTTP GET request -
1
– HTTP POST request
-
post_content_length (2 bytes)
- The length of the posted content
post_data (512 bytes)
- The HTTP POST received.
Note!
The
post_content_length
and
post_data
fields are valid if request_type is
HTTP POST
. These fields can be ignored if
request_type
is HTTP GET.
Command Format
at+rsi_urlrsp=<total_len>,<more_chunks>,<webpage>
Parameters
total_len (4 bytes)
-
This is the total number of characters in the webpage. If the queried web page is not found, the Host should send
0
for this parameter.
more_chunks (1 byte)
-
0
- There are no more segments coming from the Host after this segment -
1
- There is one or more segments coming from the Host after this segment
webpage (1400 bytes)
- Source for the current webpage segment
Response
Result Code | Description |
---|---|
OK
|
Successful execution of command. |
ERROR <Error code>
|
Failure. |
There is no response payload.
Possible error codes are
0x0015, 0x0021, 0x0025, 0x002C
.
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
Example 1
If the web page source code is of 3000 characters, the Host should send it through 3 segments, the first two of 1400 bytes, and the last one of 200 bytes as shown:
Command
at+rsi_urlrsp=<total_len =3000>,<more_chunks =1>, <webpage =code of the 1st segment>
at+rsi_urlrsp=<total_len =3000>,<more_chunks =1>, <webpage =code of the 2nd segment>
at+rsi_urlrsp=<total_len =3000>,<more_chunks =0>, <webpage =code of the 3rd segment>
Example 2
If the requested webpage can not be served e.g. the page is unknown, the host should send the following command
Command
at+rsi_urlrsp=0
[ Go to top ]
rsi_setregion :: Set Regulatory Region for Client Mode
Description
This command configures the device to operate according to the regulations of its operating region. This command should be given immediately followed by init command.
Command Format
at+rsi_setregion=<setregion_code_from_user_cmd>,<region_code>/r/n
Parameters
setregion_code_from_user_cmd (1 byte)
-
Enable/Disable set region code from user.
-
0
– Disable. Use the region information from beacon IE (Information Element) -
1
- Enable. Use the region information from user command
-
-
For the
Rest of World
region, there is no support for automatically configuring the region from a beacon IE.
region_code (1 byte)
-
0
,1
- USA (Default) -
2
- Europe -
3
- Japan -
4
- Rest of World (all radio channels are enabled with this setting) -
5
- Korea
Response
Result Code | Description |
---|---|
OK <region_code>
|
Successful execution |
ERROR
|
Failure |
where ...
region_code (1 byte)
- 0x01 - USA
- 0x02 - Europe
- 0x03 - Japan
- 0x04 - Rest of World
- 0x05 - Korea
Possible error codes for this command are
0x0021, 0x0025, 0x002C, 0xFF82, 0x00CC, 0x00C7, 0x00CD, 0x00CE
Note!
- In dual band mode, if the country element is extracted from a beacon in 2.4GHz band and 5GHz band are not matching, an error is thrown and region is set to US
- Refer to the following tables for the region supported and rules followed by the module
- Although the transmit power levels w.r.t to region are greater than 20dBm, the module supports maximum Tx power output of 18dBm.
US Domain Regulations
Rule No | Band | First Channel | # Channels | Last Channel | Max power in dBm | Scan type |
---|---|---|---|---|---|---|
1 | 2.4 GHz | 1 | 11 | 11 | 27 | Active |
2 | 5 GHz | 36 | 4 | 48 | 16 | Active |
3 | 5 GHz | 52 | 4 | 64 | 23 | Passive |
4 | 5 GHz | 100 | 5 | 116 | 23 | Passive |
5 | 5 GHz | 132 | 4 | 144 | 23 | Passive |
6 | 5 GHz | 149 | 5 | 165 | 29 | Active |
Europe Domain Regulations
Rule No | Band | First Channel | # Channels | Last Channel | Max power in dBm | Scan type |
---|---|---|---|---|---|---|
1 | 2.4 GHz | 1 | 13 | 13 | 20 | Active |
2 | 5 GHz | 36 | 4 | 48 | 23 | Active |
3 | 5 GHz | 52 | 4 | 64 | 23 | Passive |
4 | 5 GHz | 100 | 11 | 144 | 30 | Passive |
Japan Domain Regulations
Rule No | Band | First Channel | # Channels | Last Channel | Max power in dBm | Scan type |
---|---|---|---|---|---|---|
1 | 2.4GHz | 1 | 14 | 14 | 20 | Active |
2 | 5GHz | 36 | 4 | 48 | 20 | Active |
3 | 5GHz | 52 | 4 | 64 | 20 | Passive |
4 | 5GHz | 100 | 11 | 144 | 30 | Passive |
Korea Domain Regulations
Rule No | Band | First Channel | # Channels | Last Channel | Max power in dBm | Scan type |
---|---|---|---|---|---|---|
1 | 2.4 GHz | 1 | 13 | 13 | 20 | Active |
2 | 5 GHz | 36 | 4 | 48 | 20 | Active |
3 | 5 GHz | 52 | 4 | 64 | 20 | Passive |
4 | 5 GHz | 100 | 12 | 144 | 30 | Passive |
5 | 5 GHz | 149 | 5 | 165 | 30 | Active |
Availability
This command is available when the module is configured in Operating Mode 0, 2, 8 modes. The tabulated rules are followed for the regions supported by the module.
Example
Set the region to 'Rest of World'.
Command
at+rsi_setregion=1,4
Response
OK
[ Go to top ]
rsi_setregion_ap :: Set Regulatory Region for AP Mode
Description
This command is used to set the region of the module in Access point mode. This command helps device to self-configure and operate according to the regulations of its operating country and includes parameters like country name, channel quantity and maximum transmit power. These parameters are added in Country information element in the beacons and probe responses. This command should be immediately followed by init command.
Command Format
at+rsi_setregion_ap=<setregion_code_from_user_cmd>,<country_code>,<num_rules>,[<first_channel>,<num_channels>,<max_tx_power>, ...] repeated for each rule.
Parameters
setregion_code_from_user_cmd (1 byte)
-
Set region code from user command enable/disable
-
0
- Disable. Get the region information based on region code from module's internal memory -
1
- Enable. Get the region information from user command
-
country_code (3 bytes)
-
Country code is case sensitive and should be in Upper case. If
setregion_code_from_user_cmd
=1
,country_code
must be set toUS
,EU
orJP
. -
If the country code is 2 characters, 3rd character should be
<space>
. -
The following parameters are considered only if
setregion_code_from_user_cmd
=1
.
num_rules (4 byte)
-
Number of rules for a given regulatory domain; at least
1
rule must be provided.
first_channel (1 byte)
- First channel for the nth rule. For 2.4GHz, only 2.4GHz channels need to be provided, and for 5GHz, only 5GHz channels need to be provided.
num_channels (1 byte)
- Number of channels contained in a rule.
max_tx_power (1 byte)
- Maximum transmit power used for channels in a rule.
Response
Result Code | Description |
---|---|
OK
|
Successful execution |
ERROR
|
Failure |
Possible error codes for this command are
0x0021, 0x0025, 0x002C, 0x00ca, 0x00cb, 0x00cc, 0xFF71, 0xFF82
Availability
This command is available when the module is configured in Operating Mode 6.
Note!
- AP configuration in DFS (Dynamic Frequency Selection) channels (52 to 140) is not supported.
- Though the transmit power levels w.r.t region are greater than 20dBm, the module only supports a maximum transmit power of 18dBm
Example 1
Example for 2.4 GHz
Command
at+rsi_setregion_ap=1,US<space>,2,1,4,23,5,7,30
Consider the first rule
1,4,23
-
The first channel is
1
and the number of channels is4
. This rule enables channels[1,2,3,4]
to transmit at a power level up to23 dBm
.
Consider the second rule
5,7,30
-
The first channel is
5
and the number of channels is7
. This rule enables channels[5,6,7,8,9,10,11]
to transmit at a power level up to30 dBm
.
The Country code given in the command reflects as it is in the beacon frame.
Example 2
Example for 5 GHz
Command
at+rsi_setregion_ap=1,US<space>,2,40,4,23,149,3,30
Consider the first rule
40,4,23
-
The first channel is
40
and the number of channels is4
. This rule enables channels[40,44,48,52]
to transmit at a power level up to23 dBm
.
Consider the second rule
149,3,30
-
The first channel is
149
and the number of channels is3
. This rule enables channels[149,153,157]
to transmit at a power level up to30 dBm
.
Example 3
Set the region using a previously stored configuration.
Command
at+rsi_setregion_ap=0,US<space>
Response
OK
Note! Refer to the tables dcoumented in the Set Region command for the region supported and domain rules followed by the module.
[ Go to top ]
rsi_per_stats :: Query PER Statistics
Description
Returns Transmit and Receive packet statistics once per second.
Command Format
at+rsi_per_stats=<per_stats_enable>,<per_stats_channel>
Parameters
per_stats_enable (2 bytes)
-
1
– Enable -
2
– Disable
per_stats_channel (2 bytes)
- Channel number used to receive packet statistics (not required if stats are disabled)
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR
|
Failure |
The format of packet statistics is shown in the following table.
AT+RSI_PER_STATS=<reserved_1>,<reserved_2>,
<reserved_3>,<crc_pass>,<crc_fail>,<cca_stk>,<cca_not_stk>,<pkt_abort>,<fls_rx_start>,<cca_idle>,<reserved_4>,
<rx_retries>,<reserved_5>,
<cal_rssi>,<reserved 6>,
<xretries>,<max_cons_pkts_dropped>,<reserved 7>
<bss_broadcast_pkts>,<bss_multicast_pkts>,<bss_filter_matched_multicast_pkts>,
<eof_pkt_drop_count>,<mask_pkt_drop_count>,<no_of_acks_sent>,
<pkt_rcvd with 48M>,<pkt rcvd with 24M>,<pkt rcvd with 12M>,<pkt rcvd with 6M>,
<pkt rcvd with 54M>,<pkt rcvd with 36M>,<pkt rcvd with 18M>,<pkt rcvd with 9M>,
<pkt rcvd with 11M>,<pkt rcvd with 5M>,<pkt rcvd with 2M>,<pkt rcvd with 1M>,
<pkt rcvd with mcs0>,<pkt rcvd with mcs1>,<pkt_rcvd_with_mcs2>,<pkt_rcvd_with_mcs3>,
<pkt_rcvd_with_mcs4>,<pkt_rcvd_with_mcs5>,<pkt_rcvd_with_mcs6>,<pkt_rcvd_with_mcs7>
Response
Field | Size (bytes) | Description |
---|---|---|
reserved_1 | 2 | Reserved |
reserved_2 | 2 | Reserved |
reserved_3 | 2 | Reserved |
crc_pass | 2 | Number of RX packets that passed CRC |
crc_fail | 2 | Number of RX packets that failed CRC |
cca_stk | 2 | Number of times cca got stuck |
cca_not_stk | 2 | Number of times cca didn't get stuck |
pkt_abort | 2 | Number of times RX packet aborts happened |
fls_rx_start | 2 | Number of false rx starts.If Valid wlan packet is recived and is dropped due to some reasons |
cca_idle | 2 | CCA idle time |
reserved_4 | 26 | Reserved |
rx_retries | 2 | Number of RX retries happened |
reserved_5 | 2 | Reserved |
cal_rssi | 2 | The calculated RSSI value of recently received RX packet |
reserved_6 | 4 | Reserved |
xretries | 2 | Number of TX Packets dropped after maximum retries |
max_cons_pkts_dropped | 2 | Number of consecutive packets dropped after maximum retries |
reserved_7 | 2 | Reserved |
bss_broadcast_pkts | 2 | BSSID matched broadcast packets count |
bss_multicast_pkts | 2 | BSSID matched multicast packets count |
bss_filter_matched_multicast_pkts | 2 | BSSID and multicast filter matched packets count. The filtering is based on the parameters given in multicast filter commandSet/Reset Multicast filter]. If multicast filter is not set then this count is equal to bss_multicast_pkts count |
Possible error codes for this command are
0x0021, 0x0025, 0x002c, 0x000A
.
Note!
In PER mode (opermode 8), the following stats related to RX packets (
crc_pass
,
crc_fail
,
cca_stk
,
cca_not_stk
,
pkt_abort
,
fls_rx_start
,
cca_idle
,
cal_rssi
) are only valid, the remaining fields can be ignored.
The multicast stats are valid only in associated state in client mode and are invalid in non-associated state. In associated state, the stats are for packets which are destinated for the module's MAC address only. In non-associated state, the stats are for all the packets received, irrespective of the destination MAC address.
Parameters valid in modes other than PER mode (opermode =
0
,
2
,
6
) are :
cal_rssi
,
xretries
,
crc_pass
,
max_cons_pkts_dropped
,
crc_fail
,
cca_stk
,
cca_not_stk
,
pkt_abort
,
fls_rx_start
,
cca_idle
,
bss_broadcast_pkts
,
bss_multicast_pkts
,
bss_filter_matched_multicsast_pkts
Availability
This command is valid in all operating modes.
[ Go to top ]
RSI_CLOSE :: Remote Socket Close Notification
Description
This is an asynchronous message issued in the following cases.
- When the remote peer closes connected TCP/SSL/Web socket.
- When module is not able to send data over socket because of unavailability of remote peer.
- When remote peer becomes unreachable, the module closes the socket after TCP keep alive time (~20 minutes) and sends this message to host.
Notification Format
AT+RSI_CLOSE<socket_desc><bytes_sent>
where ...
socket_desc (2 bytes)
- Socket descriptor of the socket which is closed.
bytes_sent (4 bytes)
- Number of bytes sent successfully on that socket
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
[ Go to top ]
rsi_bytes_sent_count :: Query Socket Tx Byte Count
Description
This command is used to query the number of bytes successfully transmitted (by the module) on a given socket.
Command Format
at+rsi_bytes_sent_count=<socket_handle>
Parameters
sock_handle (1 byte)
- The handle of the socket to query.
Response
Result Code | Description |
---|---|
OK
<socket_handle><num_bytes_sent>
|
Success |
ERROR
|
Failure |
where ...
socket_handle (2 bytes)
- The handle of the socket.
num_bytes_sent (4 bytes)
- Number of bytes successfully transmitted on the socket.
Possible error codes for this command are
0xFF86, 0XFFFA, 0xFF82, 0x002C, 0x0025, 0x0021
.
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
Example
Command
at+rsi_bytes_sent_count=1
0x61 0x74 0x2B 0x72 0x73 0x69 0x5F 0x62 0x79 0x74 0x65 0x73 0x5F 0x73 0x65 0x6E 0x74 0x5F 0x63 0x6F 0x75 0x6E 0x74 0x3D 0x31 0x0D 0x0A
Response
OK <socket_handle><num_bytes_sent>
0x4F 0x4B 0x01 0x00 0x0E 0x00 0x00 0x00 0x0D 0x0A
[ Go to top ]
rsi_debug :: Configure UART Debug Printing
Description
This command is used to enable debug prints on UART interfaces 1 and 2. Debug prints are controlled using the assertion level and assertion type parameters. This command should be issued after the device is initialized.
- To select the UART, see ext_custom_feature_bit_map[27]
-
UART 1
-
GPIO_9
is Tx (to host MCU) -
GPIO_8
is Rx (from host MCU)
-
-
UART 2
-
GPIO_6
is Tx (to host MCU). Used exclusively for serial debug logging.
-
Command Format
at+rsi_debug=<assertion_type>,<assertion_level>
Parameters
assertion_type (4 byte)
- Possible values are 0 to 15.
assertion_level (4 byte)
-
The assertion level is in the range
0
to15
(lowest to highest).0
disables all the prints.
Note!
-
To disable debug prints, send the
rsi_debug
command withassertion_type
andassertion_level
set to0
. - The baud rate for UART 2 is 460800.
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR
|
Failure |
Possible error codes for this command are
0x0021, 0x0025, 0x002C, 0xFFF8
Availability
This command can be given at any time.
[ Go to top ]
RSI_STATE-X :: Connection State Notification
Description
Asychronous messages are used to indicate module state to host. Asynchronous message are enabled by setting bit 10 of the custom feature bitmap during, see rsi_opermode .
Command Format
N/A
Response
This type of asynchronous message is given by the module when it is in scanning state.
AT+RSI_STATE-I<time_stamp>,<state_code>,<reason_code>,<rsi_channel>,<rsi_rssi>,<rsi_bssid>
This kind of message is given by the module once the scan results are observed and decided to join or not to join/Rejoin to AP.
AT+RSI_STATE-II<time_stamp>,<state_code>,<reason_code>,<rsi_channel>,<rsi_rssi>,<rsi_bssid>
Once the association or disassociation is done, module will give final state asynchronous message.
AT+RSI_STATE-III<time_stamp>,<state_code>,<reason_code>,<rsi_channel>,<rsi_rssi>,<rsi_bssid>
where ...
time_stamp (4 bytes)
- This is the value of the time stamp counter at the time of message; timestamps increment at intervals of 100ms.
state_code (1 byte)
-
This field indicates the state of the module.
state_code
contains two parts, the upper nibble and lower nibble. -
The upper nibble indicates the state of the rejoin process. The following table documents the possible values of the upper nibble of
state_code
.
State | Upper Nibble | Indication |
---|---|---|
Scan Trigger (State I) |
0x00
|
Startup. Initial Roam |
0x10
|
Beacon Loss. Failover Roam | |
0x20
|
De-authentication. AP induced roam / Disconnect from supplicant | |
Scan Result/Decision (State II) |
0x50
|
Current AP is best |
0x60
|
Better AP found | |
0x70
|
No AP found | |
Final Connection (State III) |
0x80
|
Associated |
0x90
|
Unassociated |
-
The lower nibble of
state_code
indicates the reason for a state change. The following table documents the possible values of the lower nibble ofstate_code
.
Lower Nibble | Reason for State Change |
---|---|
0x00
|
No reason specified |
0x01
|
Authentication denial |
0x02
|
Association denial |
0x05
|
WPA2 key exchange failed |
reason_code (1 byte)
- Indicates the reason for a failure.
reason_code
|
Reason for state change failure |
---|---|
0x00
|
No reason specified |
0x01
|
Authentication denial |
0x02
|
Association denial |
0x10
|
Beacon Loss (failover Roam) |
0x20
|
De-authentication (AP induced Roam/Deauth from supplicant) |
0x07
|
PSK not configured |
0x09
|
Roaming not enabled |
rsi_channel (1 byte)
-
Following represents the meaning of AP channel at the given state.
- State-I - Associated radio channel (invalid at startup).
- State-II - Channel of next association if module finds better AP in bgscan result.
- State-III - Channel at the time of association.
- If value of rsi_channel is 0, it means channel information is not available.
rsi_rssi (1 byte)
-
Following represents the meaning of AP RSSI at the given state.
- State-I - RSSI of AP at the time of trigger.
- State-II - RSSI of next association.
- State-III - RSSI at the time of final association.
-
If value of
rsi_rssi
=100
, the RSSI information is not available.
rsi_bssid (6 bytes)
-
Following represents the meaning of AP MAC at the given state.
- State-I - MAC address of AP at the time of scan trigger.
- State-II - MAC address of AP at the time of next association.
- State-III - MAC at the time of association.
-
If the value of AP MAC is
00:00:00:00:00:00
, it means MAC information is not available.
Availability
This command is available in oper modes 0, 2 and 6.
Note!
By default this feature is disabled. To enable this feature, set the custom bit
0x400
in opermode command.
[ Go to top ]
RSI_CLIENT_STATION_CONNECTED :: Client Connection Notification
Description
Asychronous messages used to indicate to the host in AP mode when a station connects (frame type 0xC2) / or disconnects (frame type 0xC3).
Notification Format
Client connected message.
AT+RSI_CLIENT_STATION_CONNECTED=<client_mac_address>
Client disconnected message.
AT+RSI_CLIENT_STATION_DISCONNECTED=<client_mac_address>
where ...
mac_address (6 bytes)
- MAC address of station connected/disconnected
Availability
This command is valid when opermode is 6.
Possible Error Codes:
N/A
[ Go to top ]
rsi_trans_mode_params :: Transparent Mode Command
Description
In transparent mode, the module acts as a virtual serial line. Once the module enters into the transparent mode, it will take raw data (byte stream) from a host on a serial port and forward it to the remote device using an internal TCP/IP stack. Similarly, data received from remote devices passed to the host (by discarding TCP/IP protocol-specific header) through a serial line. In transparent mode, the module does not process AT commands. This command is used to Enter/Start transparent mode, parameters for transparent mode are to be provided in this command. On reception of this command, the module tries to start transparent mode and replies with
AT+RSI_TMODE
message with status.
Command Format
at+rsi_trans_mode_params=<packetization_length>,<escape_character>,<gap_time>,<frame_time>,<escape_time>,<ip_version>,<socket_type>, <local_port>,<dest_port>,<ip_address>,<max_count>,<type_of_service>,<ssl_parameters>,<ssl_ciphers>
Parameters
packetization_length (2 bytes)
- Possible values are 10 to 1024
escape_character (1 byte)
- Any special character
-
This is a special character, which has significance. If module receives three consecutive escape characters from host after
gap_time
, this escape sequence indicates that the module should exit from Transparent mode and move into Command mode.
gap_time (2 bytes)
- Varies from 0 to 65533 in milliseconds
frame_time (2 bytes)
- Varies from 1 to 65534 in milliseconds (must be greater than gap time)
escape_time (2 bytes)
- Varies from 2 to 65535 in milliseconds (must be greater than frame time)
ip_version (2 bytes)
-
Must be
4
for IPv4
socket_type (2 bytes)
-
0
– TCP -
1
– UDP -
2
– LTCP -
4
– LUDP
local_port (2 bytes)
- Local port number
dest_port (2 bytes)
- Destination port number
ip_address (4 bytes)
- Server IP address if socket type is LUDP/LTCP
max_count (2 bytes)
- Maximum number of clients in LUDP/LTCP, fixed to 1 in transparent mode.
type_of_service (4 bytes)
-
Type of service, varies from
0
to8
ssl_parameters (1 byte)
-
This field is used to enable SSL for selected socket.
-
1
– Open TCP socket. -
2
- Open SSL client socket. -
5
- Open SSL socket with TLS 1.0 version. -
9
- Open SSL socket with TLS 1.2 version.
-
ssl_ciphers (1 byte)
-
Select various cipher modes, possible values
-
2
-TLS_RSA_WITH_AES_256_CBC_SHA256
-
4
-TLS_RSA_WITH_AES_128_CBC_SHA256
-
8
-TLS_RSA_WITH_AES_256_CBC_SHA
-
16
-TLS_RSA_WITH_AES_128_CBC_SHA
-
32
-TLS_RSA_WITH_AES_128_CCM_8
-
64
-TLS_RSA_WITH_AES_256_CCM_8
-
Response
Result Code | Description |
---|---|
AT+RSI_TMODE0
|
Successfully entered into transparent mode |
AT+RSI_TMODE1
|
Graceful exit from Transparent mode (by giving escape sequence from host after escape time) |
AT+RSI_TMODE2
|
Exited from transparent mode due to WiFi disconnected. |
AT+RSI_TMODE3
|
Exited from transparent mode due to TCP remote terminate from peer. |
AT+RSI_TMODE4
|
Exited from transparent mode due to TCP retries over terminated TCP connection. |
AT+RSI_TMODE5
|
Did not enter transparent mode due to invalid transparent mode params. |
AT+RSI_TMODE6
|
Did not enter transparent mode due to module doesn't have IP |
AT+RSI_TMODE7
|
Did not enter transparent mode as could not create requested socket. |
Error Codes
|
Failure. Possible error codes for this command are
0xFF87, 0x0021, 0x0025, 0x002C, 0xFFF8
.
|
Availability
This command can be given only after successful connection with AP, module should have a valid IP and there should be no prior sockets opened.
[ Go to top ]
rsi_hfc :: UART Hardware Flow Control
Description
This command is used to Enable/Disable UART hardware flow control. This command should be issued after initialization.
Command Format
at+rsi_hfc=<hfc_config>
Parameters
hfc_config (1 byte)
-
Enable or Disable UART hardware flow control, and select which pins are used for RTS/CTS.
-
0
- Disable hardware flow control -
1
- Enable hardware flow control using the following pins for RTS/CTS-
UART_RTS
=GPIO_7
-
UART_CTS
=GPIO_11
-
-
2
- Enable hardware flow control using the following pins for RTS/CTS-
UART_RTS
=GPIO_12
-
UART_CTS
=GPIO_15
-
-
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR
|
Failure |
Possible error codes for this command are
0x004E, 0x002C
Note!
Hardware flow control feature is not supported in Auto-Join/Auto-Create mode. To enable this feature, rsi_hfc should be called separately.
[ Go to top ]
rsi_socket_config :: Socket Configuration Parameters
Description
This command sets socket configuration parameters; configuration of sockets is recommended, but optional. Based on the socket configuration, the module will use the available buffers effectively. This command should be given after IP configuration command and before any socket creation.
Command Format
at+rsi_socket_config=<total_sockets>,<total_tcp_sockets>,<total_udp_sockets>,<tcp tx only sockets>,<total_tcp_rx_only_sockets>,<total_udp_tx_only_sockets>,<total_udp_rx_only_sockets>,<total_tcp_rx_high_performance_sockets>,<tcp_rx_window_size_cap>,<ack window division factor>
Parameters
total_sockets (1 byte)
- Desired total number of sockets to open.
total_tcp_sockets (1 byte)
- Desired total number of TCP sockets to open.
total_udp_sockets (1 byte)
- Desired total number of UDP sockets to open.
tcp_tx_only_sockets (1 byte)
- Desired total number of TCP sockets to open which are used only for data transmission.
tcp_rx_only_sockets (1 byte)
- Desired total number of TCP sockets to open which are used only for data reception.
udp_tx_only_sockets (1 byte)
- Desired total number of UDP sockets to open which are used only for data transmission.
udp_rx_only_sockets (1 byte)
- Desired total number of UDP sockets to open which are used only for data reception.
tcp_rx_high_performance_sockets (1 byte)
- Desired total number of high performance TCP sockets to open. High performance sockets can be allocated with more buffers based on the buffers availability. This option is valid only for TCP data receive sockets. Socket can be opened as high performance by setting high performance bit in socket create command.
tcp_rx_window_size_cap (1 byte)
-
Desired to increase the tcp rx window size. Following conditions must be met:
-
total_sockets <= Maximum allowed sockets(10)
-
(total_tcp_sockets + total_udp_sockets) <= total_sockets
-
(total_tcp_tx_only_sockets + total_tcp_rx_only_sockets) <= total_tcp_sockets
-
(total_udp_tx_only_sockets + total_udp_rx_only_sockets) <= total_udp_sockets
-
total_tcp_rx_high_performance_sockets <= total_tcp_rx_only_sockets
-
tcp_ack_div_factor (1 byte)
-
In case of high latency networks, in order to give TCP ACK with respective to the window size.
-
2
- tcp_rx_window_size_cap (default)
-
Note!
The maximum published window is based on available memory.
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR
|
Failure |
Possible error codes for this command are
0x0021, 0x0025, 0x002C, 0xFF6D
Availability
This command is valid when opermode is 0, 2 or 6.
Example
Command
at+rsi_socket_config=4,2,2,1,1,1,1,1,10
[ Go to top ]
rsi_trigger_auto_config :: Trigger Auto Configuration
Description
This command is used to trigger the Stored Auto Configuration. This command should only be issued after Card Ready response.
Command Format
at+rsi_trigger_auto_config
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR
|
Failure |
Possible Error codes are
0x0021, 0xFF36, 0xFF74, 0xFF35
Availability
This command is valid when opermode is 0, 2 and 6.
Note!
- To use this feature (Wait On Host) user need to set custom_feature_bit_map[20] in opermode command.
- This feature is valid only when store configuration feature is enabled.
-
If this feature is enabled, after "Loading Done" message
AT+RSI_TRIGGER_AUTO_CONFIG
is issued so that user can give eitherat+rsi_trigger_auto_config
command to trigger the auto configuration, (or) user can continue with the Opermode command.
[ Go to top ]
rsi_http_abort :: HTTP Abort
Description
This command is used to abort an HTTP/HTTPS GET/POST. This command should only be issued after Ipconf command.
Command Format
at+rsi_http_abort
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR
|
Failure |
Possible Error codes for this command are
0x0021, 0x0025, 0x002C
Availability
This command is valid when opermode is 0, 2 and 6.
[ Go to top ]
rsi_credentials :: HTTP Server Credentials
Description
This command is used to set the HTTP Server Credentials. This command should only be issued after Opermode command.
Command Format
at+rsi_credentials=<username>,<password>
username (31 byte)
- Username for HTTP Server. Default user name is 'username'.
password (31 byte)
- Password for HTTP Server. Default password is 'admin'.
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR
|
Failure |
Possible Error codes for this command are
0x0021, 0x0025, 0x00F1, 0x0015
.
Availability
This command is valid when opermode is 0, 2 and 6.
[ Go to top ]
rsi_ftp :: FTP Client
Description
This section explains different commands to use FTP client. This command should only be issued after Set IP Parameters command.
The following table describes the list of ftp command options.
FTP Command | Description |
---|---|
Create | Creates FTP objects. This should be the first command for accessing FTP. |
Connect | Connects to FTP server. |
Make Directory | Creates directory in a specified path. |
Delete Directory | Deletes directory in a specified path |
Change Working Directory | Changes working directory to a specified path. |
Directory List | Lists directory contents in a specified path. |
File Read | Reads the file |
File Write | Open file to write |
File Write Content | Writes content into file which is opened using File Write command. File content can be written in multiple chunks using this command. |
File Delete | Deleted file |
File Rename | Renames file |
Disconnect | Disconnects from FTP server.Once disconnect is done user can connect again using connect command. |
Destroy | Destroys FTP objects.Once destroy is given user cant use FTP unless it is created again. |
- Create should be called as a first command to use FTP.
- Once create is successful connect should be called to connect to a FTP server.
- After connection is successful host can issue remaining commands.
- After FTP operations host has to give disconnect command to disconnect from FTP server.
- Once disconnect is done, host can again connect to the FTP server using connect command.
- To destroy FTP objects host has to give destroy command. Once destroy is given user cant use FTP unless it is created again using create command.
Command Format
FTP client has different command types. Based on the command type next parameters will change.
at+rsi_ftp=<command_type>,<r](None)emaining parameters>
Following are available command types.
FTP Command | Type | Command Option |
---|---|---|
Create |
1
|
at+rsi_ftp=1
|
Connect |
2
|
at+rsi_ftp=2,<ip_version>,<ip_address>,<username>,<password>,<server_port>
where ...
|
- ip_version (1 byte). IP version = 4 | ||
- ip_address (4 bytes). IPv4 address for FTP server to connect. | ||
- username (31 bytes). Username of FTP server | ||
- password (31 bytes). Password of FTP server | ||
- server_port (4 bytes). FTP server port number | ||
Make Directory |
3
|
at+rsi_ftp=3,<directory_path>
|
- directory_path (51 bytes). Path of the directory to make. | ||
Delete Directory |
4
|
at+rsi_ftp=4,<directory_path>
|
- directory_path (51 bytes). Path of the directory to delete. | ||
Change Working Directory |
5
|
at+rsi_ftp=5,<directory_path>
|
- directory_path (51 bytes). Change of directory path. | ||
Directory List |
6
|
at+rsi_ftp=6,<directory_path>
|
- directory_path (51 bytes). Path of the directory for list. | ||
File Read |
7
|
at+rsi_ftp=7,<file_name>
|
- file_name (51 bytes). Name of the file to read. | ||
File Write |
8
|
at+rsi_ftp=8,<file_name>
|
- file_name (51 bytes). Name of the file to write. | ||
File Write content |
9
|
at+rsi_ftp_file_content=<end_of_file>,<content>
|
- end_of_file (1 byte). Represents whether end of file is reached or not. | ||
...
0
– More data is coming to write into file.
|
||
...
1
– Current chunk is the last chunk and no more data is coming.
|
||
- File_content(1400 byte). Content of the file to write. | ||
File Delete |
10
|
at+rsi_ftp=10,<file_name>
|
- file_name (51 bytes). Name of the file to delete. | ||
File Rename |
11
|
at+rsi_ftp=11,<file_name>,<new_file_name>
|
- file_name (51 bytes). Old name of the file. | ||
- new_file_name (51 bytes). New file name. | ||
Disconnect |
12
|
at+rsi_ftp=12
|
Destroy |
13
|
at+rsi_ftp=13
|
Passive mode |
14
|
at+rsi_ftp=14
|
Active mode |
15
|
at+rsi_ftp=15
|
Response
FTP Command Type: Directory List
AT+RSI_FTP_DIR_LIST=<command_type><more><length><data>
command_type (1 byte)
- This field contains value '6'.
more(1 byte)
-
Represents whether more response is pending from module or not.
-
0
– End of response -
1
– More response is pending
-
Length (2 bytes)
- Length of current chunk response
Data (variable bytes)
- Content of the directory list
FTP Command Type - File Read
AT+RSI_FTP_FILE=<command_type><more><length><data>
command_type (1 byte)
-
This filed contains value '7'.
more (1 byte)
- Represents whether more response is pending from module or not.
-
0
– End of response -
1
– More response is pending
length (2 bytes)
- Length of current chunk response
data (variable bytes)
- Content of the file
FTP Command Type - All others
OK <command_type>
Possible Error codes for this command are
0x0021, 0x0015, 0xFF6B, 0xBB01, 0xBB50, 0xBBD3, 0xBBD4, 0xBBD5, 0xBBD6, 0xBBD9, 0xBBDA, 0xBBDB, 0xBBDC, 0xBBDD, 0xBBDE
Availability
This command is valid when opermode is 0, 2 and 6.
Example : FTP File Read
at+rsi_ftp=1
at+rsi_ftp=2,4,192.168.0.150,admin,test123,201
at+rsi_ftp=7,file_read1.txt
at+rsi_ftp=12
at+rsi_ftp=2,4,192.168.0.150,admin,test123,201
at+rsi_ftp=7,file_read2.txt
at+rsi_ftp=12
at+rsi_ftp=13
Example: FTP File Write
at+rsi_ftp=1
at+rsi_ftp=2,4,192.168.0.150,admin,test123,201
at+rsi_ftp=8,file_write1.txt
at+rsi_ftp_file_content=0,This is start of sample data
at+rsi_ftp_file_content=1,This is end of sample data
at+rsi_ftp=12
at+rsi_ftp=13
[ Go to top ]
rsi_sntp :: SNTP Client
Description
This section explains different commands to use SNTP client. This command should only be issued after Set IP Parameters command.
The following table describes the list of sntp commands.
SNTP Command | Description |
---|---|
Create | Creates SNTP objects. This should be the first command to get time updates from the SNTP server |
Get Time | To Get the Current time in seconds |
Get Time-Date | To Get the Current time in Time-Date format |
Get Server Address | To Get the SNTP server Details. |
Get Server Info | To Get the SNTP server Details. |
Delete | To Delete the SNTP client. |
- Create should be called as a first command to use SNTP.
- Once create is successful Get Server Address should be called to get details of the SNTP server.
- Call Get Time to get the time in seconds from SNTP server.
- Call Get Time Date to get the Time Date format from SNTP server.
Note! SNTP broadcast method is currently not supported.
Command Format
SNTP client has different command types. Based on the command type next parameters will change.
at+rsi_sntp=<command_type>,[<ip_version>,<server_ip_address><sntp_method>]
where ...
command_type (1 byte)
-
1
- Create -
2
- Get Time -
3
- Get Time Date -
4
- Get Server Address -
5
- Delete -
6
- Get Server Info
ip_version (1 byte)
-
Set to
4
for IPv4
server_ip_address (4 byte)
- IP address of the SNTP server; only valid for the create command.
sntp_method (1 byte)
-
SNTP client mode
-
1
– For Broadcast -
2
– For Unicast
-
Response
SNTP command | Command Response |
---|---|
Create |
OK 1
|
Get Time |
OK <time in seconds>
|
Get Time Date |
OK <time in Date-Time format>
|
Get Server Address |
OK <ip version><ip address><sntp method>
where ...
|
ip_version
(1 byte) = IP version of the SNTP server.
|
|
ip_address
(4 bytes) = IP address of the SNTP server
|
|
sntp_method
(1 byte) = SNTP method of the server
|
|
Invalid SNTP server response |
AT+RSI_INVALID_SNTP_SERVER=<ip_version><ip_address><sntp_method>
where ...
|
ip_version
(1 byte) = IP version of the SNTP server
|
|
ip_address
(4 bytes) = IP address of the SNTP server
|
|
sntp_method
(1 byte) = SNTP method of the server
|
|
All remaining commands |
OK <command_type>
(1 byte) where Command_type is the type of SNTP command
|
Possible Error codes for this command are
0x0021, 0x0015, 0x0074, 0xBB10, 0xFF5F
.
Availability
This command is valid when opermode is 0, 2 and 6.
Example
Create SNTP client and read time, date, server address inf, then delete the client.
at+rsi_sntp=1,4,192.168.0.100,2
at+rsi_sntp=2
at+rsi_sntp=3
at+rsi_sntp=4
at+rsi_sntp=5
[ Go to top ]
rsi_mDNS :: mDNS/DNS-SD
Description
mDNS command resolves domain names to IP addresses. This section explains different commands to use mDNS and DNS-SD. This command should only be issued after Set IP Parameters command. Following table explains list of mDNS and DNS-SD commands and their description.
mDNSD Command | Command Type | Description |
---|---|---|
Init |
1
|
Creates mDNS Daemon . This should be the first command to initialize. |
Register Service |
3
|
To add a service/start service discovery. |
Deinit |
6
|
To Stop mDNS responder in module |
-
init
should be called as a first command to use mDNS/DNS-SD. -
Once
init
is successful, add a service using Register Service. - Reset more bit in Register Service command to indicate module to start mDNS/DNS-SD service.
- To stop mDNS/DNS-SD service use Deinit command.
Command Format
mDNS/DNS-SD client has different command types. Based on the command type, the following parameters will change accordingly.
at+rsi_mDNS=<command_type>,<remaining parameters>
Following are available command types.
mDNSD command | Command Type | Command Format |
---|---|---|
Initialize | 1 |
at+rsi_mDNS=1,<ip_version>,<ttl>,<buffer>
where ...
|
-
ip_version (1 byte).
IP version to use. Use
4
|
||
- ttl (2 bytes). Time To Live. Time in seconds for which service should be active | ||
- buffer (1000 bytes). Host name which is to used as host name in Type-A record. | ||
Register Service. | 3 |
at+rsi_mDNS=3,<port_number>,<ttl>,<more>,<buffer>
where ...
|
- port_number (2 bytes). Port number on which service which should be added | ||
- ttl (2 bytes). Time To Live, time in seconds for which service should be active | ||
-
more (1 byte).
Set to
0
if this is the last service which starts the mDNS service. Set to
1
if there are still more services to be added
|
||
-
buffer (1000 bytes).
This field contains strings separated by null character
0x00
. The fields are:
|
||
...
1
= Name to be added in Type-PTR record
|
||
...
2
= Name to be added in Type-SRV record (Service name)
|
||
...
3
= Text field to be added in Type-TXT record.
|
||
Deinitialize. | 6 |
at+rsi_mDNS=6
|
Note! For the Register Service command, only one service registration is currently supported.
Response
mDNS command | Response |
---|---|
Any mDNS Command |
OK <command_type>
|
Possible Error codes for this command are
0x0021, 0x0015, 0x0074, 0xFF2B
Availability
This command is valid when opermode is 0, 2 and 6.
Example
mDNSD Add Service
at+rsi_mDNS=1,4,600,http-wsc_obe.local.
at+rsi_mDNS=3,80,600,0,_http._tcp.local< NULL >wsc_obe._http._tcp.local< NULL >text_field
at+rsi_mDNS=6
Note!
- Currently registering only one service is supported
- Only IPv4 is supported for mDNS/DNS-SD service
-
< NULL >
is the ASCII character
0x00
- If the device joins a multicast group, mDNS is not supported
[ Go to top ]
rsi_otaf :: OTA Firmware Update
Description
Update the device firmware via TCP by establishing a TCP client connection with a remote TCP server.
Command Format
at+rsi_otaf=<ip_version>,<dest_ip_addr>,<server_port>,<chunk_number>,<rx_timeout>,<tcp_retry_count>
Parameters
ip_version (1 byte)
-
4
= IPv4
dest_ip_addr (4 bytes)
- IP address of the OTA server
server_port (4 bytes)
-
Port of the OTA server, ranging from
1024
to49151
except for30000
.
chunk_number (2 bytes)
-
Chunk number of the firmware to be updated; must start with
1
.
rx_timeout (2 bytes)
- Configure receive timeout
tcp_retry_count (2 bytes)
- Configure TCP retry count.
Response
After successful update, the firmware indicates success with the
RSI_FWUPSUCCESS
asynchronous message.
AT+RSI_FWUPSUCCESS
In addition "reach end of file" message is sent to the server.
On firmware update failure, the firmware gives the error message
ERROR <error_code><Chunk number where the update stopped>
User needs to give same command again from the chunk number specified here.
Possible error codes
0xBB01, 0xBB38
Example
at+rsi_otaf = 4, 192.168.0.100, 5001, 1, 100, 10
Response
OTA update success
AT+RSI_FWUPSUCCESS on success update.
OTA update failure
ERROR <Error_Code = 0x01 0xBB><number of chunk where update stopped = 0xD2 0x04>
After receiving this error, the host should send the command
at+rsi_otaf = 4,192.168.0.100, 5001, 1234, 100, 10
Note! It is recommended to finalise any pending network transactions, close any open sockets and disable powersave before starting a firmware update.
[ Go to top ]
rsi_httpota :: HTTP OTAF
Description
This command is used to transmit HTTP OTAF request from the module (which acts as a HTTP client) to a remote HTTP server. Any subsequent HTTP OTAF requests can only be issued after receiving the response of the previously issued HTTP OTAF request. After a new firmware file is successfully downloaded, teh module should be reset to load the newly downloaded firmware.
Command Format
at+rsi_httpota=<https_enable>,<http_port>,<username>,<password>,<host_name>,<address>,<url>,<extended_header>
Parameters
https_enable
-
https_enable[0]
enables HTTPS. -
https_enable[1]
enables NULL delimiter for HTTP buffer instead of comma. -
https_enable[2]
enables SSL TLS 1.0 version if HTTPS is enabled. -
https_enable[3]
enables SSL TLS 1.2 version if HTTPS is enabled. -
https_enable[4]
enables SSL TLS 1.1 version if HTTPS is enabled. -
https_enable[5]
enableshttp_post
data feature -
https_enable[6]
enables HTTP version 1.1 -
https_enable[7]
enables user defined http_content type in flags.
Note! If SSL is enabled, SSL TLS v1.0 and TLS v1.2 will be used. BIT(2) and BIT(3) are valid only when HTTPS is enabled.
http_port
- HTTP server port number. If this is not mentioned default port number 80 will be used.
username
- user_name for HTTP/HTTPS server authentication. Default user name is 'admin'.
password
- password for HTTP/HTTPS server authentication. Default password is 'admin'.
host_name
- Host name of the HTTP/HTTPS server.
ip_address
- IPv4/IPv6 address of HTTP/HTTPS server.
url
- requested URL.
extended_header
The extended header field provides a way to append user configurable header fields to the default HTTP/HTTPS header. To write extended header, user must use 'Data stuffing' mentioned separately and here in context of extended header. The extended header can have multiple header fields each ended by (
0xD 0xA
) but here our delimiter for whole 'at' command so use data stuffing and replace all (
0xD 0xA
) by
0xDB 0xDC
besides delimiter(). Follow the example given below.
Default http header contains the following:
-
Content Type
: Describes the type of file being sent e.g.HTML
,JSON
,GIF
, etc. -
Content Length
: Configures the length of the text provided.
The abovementioned fields are created in the header by the firmware.
Note!
-
Maximum supported length for (
username
,password
) together is 278 bytes. -
Maximum supported length for
buffer
is(872-(length of user_name+length of password))
bytes excluding delimiters. -
If
username
,password
, `hostname and extended http headers are not required, user should send empty string separated by delimiter. -
If content of any field contains a comma, then the
<NULL>
delimiter should be used.
Response
The device may give HTTP response in multiple chunks for a single HTTP OTAF request.
Result | Response | Description |
---|---|---|
Success |
AT+RSI_HTTPOTARSP=<update success>
|
After HTTP response, for user to understand the update status, the following response is added with "update Success" |
AT+RSI_HTTPRSP=<more><status_code><data_offset><data_length><update_success>
|
The string
AT+RSI_HTTPRSP
is in uppercase ASCII.
|
|
Failure |
ERROR <error_code>
|
Failure case with error code. There may be multiple reasons for update Failure, see Expected Error Codes Section |
AT+RSI_HTTPOTARSP=<update_failed>
|
Update Failure response |
Possible error codes for this command are
0x0015, 0x0021, 0x0025, 0x002C, 0xFF74, 0xBBF0
where ...
more (2 bytes)
-
This indicates whether more HTTP data for the HTTP OTAF request is pending or not.
-
0
– More data is pending. Further interrupts may be raised by the module till all the data is transferred to the Host. -
1
– End of HTTP data.
-
status code (2 bytes)
- Provided the HTTP status code as received in the response packet such as 200, 201, 404 etc. A status_code equal to 0 indicates that there was no HTTP header in the received packet, probably a continuation of the frame body received in the previous chunk.
offset (4 bytes)
- Reserved
data_len (4 bytes)
- data length in current chunk.
data (up to 1400 bytes)
- Actual http data.
Availability
This command is available when the module is configured in Operating Mode 0, 2 and 6.
Example for HTTP OTAF
Parameter | Value |
---|---|
https_enable
|
0 |
http_port
|
80 |
username
|
username |
password
|
password |
host_name
|
www.google.com |
ip_address
|
192.168.40.86 |
URL
|
/index.html |
extended HTTP header
|
ContentType:htmlÛÜ |
at+rsi_httpota=0,80,username,password,www.google.com,192.168.40.86,/index.html,ContentType:htmlÛÜ
Example for HTTPS OTAF
Parameter | Value |
---|---|
https_enable
|
1 |
http_port
|
443 |
username
|
username |
password
|
password |
host_name
|
www.google.com |
ip_address
|
192.168.40.50 |
URL
|
/index.html |
extended HTTP header
|
ContentType:htmlÛÜ |
at+rsi_httpota=1,443,username,password,www.google.com,192.168.40.50,/index.html,ContentType:htmlÛÜ
[ Go to top ]
rsi_cfgsave :: Store Configuration Parameters
Description
This command is used to save parameters into non-volatile memory which are used either to join an Access point (auto-join mode) as a client or create an Access point (auto-create mode). This command should be issued after IP config is complete.
The feature is valid in operating modes 0, 2 and 6.
Command Format
at+rsi_cfgsave
Note!
- If the internal TCP/IP Stack is used, this command must be issued after ipconfig command.
- If the TCP/IP stack is bypassed, then this command can be issued after the join command.
- The parameters of the following commands are saved when rsi_cfgsave is called: rsi_cfgenable, rsi_opermode, rsi_band, rsi_scan, rsi_join, rsi_per, rsi_ipconf, rsi_apconf, rsi_eap, rsi_psk, rsi_setmac, rsi_antenna, rsi_wepkey, rsi_bgscan, rsi_roam_params, rsi_rejoin_params, rsi_setregion rsi_trans_mode_params, rsi_tcp, rsi_multicast_filter, rsi_pwmode, rsi_wmm_config, rsi_ht_caps, rsi_timeout
Result Code | Description |
---|---|
OK
|
Success |
ERROR
|
Failure |
Possible error codes for this command are
0x0021, 0x0025, 0x002C
.
Availability
This command is valid when opermode is 0, 1, 2 or 6.
[ Go to top ]
rsi_store_server_ip_port :: Store Server IP and Port Parameters
Description
This command is used to save (up to 4) sets of IP addresses and ports into non-volatile memory, which can be used by the TCP command to establish connections. It should be issued only after opermode is set. This command will store the given destination IP address and the port into the flash at the given index.
The feature is valid in operating modes 0, 2 and 6.
Command Format
at+rsi_store_server_ip_port=<index>,<destination_ip>,<port>
Note!
- The parameters of the following commands are saved when rsi_store_server_ip_port is called.
- The index value can only range from 0 to 3.
Result Code | Description |
---|---|
OK
|
Success |
ERROR
|
Failure |
Possible error codes for this command are
0x0021
.
Availability
This command is valid when opermode is 0, 1, 2 or 6.
[ Go to top ]
rsi_cfgenable :: Enable Auto-join / Auto-Create
Description
This command is used to enable or disable the feature of auto-join or auto-create on power up. This command should be issued after Opermode.
Command Format
at+rsi_cfgenable=<cfg_enable>
Parameters
cfg_enable (1 byte)
-
0
- Disables auto-join or auto-create -
1
- Enables auto-join or auto-create
Response
Result Code | Description |
---|---|
OK
|
For response payload parameters description, see Store configuration parameters |
ERROR
|
Failure |
If user tries to give any other command during autojoin then user gets error 0x002C. To avoid this, user have to disable auto_join feature by giving rsi_cfgenable=0\r\n and give other commands.
Possible error codes for this command are
0x0021, 0x0025, 0x002C
.
Availability
This command is valid when opermode is 0, 2 and 6.
[ Go to top ]
rsi_cfgget : Get Stored Configuration
Description
Gets configuration values used in auto-join or auto-create modes. The config values are stored in non-volatile flash memory. This command should be given after successful WLAN connection.
Command Format
at+rsi_cfgget?
Response
Result Code | Description |
---|---|
OK
|
For response payload parameters description, refer to the following section, Store User Configuration |
ERROR | Failure. |
Note!
- Transparent mode parameters are only valid in UART interface in AT command mode only.
- After a firmware update, a saved configuration may be lost if the config checksum fails.
- If the CUSTOM_FEAT_HTTP_SERVER_CRED_TO_HOST [25th bit] is not set in custom_feature_bit_map , then http params [http_credentails_avail, http_username, http_password] will not be sent to host and the size of payload will get reduced by 63 bytes.
For response payload parameters description, refer to sectionStore configuration structure parameters.
Possible error codes for this command are
0x0021, 0x0025, 0x002C
.
Availability
This command is valid when opermode is 0, 2 and 6.
[ Go to top ]
rsi_usercfg :: Store User Configuration
Description
Set the stored configuration values for auto-join and auto-create modes. This command can be given at any time after opermode is given.
Command Format
at+rsi_usercfg=<payload_length>,<payload>
Parameters
payload_length
- Payload length is fixed to 1294.
Payload :
- Below are the config parameters.
cfg_enable (1byte)
-
0x00
- auto-join or auto-create modes are disabled -
0x01
- auto-join or auto-create modes are enabled
opermode (4 bytes)
- Refer opermode
feature_bit_map (4 bytes)
- Refer bit map
tcp_ip_feature_bit_map (4 bytes)
- To enable TCP/IP related features. Refer IP feature bit map
custom_feature_bit_map (4 bytes)
- This bitmap is used to enable following custom features. Refer custom feature bit map(None)
band (1 byte)
-
0x00
- Module configured to operate in 2.4 GHz -
0x01
- Module configured to operate in 5 GHz -
0x02
- Dual band(2.4 GHz and 5GHz). Dual band is valid in station mode.
scan_feature_bitmap (1 byte)
- scan feature bitmap. Refer feature bitmap
join_ssid (34 bytes)
-
SSID of the AP configured in auto-join or in auto-create mode. If the actual length is not 34 bytes,
0x00
filler bytes are appended to make the length 34 bytes.
user_data_rate (1 byte)
- Data rate to be configured in the module.
Please refer the PER Mode command section, for the data rates supported by the module.
uTXPower (1 byte)
-
Tx power to be configured in the module.
-
At 2.4GHz
-
0
– Low power (7 +/- 1) dBm -
1
– Medium power (10 +/- 1)dBm -
2
– High power (18 +/- 2)dBm
-
-
At 5 GHz
-
0
– Low power (5 +/- 1) dBm -
1
– Medium power (7 +/- 1) dBm -
2
– High power (12 +/- 2) dBm
-
-
At 2.4GHz
FIPS_key_type_stored (1 byte)
- FIPS key type
Uchannel (1 byte)
- Channel
scan_ssid_len (1 byte)
- scan ssid length
FIPS_key_restore (1byte)
- FIPS magic no
csec_mode (1byte)
-
Security mode of access point to connect in auto join mode or security mode of devut in auto create mode. This variable is used to set the security mode of the Access point the module connects to.
-
0
– Open mode -
1
– WPA security -
2
– WPA2 Security -
7
– WPA3 Security
-
psk (64 bytes)
- Pre-shared key of the access point to which module wants to associate in auto-join or auto-create mode. Filler bytes of 0x00 are added to make it 64 bytes if the original PSK is less than 64 bytes.
scan_ssid (34bytes)
- SSID of the AP to be scanned in auto-join. If the actual length is not 32 bytes, 0x00 filler bytes are appended to make the length 32 bytes.
scan_cnum (1 byte)
- Channel number to be scanned in auto join mode. Refer to the PER Mode command section for the supported channels in 2.4GHz and 5 GHz band
dhcp_enable (1 byte)
-
0x00
- DHCP client is disabled in module (auto-join mode) -
0x01
- DHCP client is enabled in module (auto-join mode)
ip (4 bytes)
- Static IP configured in the module in auto-join or auto-create mode. For auto-join mode, this is valid when dhcp_enable is 0.
subnet_mask (4 bytes)
- Subnet mask,this is valid only if dhcp_enable is 0.
default_gateway (4 bytes)
- Default gateway, this is valid only if dhcp_enable is 0.
eap_method (32 bytes)
- Should be one of among TLS, TTLS, FAST or PEAP, ASCII character string used to configure the module in Enterprise security mode
inner_method (32 bytes)
- Should be fixed to MSCHAPV2, ASCII character string. This parameter is used to configure the module in Enterprise security mode.
user_identity (64 bytes)
- User ID in enterprise security mode.
password (128 bytes)
- password configured for enterprise security. Refer to the parameter password in the command at+rsi_eap . Filler bytes of 0x00 are used to make the length 128 bytes, of the original length is less than 128 bytes.
go_intent (2 bytes)
-
GO Intent Value
0-15
for P2P GO or client,16
for Soft AP
device_name (64 bytes)
- Name of the device
operating_channel (2 bytes)
- The channel we are operating after becomes Group owner.
ssid_postfix (64 bytes)
- Postfix SSID
psk_key (64 bytes)
- Psk of the device
pmk (32 bytes)
- PMK key
channel_no (2 bytes)
- The channel in which the AP would operate. Refer to the PER Mode command section for more details on the channels supported by the module. A value of '0' is not allowed.
ssid (34 bytes)
- SSID of the AP to be created, SSID should be null terminated char array.
security_type (1 byte)
-
Security type of AP to be configured
-
0
- Open -
1
- WPA -
2
- WPA2
-
encrypt_mode (1 byte)
-
Encryption type
-
0
- Open -
1
- TKIP -
2
- CCMP
-
psk (64 bytes)
- PSK of the AP in security mode. If the AP is in Open mode, this parameter can be set to '0'.
beacon_interval (2 bytes)
- Beacon interval of the AP in milliseconds. Allowed values are integers from 100 to 1000 which are multiples of 100.
dtim_period (2 bytes)
- DTIM period to be configured in AP mode
ap_keepalive_type (1 byte)
-
This is the bitmap to enable AP keep alive functionality and to select the keep alive type.
-
BIT[0] enable/disable keep alive functionality.
-
0
- Disable keep alive functionality. -
1
- Enable keep alive functionality.
-
-
BIT[1] select AP keep alive method.
-
0
- Default keep alive functionality i.e disconnect the station if there is no wireless exchanges from station with in ap_keepalive_period. -
1
- Enable null data based keep alive functionality.
-
-
BIT[0] enable/disable keep alive functionality.
ap_keepalive_period/ap_keepalive_counter (1byte)
- This is the period after which AP will disconnect the station if there are no wireless exchanges from station to AP. Keep alive period is calculated in terms of 32 multiples of beacon interval i.e. if there are no wireless transfers from station to AP with in (32 x beacon_interval x keep_alive_period) milliseconds time period, station will be disconnected. If null data based method is selected, AP checks the connectivity of station by sending null data packet. If station does not acknowledge the packet, that station will be disconnected.
max_sta_support (2 bytes)
- Max number of clients supported by the AP
-
The maximum number of clients is configured using custom feature bitmap BIT[13:16] and extended custom feature bitmap BIT[15] according to the following
-
ext custom feature bitmap BIT[15] = 0
:-
max_sta_support
=custom feature bitmap BIT[13:16]
-
-
ext custom feature bitmap BIT[15] = 1
:-
max_sta_support
=(custom feature bitmap BIT[13:16] + 1) * 2
withBIT[16] = 0
-
-
module_mac (6 bytes)
-
MAC address to be set for module. To use the MAC address programmed into the module, use the mac address
00:00:00:00:00:00
.
antenna_select (2 bytes)
-
Configures which antenna is used
-
0
– Inbuilt antenna -
1
– u.FL connector
-
fips_bypass_mode (2bytes)
- FIPS bypass mode will be used for storing FIPS mode value.
wep Index (2 bytes)
-
In some APs, there is an option to provide four WEP keys.
-
0
- Key 1 will be used. -
1
- Key 2 will be used. -
2
- Key 3 will be used. -
3
- Key 4 will be used.
-
wep key (4 * 32 bytes)
- Actual keys. There are four wep keys, each of size 32 bytes. There are two modes in which a WEP key can be set in an Access Point: WEP (hex) mode and WEP (ASCII) mode. The module supports WEP (hex) mode only.
dhcpv6_enable (2 bytes)
- DHCPv6 mode.
prefix_length (2 bytes)
- Prefix length of IPv6 address.
ip6 (16 bytes)
- IPv6 address of module.
Dgw6 (16 bytes)
- IPv6 address of default router (gateway).
tcp_stack_used (1 byte)
-
Shows which TCP stack is used. Possible values are:
- 0x01- IPv4 Stack
bgscan_magic_code (2 bytes)
- This magic code is used to validate the bgscan parameter present in flash memory.
bgscan_enable (2 bytes)
-
Enable/Disable bgscan
-
0
– Disable -
1
- Enable
-
bgscan_threshold (2 bytes)
- This is the threshold in dBm to trigger the bgscan. After bgscan periodicity, If connected AP RSSI falls below this then bgscan will be triggered.
rssi_tolerance_threshold (2 bytes)
- This is difference of last RSSI of connected AP and current RSSI of connected AP. Here last RSSI means RSSI calculated at last time beacon received and current RSSI is RSSI calculated at current beacon received. If this difference is more than rssi_tolerance_threshold and current RSSI is greater than bgscan_threshold then bgscan will be triggered irrespective of periodicity.
bgscan_periodicity (2 bytes)
- This is the time period in seconds to trigger bgscan if RSSI of connected AP is greater than the given bgscan_threshold.
active_scan_duration (2 bytes)
- This is active scan duration in ms.
passive_scan_duration (2 bytes)
- This is passive scan duration in ms.
multi_probe (1 byte)
- If set to one then module will send two probe request one with specific SSID provided during join command and other with NULL ssid (to scan all the access points).
chan_bitmap_magic_code (2 bytes)
-
This variable is used to validate the given scan channel bitmaps. If magic code is
0x4321
, then only the scan channel bitmaps are considered as valid.
scan_chan_bitmap_stored_2_4_GHz (4bytes)
- Channel bitmap for scanning in set of selective channels in 2.4 GHz band.
scan_chan_bitmap_stored_5_GHz (4bytes)
- Channel bitmap for scanning in set of selective channels in 5 GHz band.
roam_magic_code (2 bytes)
- This magic code is used to validate the roaming parameters stored in the flash memory.
roam_enable (4 bytes)
-
Enable/disable roaming.
0
- Disable1
- Enable
roam_threshold (4 bytes)
-
If connected AP RSSI falls below the
roam_threshold
, the module will search for a new AP from background scanned list.
roam_hysteresis (4 bytes)
- If module found new AP with same configuration (SSID, Security etc.,) and if (connected_AP_RSSI - Selected_AP_RSSI ) is greater than roam_hysteresis, then it will try to roam to the new selected AP.
rejoin_magic_code (2 bytes)
- This magic code is used to validate the rejoin parameters stored in the flash memory.
rejoin_max_retry/rsi_max_try (4 bytes)
- This is a 4 byte unsigned integer. This represents the number of attempts to join before giving up the error. If the number of rejoin attempts is 0, the module will try to rejoin indefinitely.
rsi_scan_interval (4 bytes)
- This is 4 byte signed integer. This is time interval in second for the subsequent retry.
rsi_beacon_missed_count (4 bytes)
- This is 4 byte signed integer. This is the beacon missed count that module used to declare module connection status. If module found continuous beacon missed is greater than or equal to this value, then it will declare connection as disconnected and will start the rejoin process again.
rsi_first_time_retry_enable (4 bytes)
- This is a 4 byte unsigned integer. If this is 1, the module will try to connect for the first time itself for join. Number of attempts and scan interval may be configured by rejoin_max_attempts and scan_interval respectively.
region_request_from_host (1 byte)
-
If this variable is 1, region of the module is set either in auto join or auto create mode based on the opermode.
-
0
– Disable set region in Auto create or Auto join mode -
1
– Enable set region in Auto create or Auto join mode
-
rsi_region_code_from_host (1 byte)
- Enable/Disable set region code from user.
-
If opermode is
0
or2
:-
0
- Disable. Use the region information from beacon (country IE) -
1
- Enable. Use the region information from user command
-
-
If opermode is 6:
-
0
- Disable. Get the region information based on region code from internal memory
-
region_code (1 byte)
-
If the region code is given as
0
, US domain is considered by default and device is configured according to the US domain regulations.-
1
- US domain -
2
- Europe domain -
3
- Japan Domain -
5
- Korea Domain
-
Note! All the magic codes should be 0x4321. Firmware validates the respective details if and only if the magic code is matching. Below given parameters are transparent mode specific.
transparent_mode_enable (2 bytes)
- If transparent mode magic word (0x5C5C) is given, transparent mode is enabled after successful connection/creation of socket.
packet_len (2 bytes)
- This is the number of bytes (payload) with which network frames are formed and transmitted (bytes/data received within gap timeout) over TCP/IP network.
escape_char (1byte, ASCII)
- Special character provided which will be detected and its 3 character sequence will have special meaning depending of time of arrival.
gap_time (2 bytes)
- Maximum time gap between bytes received from host within which escape characters are not expected/checked.
frame_time (2 bytes)
-
The timeout period for framing network packet from the bytes received. if this timeout is occurred, bytes available in Rx buffers will be forced to form a network frame and queue it for transmission. Ideally
framing period = 2 * gap time
.
escape_time (2 bytes)
-
If escape character sequence is received after framing timeout and within escape time, then module breaks out of transparent mode, making GPIO low. Ideally
escape time = 2 * framing period
.
ip_version(2 bytes)
-
IP version used in transparent mode.
-
4
– IPv4
-
nsocket_type (2 bytes)
-
This gives the protocol which is to be used in transparent mode (TCP/UDP/ LTCP/LUDP).
-
0
- TCP -
2
– LTCP -
4
– LUDP
-
stLocalPort (2 bytes)
- Station Local port number to be used in transparent mode.
dst_port (2 bytes)
- Remote port number to which module need to communicate with in transparent mode.
ipv4_address/ipv6_address (16 bytes)
- IP(v4/v6) of remote server which is to be communicated with from module (in client mode).
max_count (2 bytes)
- maximum no of clients allowed in transparent mode is fixed to 1, so default value should be 1.
TOS (4 bytes)
- Type of service.
ssl_enabled (1 byte)
-
If ssl socket is to be used then corresponding parameters are provided here.
-
0
- Open TCP socket. -
1
- Open SSL client socket. -
5
- Open SSL socket with TLS 1.0 version. -
9
- Open SSL socket with TLS 1.2 version.
-
ssl_ciphers (1 byte)
-
If ssl socket is to be used then corresponding ciphers used are provided here.
-
BIT(1) = 2: TLS_RSA_WITH_AES_256_CBC_SHA256
-
BIT(2) = 4: TLS_RSA_WITH_AES_128_CBC_SHA256
-
BIT(3) = 8: TLS_RSA_WITH_AES_256_CBC_SHA
-
BIT(4) = 16: TLS_RSA_WITH_AES_128_CBC_SHA
-
BIT(5) = 32: TLS_RSA_WITH_AES_128_CCM_8
-
BIT(6) = 64: TLS_RSA_WITH_AES_256_CCM_8
-
multicast_magic_code (2 bytes)
- This magic code is used to validate the multicast parameters stored in the flash memory.
multicast_bitmap (2 bytes)
-
There are two bytes in the command which represent 2 parts. Lower order byte represents the command type (cmd as mentioned below) and higher order byte is the hash value (6 Bits) generated from the desired multicast mac address (48 Bits) using hash function. Refer to
mcast_bitmap_frame
.
powermode_magic_code (2 bytes)
- This magic code is used to validate the power mode parameters stored in the flash memory.
powermode (1 byte)
-
powermode variable configures the powersave mode of the module.
-
1
– powersave Mode 1 -
2
– powersave Mode 2 -
3
– powersave Mode 3
-
ulp_mode (1 byte)
-
1
- Low power mode. -
2
- Ultra low power mode with RAM retention. -
3
- Ultra low power mode without RAM retention. - Refer section Powersave operation for detail description about powersave operation.
wmm_ps_magic_code (2 bytes)
- This magic code is used to validate the WMM powersave parameters stored in the flash memory
wmm_ps_enable (1 byte)
-
To enable or disable WMM
-
0
- Disable -
1
- Enable
-
wmm_ps_type (1 byte)
-
WMM PS type
-
0
- Tx Based -
1
- Periodic
-
wmm_ps_wakeup_interval (4 bytes)
- Wakeup interval in milliseconds.
wmm_ps_uapsd_bitmap (1 byte)
- 0 to 15 possible values.
-
wmm_ps_uapsd_bitmap[0]
Access category: Voice -
wmm_ps_uapsd_bitmap[1]
Access category: Video -
wmm_ps_uapsd_bitmap[2]
Access category: background -
wmm_ps_uapsd_bitmap[3]
Access category: Best effort U-APSD -
wmm_ps_uapsd_bitmap[4:7]
All set to0 / Don't care
listen_interval (4 byte)
- This is valid only if BIT(1) in join_feature_bitmap is set. This value is given in Time units (1024 milliseconds). This parameter is used to configure maximum sleep duration in powersave.
Listen_interval_dtim (1 byte)
-
This parameter is valid only if BIT(1) is set in the join_feature_bitmap and valid listen interval is given in join command. If this parameter is set, the module computes the desired sleep duration based on listen interval (from join command) and its wakeup align with Beacon or DTIM Beacon (based on this parameter).
-
0
- module wakes up before nearest Beacon that does not exceed the specified listen interval time. -
1
- module wakes up before nearest DTIM Beacon that does not exceed the specified listen interval time.
-
ext_custom_feature_bit_map (4 bytes)
- Refer ext custom feature bit map
private_key_password (82 byte)
-
Private Key password is required for encrypted private key, format is like
"\"12345678\""
join_bssid (6 bytes)
- This contains BSSID of selected AP.
join_feature_bitmap (1 byte)
- Refer join feature bitmap
is_11n_ap (2 bytes)
-
Enable/Disable 11n capabilities in AP Mode.
-
0
- Disable -
1
- Enable
-
ht_caps (2 bytes)
- HT caps bitmap corresponding to high throughput capabilities. Refer ht_caps_bitmap
ht_caps_magic_word (2 bytes)
- Expected value of magic word is 0x4321. Otherwise, parameter ht_caps would get discarded
fast_psp_enable (1 byte)
- When fast psp is enabled, module will disable powersave for monitor interval of time for each data packet received or sent.
monitor_interval (2 bytes)
- This is time in milliseconds to keep module in wakeup state for each Tx or Rx traffic sent or received respectively. Default value for this is 50 ms.
request_timeout_magic_word (2 bytes)
- Magic word of request time out.
timeout_value (2 bytes )
- Timeout value in ms (default 300ms).
timeout_bitmap (4 bytes)
- BIT[0] sets timeout for association and authentication request.
dhcp_ap_enable (1 byte)
- DHCPv4 mode enable or disable.
ap_ip (4 bytes)
- Module IP address
ap_sn_mask (4 bytes)
- Sub-net mask
ap_dgw (4 bytes)
- Default gateway
dhcpv6_ap_enable (2 bytes)
- DHCPv6 mode enable or disable.
ap_prefix_length (2 bytes)
- prefix length of IPv6 address.
ap_ip6 (16 bytes)
- IPv6 address of module.
ap_dgw6 (16 bytes)
- IPv6 address of default router.
ext_tcp_ip_feature_bit_map (4 bytes)
- Refer tcp ip feature bit map
http_credentials_avail (1 byte)
- Reserved.
http_username (31 bytes)
- HTTP server username.
http_password (31 bytes)
- HTTP server password.
Result Code | Description |
---|---|
OK
|
Success. |
ERROR
|
Failure. |
Possible error codes for this
0x003D, 0x0021, 0x002C, 0x0025, 0x0015
.
Availability
This command is valid when opermode is 0, 2 and 6.
Response
OK
0x4F 0x4B 0x0D 0x0A
Example
at+rsi_usercfg=1294,<Example payload hex format>
See, Example AT Command Sequence for an example.
Example flow for Connecting to a pre-Configured AP
Example flow for Creating a pre-configured AP
[ Go to top ]
rsi_get_wlan_stats :: WLAN Statistics
Description
This command is used to query for WLAN statistics of the module. If this command is issued immediately after opermode command, all the stats will be empty. It should be issued after WLAN connection. This command is supported in WLAN only mode.
Command Format
at+rsi_get_wlan_stats?
Parameters
operating_mode (1 byte)
- Module is configured in client mode.
dtim_period (1 byte)
- The DTIM interval
- (1-255) means the period of time to wake up wireless clients from sleep mode.
ideal beacon info (2 Bytes)
- The number of beacons without multicast and broadcast indication in TIM field.
busy beacon info (2 bytes)
- The number of beacons with multicast and broadcast indication in TIM field.
beacon interval (2 bytes)
- Beacon Broadcast interval is the time lag between each of the beacons sent by the router or access points.
Response
Result | Description |
---|---|
OK <Wi-Fi stats>
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0021, 0xFF82
.
Availability
This command is available when the module is configured in Operating Mode 0, 2.
Example
at+rsi_get_wlan_stats?
Response
OK\0x00\0x01\0x0b\0x00\0x0c\0x00\0xc8\0x00
4f 4b 00 01 0b 00 0c 00 c8 00 0d 0a
[ Go to top ]
rsi_host_rtc_time :: Set RTC Time
Description
This command is used to set/initialize the real time clock of the module from the host. This command can be issued after Opermode command. To enable this feature, set
custom feature bitmap BIT[28]
.
Command Format
at+rsi_host_rtc_time=<second>,<minute>,<hour>,<day>,<month>,<year><weekday>
Parameters
second
- The current real time clock seconds.
minute
- The current real time clock minute.
hour
-
The current real time clock hour in 24h format:
0, 1, 2, ..., 23
day
- The current real time clock day.
month
-
The current real time clock month
-
0 = January
-
1 = February
-
...
-
11 = December
-
year
- The current real time clock year
weekday
- The current real time clock week day.
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0021, 0x0025
Availability
This command is available in all modes.
Example
The following example configures the module rtc time to
APRIL 2 10:10:10 2018 6
at+rsi_host_rtc_time=10,10,10,2,3,2018,6
Response
OK
0x4F 0x4B 0x0D 0x0A
[ Go to top ]
rsi_get_rtc_time :: Get RTC Time
Description
This command is used to get the real time clock of the module from the host. This command should only be used after
rsi_host_rtc_time
and
rsi_init
commands.
Command Format
at+rsi_get_rtc_time?
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0021, 0x0025
Availability
This command is available in all modes.
Example
The following example gets the configured module rtc time.
at+rsi_get_rtc_time?
Response
OK <tm_sec><tm_min><tm_hour><tm_mday><tm_mon><tm_year ><tm_wday>
[ Go to top ]
rsi_feat_frame :: Set Feature Frame
Description
This command is used to select Internal RF type or External RF type and Clock Frequency. This command should be issued after opermode command.
Command Format
at+rsi_feat_frame=<pll_mode>,<rf_type>,<wireless_mode>,<enable_ppp>,<afe_type>,<features_enable>
Parameters
pll_mode (1 byte)
-
0
-PLLMODE0
. Used to generate clocks for 20 MHz bandwidth operation. -
1
-PLLMODE1
. Reserved. -
2
-PLLMODE2
. Reserved
rf_type (1 byte)
-
1
- Internal RF - Only applies to 2.4 GHz operation
- Always set to 1
wireless_mode (1 byte)
-
0
- LP chain disable -
12
- Enable LP chain for PER mode
enable_ppp (1 byte)
-
0
- Disable per packet Tx programming -
1
- Enable per packet Tx programming mode 1 -
2
- Enable per packet Tx programming mode 2
afe_type (1 byte)
-
1
- Internal AFE - Always set to 1
feature_enables (4 bytes)
-
BIT[0]
- Enable Preamble duty cycling. -
BIT[4]
- Enable LP chain for stand-by associate mode. -
BIT[5]
- Enable hardware beacon drop during powersave. - Remaining bits are not user configurable
Note!
- 40 MHz bandwidth is not supported.
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0021, 0xFF74
.
Availability
This command is available in all modes.
Example
at+rsi_feat_frame=0,1,0,0,1
Response
OK
0x4F 0x4B 0x0D 0x0A
[ Go to top ]
rsi_get_ram_dump :: Get RAM Dump
Description
This command is used to get ram dump of the module for a given address and offset. This command should be issued after Opermode.
Command Format
at+rsi_get_ram_dump=<address><length>
address (4 bytes)
- RAM address in RS9116 module. RAM Address starts from 0.
length (4 bytes)
Chunk length to read from RS9116 module. Maximum chunk length is 384Kb (in WiSeConnect mode).
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0021, 0x003e
Availability
This command is available in all modes.
Example
at+rsi_get_ram_dump=0,4096
Response
OK
0x4F 0x4B 0x0D 0x0A
[ Go to top ]
rsi_filter_bcast :: Broadcast Filter
Description
Sets the threshold to ignore broadcast packets when the client is in powersave mode. This is used to achieve low power in standby associated mode.
Command Format
at+rsi_filter_bcast=<beacon_drop_threshold><filter_bcast_in_tim><filter_bcast_tim_until_next_cmd>
Parameters
beacon_drop_threshold (2 bytes)
- LMAC beacon drop threshold (ms). The amount of time to wait to receive a full beacon. Default value is 5000 ms.
filter_bcase_in_tim (1 byte)
-
If this bit is set, then from the next dtim any broadcast data pending bit in TIM indicated will be ignored. Used in concert with
filter_bcast_tim_till_next_cm
-
0
- Disable -
1
- Enable
filter_bcast_tim_until_next_cmd (1 byte)
-
0
-filter_bcast_in_tim
is valid until disconnect of the STA -
1
-filter_bcast_in_tim
is valid until next update by giving the same command
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0021
Availability
This command is available in all modes.
Example
at+rsi_filter_bcast=2,1,1
Response
OK
0x4F 0x4B 0x0D 0x0A
[ Go to top ]
rsi_buf_alloc :: Configure Tx-Rx Buffer Ratio
Description
This command is used to configure the Tx, Rx and global buffer ratio. This command should be issued after Opermode.
Command Format
at+rsi_buf_alloc=<dynamic_tx_pool><>dynamic_rx_pool<dynamic_global_pool>
Parameters
dynamic_tx_pool (1 byte)
- Configure the total number of parts of buffer pool for Tx buffers
dynamic_rx_pool(1 byte)
- Configure the total number of parts of the buffer pool for Rx buffers
dynamic_global_pool (1 byte)
- Configure the total number of parts of the buffer pool for global buffers
Note! The summation of the above three ratios should equal 10 and the ratio should be in decimal value.
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0021
Availability
This command is available in all modes.
Example
at+rsi_buff_alloc=1,1,1
Response
OK
0x4F 0x4B 0x0D 0x0A
[ Go to top ]
rsi_antenna :: Antenna Selection
Description
This command is used to select the antenna. This command must be given after
rsi_init
.
Command Format
at+rsi_antenna=<antenna>
Parameters
antenna (1 byte)
-
0
- RF_PORT2/Internal Antenna is selected. -
1
- RF_PORT1/uFL connector is selected.
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error codes are
0x0021, 0x002C
Availability
This command is available in all modes.
Example
at+rsi_antenna=1
Response
OK
0x4F 0x4B 0x0D 0x0A
[ Go to top ]
rsi_gpioconf :: Configuring GPIOs
Description
Configures GPIOs. This command must be issued after
rsi_opermode
command.
Command Format
at+rsi_gpioconf=<gpio_type>,<mode>,<pin_num>,<config_values>,<value>
Parameters
gpio_type
-
0
- NWP GPIO -
1
- ULP_GPIO -
2
- UUPL_GPIO
mode
-
0
- Configure GPIO -
1
- Set GPIO Value -
2
- Get GPIO Value
pin_num
-
NWP GPIO number. Valid values
0 - 63
, ifgpio_type = 0
-
ULP GPIO number. Valid values
0 - 15
, ifgpio_type = 1
-
UULP GPIO numbers. Valid values
0, 2
, ifgpio_type = 2
Note!
It is not recommended to configure
ULP_GPIO6
as it is used for WOWLAN feature.
config_values
- This parameter is invalid if mode is 1 or 2
-
BIT[0:1] - Drive strength
- 0 - 2 mA
- 1 - 4 mA
- 2 - 8 mA
- 3 - 12 mA
- BIT[3] - Reserved
-
BIT[4] - I/O mode
- 0 - Output mode
- 1 - Input mode
- BIT[5] - Reserved
-
BIT[6:7] - Type
- 0 - Hi-Z
- 1 - Pull down
- 2 - Pull up
- 3 - Reserved
value
-
GPIO value to drive
-
0
- Drive Low -
1
- Drive High
-
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Example
at+rsi_gpioconf=1,0,5,0,1 // Set ULP_GPIO_5 low
at+rsi_gpioconf=1,1,5,0,1 // Set ULP_GPIO_5 high
at+rsi_gpioconf=1,2,5,0,0 // Get status of ULP_GPIO_5
at+rsi_gpioconf=1,0,5,0,1 // Set drive strength of ULP_GPIO_5 to 8 mA
Result Code | GPIO status |
---|---|
OK\0x00 | LOW |
OK\0x01 | HIGH |
Note! The GPIO must be configured before issuing set and get mode commands.
rsi_memrd:: Performs memory read from the module.
Description
This command is used to read memory content from the module for a given address and length.This command can be issued anytime before or after
rsi_opermode
command.
Command Format
at+rsi_memrd=<address><length>
address (4 bytes)
- Address in RS9116 module.
length (4 bytes)
Length to read from RS9116 module.
Note! Maximum length 4 bytes.
Response
Result Code | Description |
---|---|
OK
|
Success |
ERROR <Error code>
|
Failure |
Possible error code are
0x003e
Availability
This command is available in all modes.
Example
at+rsi_memrd=0x4000437,1
Response
OK
4F 4B 14 0D 0A
From above response 14 is for 1.4 silicon version
rsi_mqtt :: MQTT Client
Description
This section explains different commands to use MQTT client. This command should only be issued after Set IP Parameters command.
Note!
-
To enable this feature, set
ext_tcp_ip_feature_bit_map[17] = 1
in the opermode command. -
ext_tcp_ip_feature_bit_map[31] = 1
in tcp_ip_feature_bit_map. - After MQTT connection, only 9 sockets can be opened.
- MQTT is supported only when the module is configured as a Station instance.
MQTT Command | Description |
---|---|
Init |
This command creates MQTT objects. This should be the first command for accessing MQTT. TCP level connection is established in this command. This command has to be issued after the
ipconfig
command.
|
Connect | This command is used to Connect to MQTT Server/Broker. MQTT level connection is established in this command. This command has to be issued after "MQTT Init" command. |
Subscribe | This command is used to send the MQTT subscribe packet. This command has to be issued after "MQTT Connect" command. |
Publish | This command is used to send MQTT publish packet. This command has to be issued after "MQTT Connect" command. |
Unsubscribe | This Command is used to send MQTT unsubscribe packet. This command has to be issued after "MQTT Connect" command. |
Disconnect | This command is used to Disconnect from the Socket. MQTT and TCP level disconnection occur in this command. This command has to be issued after "MQTT Connect" command. |
Delete/Destroy | This command is used to delete the MQTT client configuration and TCP level disconnection happens in this command. This command has to be issued after "MQTT Init" command. |
Following table explains list of MQTT commands and their description.
- Init must be called as the first command to use MQTT.
- Once create is successful, Connect should be called to connect to a MQTT Server/Broker.
- After connection is successful, other MQTT commands can be used successfully.
- After MQTT operations are done, the Disconnect command should be issued to disconnect from MQTT server/Broker.
- Delete command is used to delete MQTT client configuration.
Command Format
MQTT client has different command types. Based on the command type, the parameters will change.
at+rsi_mqtt=<command_type>,<parameters>
Following are available command types.
MQTT Command | Type | Format |
---|---|---|
init | 1 |
at+rsi_mqtt=1,<ip_version>,<server_ip>,<server_port>,<client_id_length>,<client_id>,<kee palive>,<username_length>,<username>,<password_length>,<password>,<clean_sessio n>,<encrypt>,<client_port>
|
MQTT Command: Init (command_type = 1)
at+rsi_mqtt=1,<ip_version>,<server_ip>,<server_port>,<client_id_length>,<client_id>,<keepalive>,<username_length>,<username>,<password_length>,<password>,<clean_session>,<encrypt>,<client_port>
where ...
ip_version
-
4
= IPv4
server_port
- MQTT server port number
server_ip
- MQTT Server/Broker IP address
client_id_length
- length of the client id (Not valid if 0 or more than 60)
- Note: Client id length and length of the client id should be a match. Undefined behavior may be observed if these fields are mismatched
client_id
- client ID
- Note: ClientID should be unique and should not match with others
keepalive
- keep alive interval (in seconds)
- Note: keepalive interval is not a constant value. It varies. The default keep alive interval is 40 seconds
username_length
- length of the username
username
- user name to be used to authenticate with MQTT broker
-
Note:
- Maximum supported length for username is 60 bytes
- Username length and length of the Username should be a match. Undefined behavior may be observed if these fields are mismatched
password_length
- length of the password
password
- password to be used to authenticate with MQTT broker
-
Note:
- Maximum supported length for password is 60 bytes
- password length and length of the password should be a match. Undefined behavior may be observed if these fields are mismatched
clean_session
-
Clean session. Clears historical data when set to
1
encrypt
- Type of MQTT socket connection.
-
0
- Disable SSL -
1
- Enable SSL
client_port
- Client port to be used. If this parameter is not given, 1883 is used as client port number
MQTT Command: Connect (command_type = 2)
at+rsi_mqtt=2,<usr_flag>,<pwd_flag>,<will_flag>,<will_retain>,<will_qos>,<will_topic_length>,<will_topic>,<will_msg_length>,<will_msg>
where ...
usr_flag
-
Enable username to authenticate with MQTT server.
-
0
- Disable username -
1
- Enable username
-
pwd_flag
-
Enable password to authenticate with MQTT server.
-
0
- Disable password -
1
- Enable password
-
will_flag
- Reserved
will_retain
- Reserved
will_qos
- Reserved
will_topic_length
- Reserved
will_topic
- Reserved
will_msg_length
- Reserved
will_msg
- Reserved
MQTT Command: Subscribe (command_type = 3)
at+rsi_mqtt=3,<topic_length>,<topic>,<qos>
topic_length
- topic length
-
Note:
- Maximum supported length for TOPIC is 60 bytes.
- Topic length and length of the TOPIC should be a match. Undefined behavior may be observed if these fields are mismatched
topic
- topic to subscribe
qos
- message QoS can be 0, 1
MQTT Command: Publish (command_type = 4)
at+rsi_mqtt=4,<topic_length>,<topic>,<qos>,<retained>,<dup>,<message_length>,<mess age>
topic_length
- Topic length
-
Note:
- Maximum supported length for Topic is 60 bytes
- Topic length and length of the TOPIC should be match. Undefined behavior may be observed if these fields are mismatched
topic
- Topic of subscribe message
qos
- Publish message QoS can be 0, 1
retained
- Retained flag, can be 0 or 1
- Note: If the retain flag is set to 1 in a publish packet sent by a Client to a Server, the Server must store the Application Message and its QoS, so that it can be delivered to future subscribers whose subscriptions match its topic name
dup
- Duplicate flag, can be 0 or 1
-
Note: The
dup
flag MUST be set to 1 by the Client or Server when it attempts to re-deliver a publish packet. Thedup
flag MUST be set to 0 for all QoS 0 messages
message_len
- Length of publish message
-
Note:
- The message length is dependent on topic length, total length should not exceed 1460 bytes, if connection is not SSL secured (MQTT Header + Topic + Publish data).
- SSL Maximum supported message_len should not exceed 1370 bytes (MQTT Header + Publish data)
message
- Publish message
MQTT Command: Unsubscribe (command_type = 5)
at+rsi_mqtt=5,<topic_length>,<topic>
topic_len
- topic length
-
Note:
- Maximum supported length for TOPIC is 60 bytes
- Topic length and length of the TOPIC should be match. Behavior may be undefined if these fields are mismatched
topic
- topic of unsubscribe message
MQTT Command: Disconnect (command_type = 8)
at+rsi_mqtt=8
MQTT Command: Delete (command_type = 9)
at+rsi_mqtt=9
Response
MQTT Command: Init
Success
OK <ip_version =0x04 0x00><socket_type =0x0000><socket_descriptor =0x0001><local_port_port =0x4d2>, <dest_port=0x75b>, <ipv4_addr= 0xC0 0xA8 0x28 0x12 0x00(12 times)> <dest_ip4_addr =0xC0 0xA8 0x28 0x2 0x00(12 times)> <mss =0xB4 0x05><window_size =0x00 0x00 0x01 0x0>
Error
-
<Error Code>
MQTT Command: Connect
Success
Value | Return Code / Response | Description | |
---|---|---|---|
0 |
0x00
/ Connection Accepted
|
Connection accepted | |
1 |
0x01
/ Connection Refused, unacceptable protocol version
|
The Server does not support the level of the MQTT protocol requested by the Client | |
2 |
0x02
/ Connection Refused, identifier rejected
|
The Client identifier is correct UTF-8 but not allowed by the Server | |
3 |
0x03
/ Connection Refused, Server unavailable
|
The Network Connection has been made but the MQTT service is unavailable | |
4 |
0x04
/ Connection Refused, bad user name or password
|
The data in the user name or password is malformed | |
5 |
0x05
/ Connection Refused, not authorized
|
The Client is not authorized to connect | |
6-255 | Reserved for future use |
MQTT Command: Subscribe/Publish/Unsubscribe
Success
-
OK
Failure
-
Error code
MQTT Command: Destroy/Delete/Disconnect
Success
-
OK
Failure
-
ERROR <ERROR-CODE>
-
AT+RSI_MQTT_REMOTE_TERMINATE
Note!
DUT sends received data on published topic to host asynchronously using the following format.
AT+RSI_MQTT_READ_DATA<mqtt_flags><current_chunk_length><topic_length><topic><message>
Asynchronous Response: Remote Terminate
- This message is posted to the host when remote terminate /socket closure from peer is received.
ERROR<ERROR-CODE>
Asynchronous Response: Keep Alive Timeout
- This message is posted to host when Keepalive( MQTT Ping)response is not received in given time period when keep alive request is sent from module
AT+RSI_MQTT_KA_TIMEOUT
Asynchronous Response: Publish Message
- This message is received when publish message is received from MQTT Broker
AT+RSI_MQTT_READ_DATA<mqtt_flags><current_chunk_length><topic_length><topic><message>
where ...
mqtt_flags (2 bytes)
- Has the info regarding MQTT publish message.
- BIT(0) - Retain flag
- BIT(1) & BIT(2) - QOS level
- BIT(3) - DUP flag
- BIT(4) - More data
- BIT(5) : BIT(15) - Reserved for future use.
- This bit is set if more chunks/ Data is coming for same publish.
topic_length (2 bytes)
- length of the topic
current_chunk_length (2 bytes)
- message length in current chunk topic : publish topic. This field is valid only if topic length is non-zero value
message
- publish message. This field is valid only if current_chunk_length field is non zero
Example
-- Init the device
at+rsi_opermode=0,0,2147484676,2147483648,3145728,0,131072,0,0,0
at+rsi_band=0
at+rsi_init
at+rsi_scan=0,MY_NETWORK
at+rsi_psk=1,MY_PASSWORD
at+rsi_join=MY_NETWORK,0,2,2
at+rsi_ipconf=1
-- MQTT Init
at+rsi_mqtt=1,4,139.196.133.125,1883,38,6789|securemode=3,signmethod=hmacsha1|, 200,19,Device1&a1BLKg93h0r,40,EB9558F74EF496E72C129B5EDF66427683488246,1,0
-- MQTT Connect
at+rsi_mqtt=2,1,1,0,0,0,0,0,0
-- Subscribe
at+rsi_mqtt=3,7,redpine,1,1
-- Publish to cloud
at+rsi_mqtt=4,7,redpine,0,0,0,40,{\"state\":{\"desired\":{\"toggle\":1}}}
-- Unsubscribe
at+rsi_mqtt=5,7,redpine
-- Disconnect
at+rsi_mqtt=8
-- Destroy
at+rsi_mqtt=9
Note! For TLS/SSL connectivity, SSL certificates must be configured prior to attempting to connect.
MQTT Reference
http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html
https://www.oasis-open.org/news/announcements/mqtt-version-3-1-1-becomes-an-oasis-standard