Anybus® Wireless Bolt/Bridge II AT Commands REFERENCE GUIDE SCM-1202-004 1.
Important User Information Liability Every care has been taken in the preparation of this document. Please inform HMS Industrial Networks AB of any inaccuracies or omissions. The data and illustrations found in this document are not binding. We, HMS Industrial Networks AB, reserve the right to modify our products in line with our policy of continuous product development.
Table of Contents 1 2 3 4 5 Page Preface ............................................................................................................................... 5 1.1 About This Document.....................................................................................................5 1.2 Document history...........................................................................................................5 1.3 Trademark Information .................................................
Table of Contents 6 7 8 9 5.21 AT*BCHM Channel Map ...............................................................................................25 5.22 AT*BPP Packet policy ..................................................................................................26 5.23 AT*BMSP Master Slave policy ......................................................................................27 5.24 AT*BLCOD Local class of device...................................................................
Table of Contents 10 Miscellaneous Commands ......................................................................................... 50 10.1 AT*AMLI Login.............................................................................................................50 10.2 AT*AMLO Logout .........................................................................................................50 10.3 AT*AMPW Password..........................................................................................
This page intentionally left blank
Preface 5 (60) 1 Preface 1.1 About This Document This document describes the available AT commands for Anybus Wireless Bolt/Bridge II. The reader of this document is expected to be familiar with the product and have a good knowledge of wireless communication and network technology. For additional related documentation, file downloads and technical support, please visit the Anybus support website at www.anybus.com/support. 1.2 Document history Revision list 1.3 Version Date Description 1.0 1.
Introduction 2 6 (60) Introduction AT commands allow more configuration options than the web interface and can be scripted for batch configuration of multiple units. A string of AT commands can for example be sent from a PLC for automatic configuration during initial setup or when replacing units. Each command line can only contain a single command and must not exceed 300 characters. Some commands may have additional limitations.
Introduction 2.2 7 (60) Sample Scripts The following command scripts can be copied and pasted directly into the AT Commands text box in the web interface. The order of the commands in the scripts is important and should not be changed. All scripts start from the factory default configuration. See also the descriptions of the individual AT commands for more information. These scripts are only intended as examples. The IP addresses, channels, passwords, etc.
Introduction 2.2.2 8 (60) WLAN Client Roaming Between 2 Access Points This example will set up two units as WLAN access points, and a third unit as a WLAN client roaming between them. The access points use different channels in the 2.4 GHz band (channels 1 and 6) to avoid interference. They share the same SSID “MyNetwork”, and use WPA2-PSK security with the same passkey “Sesame2016”. Each unit will reboot after applying the new configuration. The IP addresses will change to 192.168.0.
Standard Commands 3 Standard Commands 3.1 AT&F Restore to Factory Settings 9 (60) AT&F This command instructs the unit to set all parameters to their defaults as specified by the manufacturer. Syntax: AT&F 3.2 AT* List Available Commands Returns a list of all available AT commands AT* Syntax: AT* Example: TODO 3.3 AT Attention AT Attention command determining the presence of a DCE Syntax: AT Anybus® Wireless Bolt/Bridge II AT Commands Reference Guide SCM-1202-004 1.
Network Commands 10 (60) 4 Network Commands 4.1 AT*ANDHCP DHCP Mode Set/get the DHCP mode.
Network Commands 4.2 11 (60) AT*ANIP IP Settings Set/get IP settings for the device AT*ANIP= Short description for AT*ANIP= Syntax: AT*ANIP=,,, Input Parameters: Name ip_addr Type Description NetworkAddress IP address for the device netmask gateway NetworkAddress NetworkAddress Netmask for the device The IP address of the gateway store Boolean If store is 1 the new value is stored permanently.
Network Commands 4.3 12 (60) AT*ANHN Hostname Set/get the hostname used with dynamic DNS AT*ANHN= Set hostname Syntax: AT*ANHN=, Input Parameters: Name hostname Type Description String The hostname to set. Maximum of 240 characters. store Boolean If store is 1 the new value is stored permanently.
Bluetooth Classic Commands 13 (60) 5 Bluetooth Classic Commands 5.1 AT*BCP Connect Peer AT*BCP= Bluetooth Connect to Peer. The connection will not be retried if unsuccessful. Syntax: AT*BCP=,, Input Parameters: Name bd_addr Type Description MACAddress name String role Integer If specified the MAC address of the remote Bluetooth device must match this value. If name is specified and S register 2017 is 1 the remote name must match this value exactly.
Bluetooth Classic Commands 5.3 14 (60) AT*BC Connect AT*BC Bluetooth Connect (according to the Connection List). Syntax: AT*BC Example: Input: AT*BC will return the handle of the connection and OK if the connection succeeds, ERROR otherwise. 5.4 AT*BND Name Discovery AT*BND= Bluetooth Name Discovery Syntax: AT*BND= Input Parameters: Name bd_addr Type Description MACAddress MAC address of the Bluetooth device to get the name of.
Bluetooth Classic Commands 5.5 15 (60) AT*BDD Device Discovery AT*BDD Perform a Bluetooth Device Discovery i.e. an Inquiry followed by a named lookup for any device that does not report a name in the inquiry response. Syntax: AT*BDD Example: Input: AT*BDD returns *BDD:,,,, for each found device followed by OK or ERROR. 5.6 AT*BI Inquiry AT*BI Perform a Bluetooth inquiry.
Bluetooth Classic Commands 5.7 16 (60) AT*BSP Server Profile AT*BSP= Sets the Bluetooth server profile. A reboot is needed for the setting to take effect.
Bluetooth Classic Commands 5.8 17 (60) AT*BFP Fixed PIN AT*BFP= Set the fixed pin/passkey used for BT authentication Syntax: AT*BFP=, Input Parameters: Name pin Type Description String The pin/passkey to set. A numerical value 0..999999. store Boolean If store is 1 the new value is stored permanently. AT*BFP? Get the fixed pin/passkey used for BT authentication. Syntax: AT*BFP? 5.
Bluetooth Classic Commands 5.10 18 (60) AT*BSM Security Mode AT*BSM= Set the security mode to use for BT. Syntax: AT*BSM=, Input Parameters: Name pin Type Description Integer The security mode to set. 1 = Security disabled 2 = Fixed pin (Only works if remote device is of the same type. Use Just works for general BT 2.1 devices.) 3 = Just works (default) store Boolean If store is 1 the new value is stored permanently. AT*BSM? Get the security mode used for BT.
Bluetooth Classic Commands 5.12 19 (60) AT*BUB Unbond AT*BUB= Un-bonds a previously bonded device. Syntax: AT*BUB= Input Parameters: Name bd_addr Type Description MACAddress MAC address of the Bluetooth device to un-bond. If address FFFFFFFFFFFF is selected, all bonded devices will be removed. Example: Input: AT*BUB=8C8B83EE2ACB Anybus® Wireless Bolt/Bridge II AT Commands Reference Guide SCM-1202-004 1.
Bluetooth Classic Commands 5.13 20 (60) AT*BLEM Low Emission Mode AT*BLEM= Set current Low Emission Mode.
Bluetooth Classic Commands 5.14 21 (60) AT*BDM GAP Discoverability Mode AT*BDM= Set current GAP discoverability mode. Syntax: AT*BDM=, Input Parameters: Name mode Type Description Integer The GAP discoverability mode to set: 1: GAP non-discoverable mode (default value for PANU mode) 2: GAP limited discoverable mode 3: GAP general discoverable mode (default value for NAP mode) store Boolean If store is 1 the new value is stored permanently.
Bluetooth Classic Commands 5.15 22 (60) AT*BCM GAP Connectability Mode AT*BCM= Set current GAP connectability mode. Syntax: AT*BCM=, Input Parameters: Name mode Type Description Integer store Boolean The GAP connectability mode to set: 1: GAP non-connectable mode (default value) 2: GAP connectable mode If store is 1 the new value is stored permanently. AT*BCM? Get the current GAP connectability mode. See AT*BCM= for values. Syntax: AT*BCM? Example: AT*BCM? *BCM: 5.
Bluetooth Classic Commands 5.17 23 (60) AT*BLN Local Name AT*BLN= Set the unit's Bluetooth name. A reboot is needed for the setting to take effect. Syntax: AT*BLN= Input Parameters: Name name Type Description String The Bluetooth name to use. The maximum length is 31 characters. AT*BLN? Get the unit's Bluetooth name. Syntax: AT*BLN? Example: AT*BLN? *BLN: 5.18 AT*BRSS Read RSSI AT*BRSS= Get the RSSI for a connection.
Bluetooth Classic Commands 5.19 24 (60) AT*BLQ Read Link Quality AT*BLQ= Get the link quality for a connection. Syntax: AT*BLQ= Input Parameters: Name handle Type Description Integer The handle of the connection to get the link quality for. Example: AT*BLQ= *BLQ: 5.20 AT*BLP Limited Pairing AT*BLP= Enables or disables limited pairing, only valid for current power cycle. If the device should be pairable after power cycle, see S register 2007.
Bluetooth Classic Commands 5.21 25 (60) AT*BCHM Channel Map AT*BCHM= Write the Bluetooth channel map. Note that at least 20 channels must be enabled. Syntax: AT*BCHM=,,,,, Input Parameters: Name ch0to15 Type Description Integer Bit mask used to enable or disable channels 0 to 15 (Bit 0 = Channel 0). Default value is 0xFFFF. ch16to31 Integer Bit mask used to enable or disable channels 16 to 31. Default value is 0xFFFF.
Bluetooth Classic Commands 5.22 26 (60) AT*BPP Packet policy AT*BPP= Set the Bluetooth packet policy. This policy is used for subsequent connections. Any ongoing connections are not affected. Syntax: AT*BPP=, Input Parameters: Name policy Type Description Integer store Boolean 0: Long Range (only DM1 packets). 1: Short Latency, basic rates (all DM packets). 2: High Throughput, basic rates (DM + DH packets). 3: As 2 but with 2-EDR enabled. Default.
Bluetooth Classic Commands 5.23 27 (60) AT*BMSP Master Slave policy AT*BMSP= Set the Bluetooth Master Slave Role Policy. Syntax: AT*BMSP=, Input Parameters: Name policy Type Description Integer 0: Always attempt to become master on incoming connections. Should be used for a unit configured as NAP. 1: Always let the connecting device select master/slave role on incoming connections (default). store Boolean If store is 1 the new value is stored permanently.
Bluetooth Classic Commands 5.24 28 (60) AT*BLCOD Local class of device. AT*BLCOD= Set the Bluetooth Local Class Of Device code. Syntax: AT*BLCOD=, Input Parameters: Name cod Type Description Integer Valid values for this parameter are specified in the Bluetooth Assigned Numbers Document, www.bluetooth.com. The parameter has been divided into three segments, a service class segment, a major device class segment and a minor device class segment (bits 2-7).
Bluetooth Classic Commands 5.26 29 (60) AT*BCLC Clear the Connection list AT*BCLC= Clears all the entries in the Connection list. Syntax: AT*BCLC= Input Parameters: Name store Type Description Boolean If store is 1 the new value is stored permanently. Example: AT*BCLC=1 5.27 AT*BCLR Read the Connection list AT*BCLR= Reads an entry in the Connection list. Syntax: AT*BCLR= Input Parameters: Name index Type Description Integer The index of the entry to read.
Bluetooth Classic Commands 5.28 30 (60) AT*BCLW Write an entry in the Connection list AT*BCLW= Writes an entry in the Connection list. NOTE: If store is set to 1 all entries in the connection list will be stored. Syntax: AT*BCLW=,,,, Input Parameters: Name index Type Description Integer The index of the entry to write. bd_addr MACAddress name String role Integer If specified the MAC address of the remote Bluetooth device must match this value.
WLAN General Commands 31 (60) 6 WLAN General Commands 6.1 AT*WMODE WLAN Mode AT*WMODE= Set WLAN mode, Station or AP. Syntax: AT*WMODE= Input Parameters: Name mode Type Description Integer The mode to set, Station (0) or AP (1). Requires a reboot for the changes to take effect Example: Input: AT*WMODE=1 sets WLAN mode to AP.
WLAN General Commands 6.2 32 (60) AT*WKEY Encryption/Authentication Key AT*WKEY= Write encryption/authentication key at index 1. This command is a shortcut for AT*WKEYI=1, Syntax: AT*WKEY=, Input Parameters: Name key Type Description String The key to use. Max 63 characters. store Boolean If store is 1 the new value is stored permanently.
WLAN General Commands 6.4 33 (60) AT*WACTKEY Active Encryption/Authentication Key AT*WACTKEY= Set the index of the active Encryption/Authentication Key Syntax: AT*WACTKEY=, Input Parameters: Name index Type Description Integer 1..4 store Boolean If store is 1 the new value is stored permanently. AT*WACTKEY? Get the index of the active Encryption/Authentication Key, 1..4.
WLAN Access Point Commands 34 (60) 7 WLAN Access Point Commands 7.1 AT*WASSID Access Point SSID AT*WASSID= Sets the SSID for AP mode. Syntax: AT*WASSID= Input Parameters: Name pssid Type Description String The SSID to set. Max 32 characters. Requires a reboot for the changes to take effect AT*WASSID? Gets the SSID for AP mode. Syntax: AT*WASSID? Example: AT*WASSID? *WASSID: Anybus® Wireless Bolt/Bridge II AT Commands Reference Guide SCM-1202-004 1.
WLAN Access Point Commands 7.2 35 (60) AT*WACH Access Point Channel AT*WACH= Sets the channel for AP mode. Syntax: AT*WACH= Input Parameters: Name channel Type Description Integer The channel to use. Valid channels are 1-11 for 2.4 GHz and 36, 40, 44, 48 for 5 GHz. Requires a reboot for the changes to take effect AT*WACH? Gets the channel for AP mode. Syntax: AT*WACH? Example: AT*WACH? *WACH: Anybus® Wireless Bolt/Bridge II AT Commands Reference Guide SCM-1202-004 1.
WLAN Access Point Commands 7.3 36 (60) AT*WAAM Authentication Mode for AP AT*WAAM= Set the AP Authentication Mode. Syntax: AT*WAAM= Input Parameters: Name mode Type Description Integer Authentication Mode: 0 = Open, 2 = WPA/WPA2 PSK (default) Requires a reboot for the changes to take effect AT*WAAM? Get the AP Authentication Mode. Syntax: AT*WAAM? Example: Input: AT*WAAM? Anybus® Wireless Bolt/Bridge II AT Commands Reference Guide SCM-1202-004 1.
WLAN Client Commands 37 (60) 8 WLAN Client Commands 8.1 AT*WSMAC WLAN MAC address Can be used to clone a MAC address from an Ethernet device. This will allow layer 2 data to be bridged by one device. Can be combined with IP forwarding. AT*WSMAC= Set the WLAN MAC address. If set to all 0 or all FF the unit's default address will be used. Syntax: AT*WSMAC= Input Parameters: Name mac Type Description MACAddress The MAC address to set.
WLAN Client Commands 8.2 38 (60) AT*WSBM WLAN Bridge Mode AT*WSBM= Set the WLAN Bridge Mode. In layer 2 tunnel mode all layer 2 data will be bridged over WLAN. Please note that this option uses a custom protocol and can only be used when the AP is another device of the same type. Layer 2 cloned MAC only mode is used in combination with AT*WSMAC. In this mode only data from the cloned MAC will be bridged over WLAN.
WLAN Client Commands 8.3 39 (60) AT*WSC Connect AT*WSC Connect to Access Points as specified in the Connection List. Syntax: AT*WSC Example: Input: AT*WSC returns OK if the connection succeeds, ERROR otherwise. 8.4 AT*WSCC Close Connection AT*WSCC Close WLAN connection in Station mode. If there is no connection but a connect as specified by the Connection List is in progress this is terminated. Syntax: AT*WSCC Example: Input: AT*WSCC, returns OK when the connection is closed.
WLAN Client Commands 8.5 40 (60) AT*WSCP Connect Peer AT*WSCP= Connect to a WLAN AP. Syntax: AT*WSCP=,, Input Parameters: Name bssid Type Description MACAddress If specified the AP BSSID must match this value, if left blank the BSSID is ignored. ssid String The SSID of the AP to connect to. If not specified the AP BSSID must be specified for a connection to be possible. channel Integer The channel to use. 0 for any channel in the channel map.
WLAN Client Commands 8.6 41 (60) AT*WSSCAN Scan AT*WSSCAN= Scan the surroundings for access points with a specific Network Name (SSID) on a specified channel. Syntax: AT*WSSCAN=, Input Parameters: Name pssid Type Description String The SSID to scan for. Max 32 characters. channel Integer The channel to scan for Example: Input: AT*WSSCAN=dutAP,1 will return 0...48 access points in the immediate surroundings, then return OK. AT*WSSCAN? Scan the surroundings for access points.
WLAN Client Commands 8.7 42 (60) AT*WSAM Authentication Mode for Station AT*WSAM= Set the Station Authentication Mode. Syntax: AT*WSAM=, Input Parameters: Name mode Type Description Integer Authentication Mode: 0 = Open, 1 = WEP64/128 (shared secret), 2 = WPA/WPA2 PSK (default), 3 = LEAP, 4 = PEAP store Boolean If store is 1 the new value is stored permanently. AT*WSAM? Get the Station Authentication Mode. Syntax: AT*WSAM? Example: Input: AT*WSAM? 8.
WLAN Client Commands 8.9 43 (60) AT*WSLNK Read Link Status AT*WSLNK? Read current WLAN link status. Syntax: AT*WSLNK? Example: AT*WSLNK? *WSLNK:, 8.10 AT*WSUSER User name for WLAN LEAP/PEAP authentication. AT*WSUSER= Set the user name. Syntax: AT*WSUSER=, Input Parameters: Name userName Type Description String The user name to set (max 63 characters) store Boolean If store is 1 the new value is stored permanently.
WLAN Client Commands 8.11 44 (60) AT*WSDOMAIN Domain for WLAN LEAP/PEAP authentication. AT*WSDOMAIN= Set the domain. Syntax: AT*WSDOMAIN=, Input Parameters: Name domain Type Description String The domain to set. Max 63 characters. store Boolean If store is 1 the new value is stored permanently. Example: Input: AT*WSDOMAIN=Cool,1 AT*WSDOMAIN? Get the domain.
WLAN Client Commands 8.12 45 (60) AT*WSPASS Pass phrase for WLAN LEAP/PEAP authentication. AT*WSPASS= Set the pass phrase. Syntax: AT*WSPASS=, Input Parameters: Name passPhrase Type Description String The pass phrase to set. Max 63 characters. store Boolean If store is 1 the new value is stored permanently. Example: Input: AT*WSPASS=Secret,1 AT*WSPASS? Get the pass phrase.
WLAN Client Commands 8.13 46 (60) AT*WSCHL Channel list AT*WSCHL= Sets the Channel list for Station mode. Syntax: AT*WSCHL=, Input Parameters: Name channelListStr Type Description String A comma separated string of channels to use. Valid channels are 1-11 for 2.4 GHz and 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140 for 5 GHz. store Boolean If store is 1 the new value is stored permanently. Example: AT*WSCHL=,,...
WLAN Client Commands 8.15 47 (60) AT*WSCLR Read the Connection list AT*WSCLR= Reads an entry in the Connection list. Syntax: AT*WSCLR= Input Parameters: Name index Type Description Integer The index (0..49) of the entry to read. Example: AT*WSCLR=2 *WSCLR:<2>,, AT*WSCLR? Reads the list of Connections (Access Points) that the unit can use. Syntax: AT*WSCLR? Example: AT*WSCLR? returns *WSCLR:,,, for each entry in the list followed by OK.
WLAN Client Commands 8.16 48 (60) AT*WSCLW Write an entry (AP) in the Connection list AT*WSCLW= Writes an entry in the Connection list. NOTE: If store is set to 1 all entries in the connection list will be stored. Syntax: AT*WSCLW=,,,, Input Parameters: Name index Type Description Integer The index (0..49) of the AP to write. bssid ssid MACAddress String The BSSID of the AP. The SSID of the AP. Max 32 characters. channel Integer The channel of the AP.
Informational Commands 49 (60) 9 Informational Commands 9.1 AT*AILVI Local Version Info AT*AILVI? Reads the local version info for the product Syntax: AT*AILVI? Example: AT*AILVI? *AILVI:, 9.2 AT*AIMAC Read MAC AT*AIMAC= Reads the the MAC for the specified interface Syntax: AT*AIMAC= Input Parameters: Name interface Type Description Integer The MAC to get.
Miscellaneous Commands 50 (60) 10 Miscellaneous Commands 10.1 AT*AMLI Login AT*AMLI= Log in to the AT command interface Syntax: AT*AMLI= Input Parameters: Name password Type Description String The password set using AT*AMPW Example: AT*AMLI= AT*AMLI? Returns 1 if logged in Syntax: AT*AMLI? Example: AT*AMLI? 10.
Miscellaneous Commands 10.3 51 (60) AT*AMPW Password AT*AMPW= Set password to the AT command interface Syntax: AT*AMPW=, Input Parameters: 10.4 Name password Type Description String Max length is 16 characters store Boolean If store is 1 the new value is stored permanently. AT*AMSTAT System status Get the system status. AT*AMSTAT= Get the system status. Syntax: AT*AMSTAT= Input Parameters: Name verbose Type Description Boolean 0: Terse, 1: Verbose.
Miscellaneous Commands 10.5 52 (60) AT*AMESS Event and Status Subscriber AT*AMESS= Set event and status subscriber configuration Syntax: AT*AMESS=,,,,, Input Parameters: 10.6 Name mac_addr Type Description String eth_type Integer ip_addr String MAC address of event subscriber. Only used when protocol bit 1 is set The 16 bit Ethernet type to use. Only used when protocol bit 1 is set IP address of event subscriber.
Miscellaneous Commands 10.7 53 (60) AT*AMECFL Read/Write Easy Configuration Modes Function List Reads/Writes the list of supported Easy Configuration Modes AT*AMECFL= Sets the list of supported Easy Configuration Modes. Syntax: AT*AMECFL=, Input Parameters: Name functions Type Description String Comma-separated string of up to 15 modes and their order to be supported. Valid modes are 1 to 15. Using mode=0 (INVALID MODE) will terminate the list at the given position.
Miscellaneous Commands 10.9 54 (60) AT*AMPID Product ID AT*AMPID? Get product ID Syntax: AT*AMPID? Example: AT*AMPID? *AMPID:-- 10.10 AT*AMGD General Data General data storage for custom data AT*AMGD= Short description for AT*AMGD= Syntax: AT*AMGD=, Input Parameters: Name data Type Description String A custom string to store. Max length is 32 characters. store Boolean If store is 1 the new value is stored permanently.
Miscellaneous Commands 10.11 55 (60) AT*AMTL TCP Listener Configures the AT over TCP server AT*AMTL= Set TCP listener settings Syntax: AT*AMTL=,, Input Parameters: Name port Type Description Integer TCP port to listen for incoming connections enable Boolean store Boolean 0: Disables TCP Listener 1: Enables TCP Listener If store is 1 the new value is stored permanently.
Miscellaneous Commands 10.13 56 (60) AT*AMLCR Layer 2 Configuration Receiver Configure AT over layer 2 (Ethernet) AT*AMLCR= Set AT over layer 2 configuration Syntax: AT*AMLCR=,, Input Parameters: Name eth_type Type Description Integer 16 bit Ethernet type that should be used for AT commands enable Boolean store Boolean 0: Disable AT over Ethernet 1: Enable AT over Ethernet If store is 1 the new value is stored permanently.
S Registers 11 57 (60) S Registers Miscellaneous Registers Register 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 Name Reserved Reserved Reserved Reserved Reserved Reserved Reserved Easy Config LED Mode Reserved Reserved Reserved Reserved Reserved Diagnose Mode Value Range Default Value Description 0..
S Registers 58 (60) Miscellaneous Registers (continued) Register Name Value Range Default Value Description Bit 18: *BI - Background scan result, regardless of the current roaming operation. Bit 19: *BI - When background scan is active results for the currently connected device and possible handover candidates are sent. *BRSS - When background scan is active an aproximate RSSI value for the current connection is sent periodically.
S Registers 59 (60) WLAN Registers Register Value Range Default Value Description 0..4294967296 5000 Time between background scans in milliseconds 0..4294967296 5000 The interval in milliseconds 0..65535 1000 RSSI poll interval in milliseconds Name Roaming list trigger RSSI Value Range 0..1 Default Value 1 4001 Roaming list trigger input 0..1 1 0: Do not trig on digital input 1: Trig on digital input (default) 4002 Roaming RSSI diff threshold 0..
last page © 2017 HMS Industrial Networks AB Box 4126 300 04 Halmstad, Sweden info@hms.se SCM-1202-004 1.2.