xref: /freebsd/contrib/wpa/hostapd/README-WPS (revision 416ba5c74546f32a993436a99516d35008e9f384)
139beb93cSSam Lefflerhostapd and Wi-Fi Protected Setup (WPS)
239beb93cSSam Leffler=======================================
339beb93cSSam Leffler
439beb93cSSam LefflerThis document describes how the WPS implementation in hostapd can be
539beb93cSSam Lefflerconfigured and how an external component on an AP (e.g., web UI) is
639beb93cSSam Lefflerused to enable enrollment of client devices.
739beb93cSSam Leffler
839beb93cSSam Leffler
939beb93cSSam LefflerIntroduction to WPS
1039beb93cSSam Leffler-------------------
1139beb93cSSam Leffler
1239beb93cSSam LefflerWi-Fi Protected Setup (WPS) is a mechanism for easy configuration of a
1339beb93cSSam Lefflerwireless network. It allows automated generation of random keys (WPA
1439beb93cSSam Lefflerpassphrase/PSK) and configuration of an access point and client
1539beb93cSSam Lefflerdevices. WPS includes number of methods for setting up connections
1639beb93cSSam Lefflerwith PIN method and push-button configuration (PBC) being the most
1739beb93cSSam Lefflercommonly deployed options.
1839beb93cSSam Leffler
1939beb93cSSam LefflerWhile WPS can enable more home networks to use encryption in the
2039beb93cSSam Lefflerwireless network, it should be noted that the use of the PIN and
2139beb93cSSam Lefflerespecially PBC mechanisms for authenticating the initial key setup is
2239beb93cSSam Lefflernot very secure. As such, use of WPS may not be suitable for
2339beb93cSSam Lefflerenvironments that require secure network access without chance for
2439beb93cSSam Lefflerallowing outsiders to gain access during the setup phase.
2539beb93cSSam Leffler
2639beb93cSSam LefflerWPS uses following terms to describe the entities participating in the
2739beb93cSSam Lefflernetwork setup:
2839beb93cSSam Leffler- access point: the WLAN access point
2939beb93cSSam Leffler- Registrar: a device that control a network and can authorize
3039beb93cSSam Leffler  addition of new devices); this may be either in the AP ("internal
3139beb93cSSam Leffler  Registrar") or in an external device, e.g., a laptop, ("external
3239beb93cSSam Leffler  Registrar")
3339beb93cSSam Leffler- Enrollee: a device that is being authorized to use the network
3439beb93cSSam Leffler
3539beb93cSSam LefflerIt should also be noted that the AP and a client device may change
3639beb93cSSam Lefflerroles (i.e., AP acts as an Enrollee and client device as a Registrar)
3739beb93cSSam Lefflerwhen WPS is used to configure the access point.
3839beb93cSSam Leffler
3939beb93cSSam Leffler
4039beb93cSSam LefflerMore information about WPS is available from Wi-Fi Alliance:
4139beb93cSSam Lefflerhttp://www.wi-fi.org/wifi-protected-setup
4239beb93cSSam Leffler
4339beb93cSSam Leffler
4439beb93cSSam Lefflerhostapd implementation
4539beb93cSSam Leffler----------------------
4639beb93cSSam Leffler
4739beb93cSSam Lefflerhostapd includes an optional WPS component that can be used as an
4839beb93cSSam Lefflerinternal WPS Registrar to manage addition of new WPS enabled clients
4939beb93cSSam Lefflerto the network. In addition, WPS Enrollee functionality in hostapd can
5039beb93cSSam Lefflerbe used to allow external WPS Registrars to configure the access
5139beb93cSSam Lefflerpoint, e.g., for initial network setup. In addition, hostapd can proxy a
5239beb93cSSam LefflerWPS registration between a wireless Enrollee and an external Registrar
5339beb93cSSam Leffler(e.g., Microsoft Vista or Atheros JumpStart) with UPnP.
5439beb93cSSam Leffler
5539beb93cSSam Leffler
5639beb93cSSam Lefflerhostapd configuration
5739beb93cSSam Leffler---------------------
5839beb93cSSam Leffler
5939beb93cSSam LefflerWPS is an optional component that needs to be enabled in hostapd build
6039beb93cSSam Lefflerconfiguration (.config). Here is an example configuration that
61*5b9c547cSRui Pauloincludes WPS support and uses nl80211 driver interface:
6239beb93cSSam Leffler
63*5b9c547cSRui PauloCONFIG_DRIVER_NL80211=y
6439beb93cSSam LefflerCONFIG_WPS=y
6539beb93cSSam LefflerCONFIG_WPS_UPNP=y
6639beb93cSSam Leffler
67f05cddf9SRui PauloFollowing parameter can be used to enable support for NFC config method:
68f05cddf9SRui Paulo
69f05cddf9SRui PauloCONFIG_WPS_NFC=y
70f05cddf9SRui Paulo
7139beb93cSSam Leffler
7239beb93cSSam LefflerFollowing section shows an example runtime configuration
7339beb93cSSam Leffler(hostapd.conf) that enables WPS:
7439beb93cSSam Leffler
7539beb93cSSam Leffler# Configure the driver and network interface
76*5b9c547cSRui Paulodriver=nl80211
77*5b9c547cSRui Paulointerface=wlan0
7839beb93cSSam Leffler
7939beb93cSSam Leffler# WPA2-Personal configuration for the AP
8039beb93cSSam Lefflerssid=wps-test
8139beb93cSSam Lefflerwpa=2
8239beb93cSSam Lefflerwpa_key_mgmt=WPA-PSK
8339beb93cSSam Lefflerwpa_pairwise=CCMP
8439beb93cSSam Leffler# Default WPA passphrase for legacy (non-WPS) clients
8539beb93cSSam Lefflerwpa_passphrase=12345678
8639beb93cSSam Leffler# Enable random per-device PSK generation for WPS clients
8739beb93cSSam Leffler# Please note that the file has to exists for hostapd to start (i.e., create an
8839beb93cSSam Leffler# empty file as a starting point).
8939beb93cSSam Lefflerwpa_psk_file=/etc/hostapd.psk
9039beb93cSSam Leffler
9139beb93cSSam Leffler# Enable control interface for PBC/PIN entry
9239beb93cSSam Lefflerctrl_interface=/var/run/hostapd
9339beb93cSSam Leffler
9439beb93cSSam Leffler# Enable internal EAP server for EAP-WSC (part of Wi-Fi Protected Setup)
9539beb93cSSam Lefflereap_server=1
9639beb93cSSam Leffler
9739beb93cSSam Leffler# WPS configuration (AP configured, do not allow external WPS Registrars)
9839beb93cSSam Lefflerwps_state=2
9939beb93cSSam Lefflerap_setup_locked=1
10039beb93cSSam Leffler# If UUID is not configured, it will be generated based on local MAC address.
10139beb93cSSam Leffleruuid=87654321-9abc-def0-1234-56789abc0000
10239beb93cSSam Lefflerwps_pin_requests=/var/run/hostapd.pin-req
10339beb93cSSam Lefflerdevice_name=Wireless AP
10439beb93cSSam Lefflermanufacturer=Company
10539beb93cSSam Lefflermodel_name=WAP
10639beb93cSSam Lefflermodel_number=123
10739beb93cSSam Lefflerserial_number=12345
10839beb93cSSam Lefflerdevice_type=6-0050F204-1
10939beb93cSSam Leffleros_version=01020300
11039beb93cSSam Lefflerconfig_methods=label display push_button keypad
11139beb93cSSam Leffler
11239beb93cSSam Leffler# if external Registrars are allowed, UPnP support could be added:
11339beb93cSSam Leffler#upnp_iface=br0
11439beb93cSSam Leffler#friendly_name=WPS Access Point
11539beb93cSSam Leffler
11639beb93cSSam Leffler
11739beb93cSSam LefflerExternal operations
11839beb93cSSam Leffler-------------------
11939beb93cSSam Leffler
12039beb93cSSam LefflerWPS requires either a device PIN code (usually, 8-digit number) or a
12139beb93cSSam Lefflerpushbutton event (for PBC) to allow a new WPS Enrollee to join the
12239beb93cSSam Lefflernetwork. hostapd uses the control interface as an input channel for
12339beb93cSSam Lefflerthese events.
12439beb93cSSam Leffler
125f05cddf9SRui PauloThe PIN value used in the commands must be processed by an UI to
126f05cddf9SRui Pauloremove non-digit characters and potentially, to verify the checksum
127f05cddf9SRui Paulodigit. "hostapd_cli wps_check_pin <PIN>" can be used to do such
128f05cddf9SRui Pauloprocessing. It returns FAIL if the PIN is invalid, or FAIL-CHECKSUM if
129f05cddf9SRui Paulothe checksum digit is incorrect, or the processed PIN (non-digit
130f05cddf9SRui Paulocharacters removed) if the PIN is valid.
131f05cddf9SRui Paulo
13239beb93cSSam LefflerWhen a client device (WPS Enrollee) connects to hostapd (WPS
13339beb93cSSam LefflerRegistrar) in order to start PIN mode negotiation for WPS, an
13439beb93cSSam Leffleridentifier (Enrollee UUID) is sent. hostapd will need to be configured
13539beb93cSSam Lefflerwith a device password (PIN) for this Enrollee. This is an operation
13639beb93cSSam Lefflerthat requires user interaction (assuming there are no pre-configured
13739beb93cSSam LefflerPINs on the AP for a set of Enrollee).
13839beb93cSSam Leffler
13939beb93cSSam LefflerThe PIN request with information about the device is appended to the
14039beb93cSSam Lefflerwps_pin_requests file (/var/run/hostapd.pin-req in this example). In
14139beb93cSSam Leffleraddition, hostapd control interface event is sent as a notification of
14239beb93cSSam Lefflera new device. The AP could use, e.g., a web UI for showing active
14339beb93cSSam LefflerEnrollees to the user and request a PIN for an Enrollee.
14439beb93cSSam Leffler
14539beb93cSSam LefflerThe PIN request file has one line for every Enrollee that connected to
14639beb93cSSam Lefflerthe AP, but for which there was no PIN. Following information is
14739beb93cSSam Lefflerprovided for each Enrollee (separated with tabulators):
14839beb93cSSam Leffler- timestamp (seconds from 1970-01-01)
14939beb93cSSam Leffler- Enrollee UUID
15039beb93cSSam Leffler- MAC address
15139beb93cSSam Leffler- Device name
15239beb93cSSam Leffler- Manufacturer
15339beb93cSSam Leffler- Model Name
15439beb93cSSam Leffler- Model Number
15539beb93cSSam Leffler- Serial Number
15639beb93cSSam Leffler- Device category
15739beb93cSSam Leffler
15839beb93cSSam LefflerExample line in the /var/run/hostapd.pin-req file:
15939beb93cSSam Leffler1200188391	53b63a98-d29e-4457-a2ed-094d7e6a669c	Intel(R) Centrino(R)	Intel Corporation	Intel(R) Centrino(R)	-	-	1-0050F204-1
16039beb93cSSam Leffler
16139beb93cSSam LefflerControl interface data:
16239beb93cSSam LefflerWPS-PIN-NEEDED [UUID-E|MAC Address|Device Name|Manufacturer|Model Name|Model Number|Serial Number|Device Category]
16339beb93cSSam LefflerFor example:
16439beb93cSSam Leffler<2>WPS-PIN-NEEDED [53b63a98-d29e-4457-a2ed-094d7e6a669c|02:12:34:56:78:9a|Device|Manuf|Model|Model Number|Serial Number|1-0050F204-1]
16539beb93cSSam Leffler
16639beb93cSSam LefflerWhen the user enters a PIN for a pending Enrollee, e.g., on the web
16739beb93cSSam LefflerUI), hostapd needs to be notified of the new PIN over the control
16839beb93cSSam Lefflerinterface. This can be done either by using the UNIX domain socket
16939beb93cSSam Leffler-based control interface directly (src/common/wpa_ctrl.c provides
17039beb93cSSam Lefflerhelper functions for using the interface) or by calling hostapd_cli.
17139beb93cSSam Leffler
17239beb93cSSam LefflerExample command to add a PIN (12345670) for an Enrollee:
17339beb93cSSam Leffler
17439beb93cSSam Lefflerhostapd_cli wps_pin 53b63a98-d29e-4457-a2ed-094d7e6a669c 12345670
17539beb93cSSam Leffler
17639beb93cSSam LefflerIf the UUID-E is not available (e.g., Enrollee waits for the Registrar
1773157ba21SRui Pauloto be selected before connecting), wildcard UUID may be used to allow
1783157ba21SRui Paulothe PIN to be used once with any UUID:
17939beb93cSSam Leffler
18039beb93cSSam Lefflerhostapd_cli wps_pin any 12345670
18139beb93cSSam Leffler
1823157ba21SRui PauloTo reduce likelihood of PIN being used with other devices or of
1833157ba21SRui Pauloforgetting an active PIN available for potential attackers, expiration
184f05cddf9SRui Paulotime in seconds can be set for the new PIN (value 0 indicates no
185f05cddf9SRui Pauloexpiration):
1863157ba21SRui Paulo
1873157ba21SRui Paulohostapd_cli wps_pin any 12345670 300
1883157ba21SRui Paulo
189f05cddf9SRui PauloIf the MAC address of the enrollee is known, it should be configured
190f05cddf9SRui Pauloto allow the AP to advertise list of authorized enrollees:
191f05cddf9SRui Paulo
192f05cddf9SRui Paulohostapd_cli wps_pin 53b63a98-d29e-4457-a2ed-094d7e6a669c \
193f05cddf9SRui Paulo	12345670 300 00:11:22:33:44:55
194f05cddf9SRui Paulo
19539beb93cSSam Leffler
19639beb93cSSam LefflerAfter this, the Enrollee can connect to the AP again and complete WPS
19739beb93cSSam Lefflernegotiation. At that point, a new, random WPA PSK is generated for the
19839beb93cSSam Lefflerclient device and the client can then use that key to connect to the
19939beb93cSSam LefflerAP to access the network.
20039beb93cSSam Leffler
20139beb93cSSam Leffler
20239beb93cSSam LefflerIf the AP includes a pushbutton, WPS PBC mode can be used. It is
20339beb93cSSam Lefflerenabled by pushing a button on both the AP and the client at about the
20439beb93cSSam Lefflersame time (2 minute window). hostapd needs to be notified about the AP
20539beb93cSSam Lefflerbutton pushed event over the control interface, e.g., by calling
20639beb93cSSam Lefflerhostapd_cli:
20739beb93cSSam Leffler
20839beb93cSSam Lefflerhostapd_cli wps_pbc
20939beb93cSSam Leffler
21039beb93cSSam LefflerAt this point, the client has two minutes to complete WPS negotiation
21139beb93cSSam Lefflerwhich will generate a new WPA PSK in the same way as the PIN method
21239beb93cSSam Lefflerdescribed above.
21339beb93cSSam Leffler
21439beb93cSSam Leffler
215e28a4053SRui PauloWhen an external Registrar is used, the AP can act as an Enrollee and
216e28a4053SRui Paulouse its AP PIN. A static AP PIN (e.g., one one a label in the AP
217e28a4053SRui Paulodevice) can be configured in hostapd.conf (ap_pin parameter). A more
218e28a4053SRui Paulosecure option is to use hostapd_cli wps_ap_pin command to enable the
219e28a4053SRui PauloAP PIN only based on user action (and even better security by using a
220e28a4053SRui Paulorandom AP PIN for each session, i.e., by using "wps_ap_pin random"
221e28a4053SRui Paulocommand with a timeout value). Following commands are available for
222e28a4053SRui Paulomanaging the dynamic AP PIN operations:
223e28a4053SRui Paulo
224e28a4053SRui Paulohostapd_cli wps_ap_pin disable
225e28a4053SRui Paulo- disable AP PIN (i.e., do not allow external Registrars to use it to
226e28a4053SRui Paulo  learn the current AP settings or to reconfigure the AP)
227e28a4053SRui Paulo
228e28a4053SRui Paulohostapd_cli wps_ap_pin random [timeout]
229e28a4053SRui Paulo- generate a random AP PIN and enable it
230e28a4053SRui Paulo- if the optional timeout parameter is given, the AP PIN will be enabled
231e28a4053SRui Paulo  for the specified number of seconds
232e28a4053SRui Paulo
233e28a4053SRui Paulohostapd_cli wps_ap_pin get
234e28a4053SRui Paulo- fetch the current AP PIN
235e28a4053SRui Paulo
236e28a4053SRui Paulohostapd_cli wps_ap_pin set <PIN> [timeout]
237e28a4053SRui Paulo- set the AP PIN and enable it
238e28a4053SRui Paulo- if the optional timeout parameter is given, the AP PIN will be enabled
239e28a4053SRui Paulo  for the specified number of seconds
240e28a4053SRui Paulo
241f05cddf9SRui Paulohostapd_cli get_config
242f05cddf9SRui Paulo- display the current configuration
243f05cddf9SRui Paulo
244f05cddf9SRui Paulohostapd_cli wps_config <new SSID> <auth> <encr> <new key>
245f05cddf9SRui Pauloexamples:
246f05cddf9SRui Paulo  hostapd_cli wps_config testing WPA2PSK CCMP 12345678
247f05cddf9SRui Paulo  hostapd_cli wps_config "no security" OPEN NONE ""
248f05cddf9SRui Paulo
249f05cddf9SRui Paulo<auth> must be one of the following: OPEN WPAPSK WPA2PSK
250f05cddf9SRui Paulo<encr> must be one of the following: NONE WEP TKIP CCMP
251f05cddf9SRui Paulo
252e28a4053SRui Paulo
25339beb93cSSam LefflerCredential generation and configuration changes
25439beb93cSSam Leffler-----------------------------------------------
25539beb93cSSam Leffler
25639beb93cSSam LefflerBy default, hostapd generates credentials for Enrollees and processing
25739beb93cSSam LefflerAP configuration updates internally. However, it is possible to
25839beb93cSSam Lefflercontrol these operations from external programs, if desired.
25939beb93cSSam Leffler
26039beb93cSSam LefflerThe internal credential generation can be disabled with
26139beb93cSSam Lefflerskip_cred_build=1 option in the configuration. extra_cred option will
26239beb93cSSam Lefflerthen need to be used to provide pre-configured Credential attribute(s)
26339beb93cSSam Lefflerfor hostapd to use. The exact data from this binary file will be sent,
26439beb93cSSam Leffleri.e., it will have to include valid WPS attributes. extra_cred can
26539beb93cSSam Leffleralso be used to add additional networks if the Registrar is used to
26639beb93cSSam Lefflerconfigure credentials for multiple networks.
26739beb93cSSam Leffler
26839beb93cSSam LefflerProcessing of received configuration updates can be disabled with
26939beb93cSSam Lefflerwps_cred_processing=1 option. When this is used, an external program
27039beb93cSSam Leffleris responsible for creating hostapd configuration files and processing
27139beb93cSSam Lefflerconfiguration updates based on messages received from hostapd over
27239beb93cSSam Lefflercontrol interface. This will also include the initial configuration on
27339beb93cSSam Lefflerfirst successful registration if the AP is initially set in
27439beb93cSSam Lefflerunconfigured state.
27539beb93cSSam Leffler
27639beb93cSSam LefflerFollowing control interface messages are sent out for external programs:
27739beb93cSSam Leffler
27839beb93cSSam LefflerWPS-REG-SUCCESS <Enrollee MAC address <UUID-E>
27939beb93cSSam LefflerFor example:
28039beb93cSSam Leffler<2>WPS-REG-SUCCESS 02:66:a0:ee:17:27 2b7093f1-d6fb-5108-adbb-bea66bb87333
28139beb93cSSam Leffler
282f05cddf9SRui PauloThis can be used to trigger change from unconfigured to configured
28339beb93cSSam Lefflerstate (random configuration based on the first successful WPS
28439beb93cSSam Lefflerregistration). In addition, this can be used to update AP UI about the
28539beb93cSSam Lefflerstatus of WPS registration progress.
28639beb93cSSam Leffler
28739beb93cSSam Leffler
28839beb93cSSam LefflerWPS-NEW-AP-SETTINGS <hexdump of AP Setup attributes>
28939beb93cSSam LefflerFor example:
29039beb93cSSam Leffler<2>WPS-NEW-AP-SETTINGS 10260001011045000c6a6b6d2d7770732d74657374100300020020100f00020008102700403065346230343536633236366665306433396164313535346131663462663731323433376163666462376633393965353466316631623032306164343438623510200006024231cede15101e000844
29139beb93cSSam Leffler
29239beb93cSSam LefflerThis can be used to update the externally stored AP configuration and
29339beb93cSSam Lefflerthen update hostapd configuration (followed by restarting of hostapd).
294f05cddf9SRui Paulo
295f05cddf9SRui Paulo
296f05cddf9SRui PauloWPS with NFC
297f05cddf9SRui Paulo------------
298f05cddf9SRui Paulo
299f05cddf9SRui PauloWPS can be used with NFC-based configuration method. An NFC tag
300f05cddf9SRui Paulocontaining a password token from the Enrollee can be used to
301f05cddf9SRui Pauloauthenticate the connection instead of the PIN. In addition, an NFC tag
302f05cddf9SRui Paulowith a configuration token can be used to transfer AP settings without
303f05cddf9SRui Paulogoing through the WPS protocol.
304f05cddf9SRui Paulo
305f05cddf9SRui PauloWhen the AP acts as an Enrollee, a local NFC tag with a password token
306f05cddf9SRui Paulocan be used by touching the NFC interface of an external Registrar. The
307f05cddf9SRui Paulowps_nfc_token command is used to manage use of the NFC password token
308f05cddf9SRui Paulofrom the AP. "wps_nfc_token enable" enables the use of the AP's NFC
309f05cddf9SRui Paulopassword token (in place of AP PIN) and "wps_nfc_token disable" disables
310f05cddf9SRui Paulothe NFC password token.
311f05cddf9SRui Paulo
312f05cddf9SRui PauloThe NFC password token that is either pre-configured in the
313f05cddf9SRui Pauloconfiguration file (wps_nfc_dev_pw_id, wps_nfc_dh_pubkey,
314f05cddf9SRui Paulowps_nfc_dh_privkey, wps_nfc_dev_pw) or generated dynamically with
315f05cddf9SRui Paulo"wps_nfc_token <WPS|NDEF>" command. The nfc_pw_token tool from
316f05cddf9SRui Paulowpa_supplicant can be used to generate NFC password tokens during
317f05cddf9SRui Paulomanufacturing (each AP needs to have its own random keys).
318f05cddf9SRui Paulo
319f05cddf9SRui PauloThe "wps_nfc_config_token <WPS/NDEF>" command can be used to build an
320f05cddf9SRui PauloNFC configuration token. The output value from this command is a hexdump
321f05cddf9SRui Pauloof the current AP configuration (WPS parameter requests this to include
322f05cddf9SRui Pauloonly the WPS attributes; NDEF parameter requests additional NDEF
323f05cddf9SRui Pauloencapsulation to be included). This data needs to be written to an NFC
324f05cddf9SRui Paulotag with an external program. Once written, the NFC configuration token
325f05cddf9SRui Paulocan be used to touch an NFC interface on a station to provision the
326f05cddf9SRui Paulocredentials needed to access the network.
327f05cddf9SRui Paulo
328f05cddf9SRui PauloWhen the NFC device on the AP reads an NFC tag with a MIME media type
329f05cddf9SRui Paulo"application/vnd.wfa.wsc", the NDEF message payload (with or without
330f05cddf9SRui PauloNDEF encapsulation) can be delivered to hostapd using the
331f05cddf9SRui Paulofollowing hostapd_cli command:
332f05cddf9SRui Paulo
333f05cddf9SRui Paulowps_nfc_tag_read <hexdump of payload>
334f05cddf9SRui Paulo
335f05cddf9SRui PauloIf the NFC tag contains a password token, the token is added to the
336f05cddf9SRui Paulointernal Registrar. This allows station Enrollee from which the password
337f05cddf9SRui Paulotoken was received to run through WPS protocol to provision the
338f05cddf9SRui Paulocredential.
339*5b9c547cSRui Paulo
340*5b9c547cSRui Paulo"nfc_get_handover_sel <NDEF> <WPS>" command can be used to build the
341*5b9c547cSRui Paulocontents of a Handover Select Message for connection handover when this
342*5b9c547cSRui Paulodoes not depend on the contents of the Handover Request Message. The
343*5b9c547cSRui Paulofirst argument selects the format of the output data and the second
344*5b9c547cSRui Pauloargument selects which type of connection handover is requested (WPS =
345*5b9c547cSRui PauloWi-Fi handover as specified in WSC 2.0).
346*5b9c547cSRui Paulo
347*5b9c547cSRui Paulo"nfc_report_handover <INIT/RESP> WPS <carrier from handover request>
348*5b9c547cSRui Paulo<carrier from handover select>" is used to report completed NFC
349*5b9c547cSRui Pauloconnection handover. The first parameter indicates whether the local
350*5b9c547cSRui Paulodevice initiated or responded to the connection handover and the carrier
351*5b9c547cSRui Paulorecords are the selected carrier from the handover request and select
352*5b9c547cSRui Paulomessages as a hexdump.
353