Home | History | Annotate | Line # | Download | only in wpa_supplicant
      1 wpa_supplicant and Hotspot 2.0
      2 ==============================
      3 
      4 This document describe how the IEEE 802.11u Interworking and Wi-Fi
      5 Hotspot 2.0 (Release 1) implementation in wpa_supplicant can be
      6 configured and how an external component on the client e.g., management
      7 GUI or Wi-Fi framework) is used to manage this functionality.
      8 
      9 
     10 Introduction to Wi-Fi Hotspot 2.0
     11 ---------------------------------
     12 
     13 Hotspot 2.0 is the name of the Wi-Fi Alliance specification that is used
     14 in the Wi-Fi CERTIFIED Passpoint<TM> program. More information about
     15 this is available in this white paper:
     16 
     17 http://www.wi-fi.org/knowledge-center/white-papers/wi-fi-certified-passpoint%E2%84%A2-new-program-wi-fi-alliance%C2%AE-enable-seamless
     18 
     19 The Hotspot 2.0 specification is also available from WFA:
     20 https://www.wi-fi.org/knowledge-center/published-specifications
     21 
     22 The core Interworking functionality (network selection, GAS/ANQP) were
     23 standardized in IEEE Std 802.11u-2011 which is now part of the IEEE Std
     24 802.11-2012.
     25 
     26 
     27 wpa_supplicant network selection
     28 --------------------------------
     29 
     30 Interworking support added option for configuring credentials that can
     31 work with multiple networks as an alternative to configuration of
     32 network blocks (e.g., per-SSID parameters). When requested to perform
     33 network selection, wpa_supplicant picks the highest priority enabled
     34 network block or credential. If a credential is picked (based on ANQP
     35 information from APs), a temporary network block is created
     36 automatically for the matching network. This temporary network block is
     37 used similarly to the network blocks that can be configured by the user,
     38 but it is not stored into the configuration file and is meant to be used
     39 only for temporary period of time since a new one can be created
     40 whenever needed based on ANQP information and the credential.
     41 
     42 By default, wpa_supplicant is not using automatic network selection
     43 unless requested explicitly with the interworking_select command. This
     44 can be changed with the auto_interworking=1 parameter to perform network
     45 selection automatically whenever trying to find a network for connection
     46 and none of the enabled network blocks match with the scan results. This
     47 case works similarly to "interworking_select auto", i.e., wpa_supplicant
     48 will internally determine which network or credential is going to be
     49 used based on configured priorities, scan results, and ANQP information.
     50 
     51 
     52 wpa_supplicant configuration
     53 ----------------------------
     54 
     55 Interworking and Hotspot 2.0 functionality are optional components that
     56 need to be enabled in the wpa_supplicant build configuration
     57 (.config). This is done by adding following parameters into that file:
     58 
     59 CONFIG_INTERWORKING=y
     60 CONFIG_HS20=y
     61 
     62 It should be noted that this functionality requires a driver that
     63 supports GAS/ANQP operations. This uses the same design as P2P, i.e.,
     64 Action frame processing and building in user space within
     65 wpa_supplicant. The Linux nl80211 driver interface provides the needed
     66 functionality for this.
     67 
     68 
     69 There are number of run-time configuration parameters (e.g., in
     70 wpa_supplicant.conf when using the configuration file) that can be used
     71 to control Hotspot 2.0 operations.
     72 
     73 # Enable Interworking
     74 interworking=1
     75 
     76 # Enable Hotspot 2.0
     77 hs20=1
     78 
     79 # Parameters for controlling scanning
     80 
     81 # Homogeneous ESS identifier
     82 # If this is set, scans will be used to request response only from BSSes
     83 # belonging to the specified Homogeneous ESS. This is used only if interworking
     84 # is enabled.
     85 #hessid=00:11:22:33:44:55
     86 
     87 # Access Network Type
     88 # When Interworking is enabled, scans can be limited to APs that advertise the
     89 # specified Access Network Type (0..15; with 15 indicating wildcard match).
     90 # This value controls the Access Network Type value in Probe Request frames.
     91 #access_network_type=15
     92 
     93 # Automatic network selection behavior
     94 # 0 = do not automatically go through Interworking network selection
     95 #     (i.e., require explicit interworking_select command for this; default)
     96 # 1 = perform Interworking network selection if one or more
     97 #     credentials have been configured and scan did not find a
     98 #     matching network block
     99 #auto_interworking=0
    100 
    101 
    102 Credentials can be pre-configured for automatic network selection:
    103 
    104 # credential block
    105 #
    106 # Each credential used for automatic network selection is configured as a set
    107 # of parameters that are compared to the information advertised by the APs when
    108 # interworking_select and interworking_connect commands are used.
    109 #
    110 # credential fields:
    111 #
    112 # temporary: Whether this credential is temporary and not to be saved
    113 #
    114 # priority: Priority group
    115 #	By default, all networks and credentials get the same priority group
    116 #	(0). This field can be used to give higher priority for credentials
    117 #	(and similarly in struct wpa_ssid for network blocks) to change the
    118 #	Interworking automatic networking selection behavior. The matching
    119 #	network (based on either an enabled network block or a credential)
    120 #	with the highest priority value will be selected.
    121 #
    122 # pcsc: Use PC/SC and SIM/USIM card
    123 #
    124 # realm: Home Realm for Interworking
    125 #
    126 # username: Username for Interworking network selection
    127 #
    128 # password: Password for Interworking network selection
    129 #
    130 # ca_cert: CA certificate for Interworking network selection
    131 #
    132 # client_cert: File path to client certificate file (PEM/DER)
    133 #	This field is used with Interworking networking selection for a case
    134 #	where client certificate/private key is used for authentication
    135 #	(EAP-TLS). Full path to the file should be used since working
    136 #	directory may change when wpa_supplicant is run in the background.
    137 #
    138 #	Alternatively, a named configuration blob can be used by setting
    139 #	this to blob://blob_name.
    140 #
    141 # private_key: File path to client private key file (PEM/DER/PFX)
    142 #	When PKCS#12/PFX file (.p12/.pfx) is used, client_cert should be
    143 #	commented out. Both the private key and certificate will be read
    144 #	from the PKCS#12 file in this case. Full path to the file should be
    145 #	used since working directory may change when wpa_supplicant is run
    146 #	in the background.
    147 #
    148 #	Windows certificate store can be used by leaving client_cert out and
    149 #	configuring private_key in one of the following formats:
    150 #
    151 #	cert://substring_to_match
    152 #
    153 #	hash://certificate_thumbprint_in_hex
    154 #
    155 #	For example: private_key="hash://63093aa9c47f56ae88334c7b65a4"
    156 #
    157 #	Note that when running wpa_supplicant as an application, the user
    158 #	certificate store (My user account) is used, whereas computer store
    159 #	(Computer account) is used when running wpasvc as a service.
    160 #
    161 #	Alternatively, a named configuration blob can be used by setting
    162 #	this to blob://blob_name.
    163 #
    164 # private_key_passwd: Password for private key file
    165 #
    166 # imsi: IMSI in <MCC> | <MNC> | '-' | <MSIN> format
    167 #
    168 # milenage: Milenage parameters for SIM/USIM simulator in <Ki>:<OPc>:<SQN>
    169 #	format
    170 #
    171 # imsi_privacy_cert: IMSI privacy certificate (PEM encoded X.509v3 certificate)
    172 #	This field is used with EAP-SIM/AKA/AKA' to encrypt the permanent
    173 #	identity (IMSI) to improve privacy. The X.509v3 certificate needs to
    174 #	include a 2048-bit RSA public key and this is from the operator who
    175 #	authenticates the SIM/USIM.
    176 # imsi_privacy_attr: IMSI privacy attribute
    177 #	This field is used to help the EAP-SIM/AKA/AKA' server to identify
    178 #	the used certificate (and as such, the matching private key). This
    179 #	is set to an attribute in name=value format if the operator needs
    180 #	this information.
    181 #
    182 # domain_suffix_match: Constraint for server domain name
    183 #	If set, this FQDN is used as a suffix match requirement for the AAA
    184 #	server certificate in SubjectAltName dNSName element(s). If a
    185 #	matching dNSName is found, this constraint is met. If no dNSName
    186 #	values are present, this constraint is matched against SubjectName CN
    187 #	using same suffix match comparison. Suffix match here means that the
    188 #	host/domain name is compared one label at a time starting from the
    189 #	top-level domain and all the labels in @domain_suffix_match shall be
    190 #	included in the certificate. The certificate may include additional
    191 #	sub-level labels in addition to the required labels.
    192 #
    193 #	For example, domain_suffix_match=example.com would match
    194 #	test.example.com but would not match test-example.com.
    195 #
    196 # domain: Home service provider FQDN(s)
    197 #	This is used to compare against the Domain Name List to figure out
    198 #	whether the AP is operated by the Home SP. Multiple domain entries can
    199 #	be used to configure alternative FQDNs that will be considered home
    200 #	networks.
    201 #
    202 # home_ois: Home OI(s)
    203 #	This string field contains one or more comma delimited OIs (hexdump)
    204 #	identifying the access the access points that support authentication
    205 #	with this credential. There are an alternative to the use of the realm
    206 #	parameter. When using Home OIs to match the network, the EAP parameters
    207 #	need to be pre-configured with the credentials since the NAI Realm
    208 #	information may not be available or fetched.
    209 #	A successful authentication with the access point is possible as soon
    210 #	as at least one Home OI from the list matches an OI in the Roaming
    211 #	Consortium advertised by the access point.
    212 #	(Hotspot 2.0 PerProviderSubscription/<X+>/HomeSP/HomeOIList/<X+>/HomeOI)
    213 #
    214 # required_home_ois: Required Home OI(s)
    215 #	This string field contains the set of Home OI(s) (hexdump) that are
    216 #	required to be advertised by the AP for the credential to be considered
    217 #	matching.
    218 #	(Hotspot 2.0 PerProviderSubscription/<X+>/HomeSP/HomeOIList/<X+>/HomeOIRequired)
    219 #
    220 # roaming_consortium: Roaming Consortium OI
    221 #	Deprecated: use home_ois instead.
    222 #	If roaming_consortium_len is non-zero, this field contains the
    223 #	Roaming Consortium OI that can be used to determine which access
    224 #	points support authentication with this credential. This is an
    225 #	alternative to the use of the realm parameter. When using Roaming
    226 #	Consortium to match the network, the EAP parameters need to be
    227 #	pre-configured with the credential since the NAI Realm information
    228 #	may not be available or fetched.
    229 #
    230 # required_roaming_consortium: Required Roaming Consortium OI
    231 #	Deprecated: use required_home_ois instead.
    232 #	If required_roaming_consortium_len is non-zero, this field contains the
    233 #	Roaming Consortium OI that is required to be advertised by the AP for
    234 #	the credential to be considered matching.
    235 #
    236 # roaming_consortiums: Roaming Consortium OI(s) memberships
    237 #	This string field contains one or more comma delimited OIs (hexdump)
    238 #	identifying the roaming consortiums of which the provider is a member.
    239 #	The list is sorted from the most preferred one to the least preferred
    240 #	one. A match between the Roaming Consortium OIs advertised by an AP and
    241 #	the OIs in this list indicates that successful authentication is
    242 #	possible.
    243 #	(Hotspot 2.0 PerProviderSubscription/<X+>/HomeSP/RoamingConsortiumOI)
    244 #
    245 # eap: Pre-configured EAP method
    246 #	This optional field can be used to specify which EAP method will be
    247 #	used with this credential. If not set, the EAP method is selected
    248 #	automatically based on ANQP information (e.g., NAI Realm).
    249 #
    250 # phase1: Pre-configure Phase 1 (outer authentication) parameters
    251 #	This optional field is used with like the 'eap' parameter.
    252 #
    253 # phase2: Pre-configure Phase 2 (inner authentication) parameters
    254 #	This optional field is used with like the 'eap' parameter.
    255 #
    256 # excluded_ssid: Excluded SSID
    257 #	This optional field can be used to excluded specific SSID(s) from
    258 #	matching with the network. Multiple entries can be used to specify more
    259 #	than one SSID.
    260 #
    261 # roaming_partner: Roaming partner information
    262 #	This optional field can be used to configure preferences between roaming
    263 #	partners. The field is a string in following format:
    264 #	<FQDN>,<0/1 exact match>,<priority>,<* or country code>
    265 #	(non-exact match means any subdomain matches the entry; priority is in
    266 #	0..255 range with 0 being the highest priority)
    267 #
    268 # update_identifier: PPS MO ID
    269 #	(Hotspot 2.0 PerProviderSubscription/UpdateIdentifier)
    270 #
    271 # provisioning_sp: FQDN of the SP that provisioned the credential
    272 #	This optional field can be used to keep track of the SP that provisioned
    273 #	the credential to find the PPS MO (./Wi-Fi/<provisioning_sp>).
    274 #
    275 # sp_priority: Credential priority within a provisioning SP
    276 #	This is the priority of the credential among all credentials
    277 #	provisioned by the same SP (i.e., for entries that have identical
    278 #	provisioning_sp value). The range of this priority is 0-255 with 0
    279 #	being the highest and 255 the lower priority.
    280 #
    281 # Minimum backhaul threshold (PPS/<X+>/Policy/MinBackhauldThreshold/*)
    282 #	These fields can be used to specify minimum download/upload backhaul
    283 #	bandwidth that is preferred for the credential. This constraint is
    284 #	ignored if the AP does not advertise WAN Metrics information or if the
    285 #	limit would prevent any connection. Values are in kilobits per second.
    286 # min_dl_bandwidth_home
    287 # min_ul_bandwidth_home
    288 # min_dl_bandwidth_roaming
    289 # min_ul_bandwidth_roaming
    290 #
    291 # max_bss_load: Maximum BSS Load Channel Utilization (1..255)
    292 #	(PPS/<X+>/Policy/MaximumBSSLoadValue)
    293 #	This value is used as the maximum channel utilization for network
    294 #	selection purposes for home networks. If the AP does not advertise
    295 #	BSS Load or if the limit would prevent any connection, this constraint
    296 #	will be ignored.
    297 #
    298 # req_conn_capab: Required connection capability
    299 #	(PPS/<X+>/Policy/RequiredProtoPortTuple)
    300 #	This value is used to configure set of required protocol/port pairs that
    301 #	a roaming network shall support (include explicitly in Connection
    302 #	Capability ANQP element). This constraint is ignored if the AP does not
    303 #	advertise Connection Capability or if this constraint would prevent any
    304 #	network connection. This policy is not used in home networks.
    305 #	Format: <protocol>[:<comma-separated list of ports]
    306 #	Multiple entries can be used to list multiple requirements.
    307 #	For example, number of common TCP protocols:
    308 #	req_conn_capab=6:22,80,443
    309 #	For example, IPSec/IKE:
    310 #	req_conn_capab=17:500
    311 #	req_conn_capab=50
    312 #
    313 # ocsp: Whether to use/require OCSP to check server certificate
    314 #	0 = do not use OCSP stapling (TLS certificate status extension)
    315 #	1 = try to use OCSP stapling, but not require response
    316 #	2 = require valid OCSP stapling response
    317 #
    318 # sim_num: Identifier for which SIM to use in multi-SIM devices
    319 #
    320 # engine: Whether to use an engine for private key operations (0/1)
    321 # engine_id: String identifying the engine to use
    322 # ca_cert_id: The CA certificate identifier when using an engine
    323 # cert_id: The certificate identifier when using an engine
    324 # key_id: The private key identifier when using an engine
    325 #
    326 # for example:
    327 #
    328 #cred={
    329 #	realm="example.com"
    330 #	username="user (a] example.com"
    331 #	password="password"
    332 #	ca_cert="/etc/wpa_supplicant/ca.pem"
    333 #	domain="example.com"
    334 #	domain_suffix_match="example.com"
    335 #}
    336 #
    337 #cred={
    338 #	imsi="310026-000000000"
    339 #	milenage="90dca4eda45b53cf0f12d7c9c3bc6a89:cb9cccc4b9258e6dca4760379fb82"
    340 #}
    341 #
    342 #cred={
    343 #	realm="example.com"
    344 #	username="user"
    345 #	password="password"
    346 #	ca_cert="/etc/wpa_supplicant/ca.pem"
    347 #	domain="example.com"
    348 #	home_ois="223344"
    349 #	roaming_consortiums="112233,4455667788,aabbcc"
    350 #	eap=TTLS
    351 #	phase2="auth=MSCHAPV2"
    352 #}
    353 
    354 
    355 Control interface
    356 -----------------
    357 
    358 wpa_supplicant provides a control interface that can be used from
    359 external programs to manage various operations. The included command
    360 line tool, wpa_cli, can be used for manual testing with this interface.
    361 
    362 Following wpa_cli interactive mode commands show some examples of manual
    363 operations related to Hotspot 2.0:
    364 
    365 Remove configured networks and credentials:
    366 
    367 > remove_network all
    368 OK
    369 > remove_cred all
    370 OK
    371 
    372 
    373 Add a username/password credential:
    374 
    375 > add_cred
    376 0
    377 > set_cred 0 realm "mail.example.com"
    378 OK
    379 > set_cred 0 username "username"
    380 OK
    381 > set_cred 0 password "password"
    382 OK
    383 > set_cred 0 priority 1
    384 OK
    385 > set_cred 0 temporary 1
    386 OK
    387 
    388 Add a SIM credential using a simulated SIM/USIM card for testing:
    389 
    390 > add_cred
    391 1
    392 > set_cred 1 imsi "23456-0000000000"
    393 OK
    394 > set_cred 1 milenage "90dca4eda45b53cf0f12d7c9c3bc6a89:cb9cccc4b9258e6dca4760379fb82581:000000000123"
    395 OK
    396 > set_cred 1 priority 1
    397 OK
    398 
    399 Note: the return value of add_cred is used as the first argument to
    400 the following set_cred commands.
    401 
    402 Add a SIM credential using a external SIM/USIM processing:
    403 
    404 > set external_sim 1
    405 OK
    406 > add_cred
    407 1
    408 > set_cred 1 imsi "23456-0000000000"
    409 OK
    410 > set_cred 1 eap SIM
    411 OK
    412 
    413 
    414 Add a WPA2-Enterprise network:
    415 
    416 > add_network
    417 0
    418 > set_network 0 key_mgmt WPA-EAP
    419 OK
    420 > set_network 0 ssid "enterprise"
    421 OK
    422 > set_network 0 eap TTLS
    423 OK
    424 > set_network 0 anonymous_identity "anonymous"
    425 OK
    426 > set_network 0 identity "user"
    427 OK
    428 > set_network 0 password "password"
    429 OK
    430 > set_network 0 priority 0
    431 OK
    432 > enable_network 0 no-connect
    433 OK
    434 
    435 
    436 Add an open network:
    437 
    438 > add_network
    439 3
    440 > set_network 3 key_mgmt NONE
    441 OK
    442 > set_network 3 ssid "coffee-shop"
    443 OK
    444 > select_network 3
    445 OK
    446 
    447 Note: the return value of add_network is used as the first argument to
    448 the following set_network commands.
    449 
    450 The preferred credentials/networks can be indicated with the priority
    451 parameter (1 is higher priority than 0).
    452 
    453 
    454 Interworking network selection can be started with interworking_select
    455 command. This instructs wpa_supplicant to run a network scan and iterate
    456 through the discovered APs to request ANQP information from the APs that
    457 advertise support for Interworking/Hotspot 2.0:
    458 
    459 > interworking_select
    460 OK
    461 <3>Starting ANQP fetch for 02:00:00:00:01:00
    462 <3>RX-ANQP 02:00:00:00:01:00 ANQP Capability list
    463 <3>RX-ANQP 02:00:00:00:01:00 Roaming Consortium list
    464 <3>RX-HS20-ANQP 02:00:00:00:01:00 HS Capability List
    465 <3>ANQP fetch completed
    466 <3>INTERWORKING-AP 02:00:00:00:01:00 type=unknown
    467 
    468 
    469 INTERWORKING-AP event messages indicate the APs that support network
    470 selection and for which there is a matching
    471 credential. interworking_connect command can be used to select a network
    472 to connect with:
    473 
    474 
    475 > interworking_connect 02:00:00:00:01:00
    476 OK
    477 <3>CTRL-EVENT-SCAN-RESULTS
    478 <3>SME: Trying to authenticate with 02:00:00:00:01:00 (SSID='Example Network' freq=2412 MHz)
    479 <3>Trying to associate with 02:00:00:00:01:00 (SSID='Example Network' freq=2412 MHz)
    480 <3>Associated with 02:00:00:00:01:00
    481 <3>CTRL-EVENT-EAP-STARTED EAP authentication started
    482 <3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=21
    483 <3>CTRL-EVENT-EAP-METHOD EAP vendor 0 method 21 (TTLS) selected
    484 <3>CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully
    485 <3>WPA: Key negotiation completed with 02:00:00:00:01:00 [PTK=CCMP GTK=CCMP]
    486 <3>CTRL-EVENT-CONNECTED - Connection to 02:00:00:00:01:00 completed (auth) [id=0 id_str=]
    487 
    488 
    489 wpa_supplicant creates a temporary network block for the selected
    490 network based on the configured credential and ANQP information from the
    491 AP:
    492 
    493 > list_networks
    494 network id / ssid / bssid / flags
    495 0	Example Network	any	[CURRENT]
    496 > get_network 0 key_mgmt
    497 WPA-EAP
    498 > get_network 0 eap
    499 TTLS
    500 
    501 
    502 Alternatively to using an external program to select the network,
    503 "interworking_select auto" command can be used to request wpa_supplicant
    504 to select which network to use based on configured priorities:
    505 
    506 
    507 > remove_network all
    508 OK
    509 <3>CTRL-EVENT-DISCONNECTED bssid=02:00:00:00:01:00 reason=1 locally_generated=1
    510 > interworking_select auto
    511 OK
    512 <3>Starting ANQP fetch for 02:00:00:00:01:00
    513 <3>RX-ANQP 02:00:00:00:01:00 ANQP Capability list
    514 <3>RX-ANQP 02:00:00:00:01:00 Roaming Consortium list
    515 <3>RX-HS20-ANQP 02:00:00:00:01:00 HS Capability List
    516 <3>ANQP fetch completed
    517 <3>INTERWORKING-AP 02:00:00:00:01:00 type=unknown
    518 <3>CTRL-EVENT-SCAN-RESULTS
    519 <3>SME: Trying to authenticate with 02:00:00:00:01:00 (SSID='Example Network' freq=2412 MHz)
    520 <3>Trying to associate with 02:00:00:00:01:00 (SSID='Example Network' freq=2412 MHz)
    521 <3>Associated with 02:00:00:00:01:00
    522 <3>CTRL-EVENT-EAP-STARTED EAP authentication started
    523 <3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=21
    524 <3>CTRL-EVENT-EAP-METHOD EAP vendor 0 method 21 (TTLS) selected
    525 <3>CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully
    526 <3>WPA: Key negotiation completed with 02:00:00:00:01:00 [PTK=CCMP GTK=CCMP]
    527 <3>CTRL-EVENT-CONNECTED - Connection to 02:00:00:00:01:00 completed (reauth) [id=0 id_str=]
    528 
    529 
    530 The connection status can be shown with the status command:
    531 
    532 > status
    533 bssid=02:00:00:00:01:00
    534 ssid=Example Network
    535 id=0
    536 mode=station
    537 pairwise_cipher=CCMP       <--- link layer security indication
    538 group_cipher=CCMP
    539 key_mgmt=WPA2/IEEE 802.1X/EAP
    540 wpa_state=COMPLETED
    541 p2p_device_address=02:00:00:00:00:00
    542 address=02:00:00:00:00:00
    543 hs20=1      <--- HS 2.0 indication
    544 Supplicant PAE state=AUTHENTICATED
    545 suppPortStatus=Authorized
    546 EAP state=SUCCESS
    547 selectedMethod=21 (EAP-TTLS)
    548 EAP TLS cipher=AES-128-SHA
    549 EAP-TTLSv0 Phase2 method=PAP
    550 
    551 
    552 > status
    553 bssid=02:00:00:00:02:00
    554 ssid=coffee-shop
    555 id=3
    556 mode=station
    557 pairwise_cipher=NONE
    558 group_cipher=NONE
    559 key_mgmt=NONE
    560 wpa_state=COMPLETED
    561 p2p_device_address=02:00:00:00:00:00
    562 address=02:00:00:00:00:00
    563 
    564 
    565 Note: The Hotspot 2.0 indication is shown as "hs20=1" in the status
    566 command output. Link layer security is indicated with the
    567 pairwise_cipher (CCMP = secure, NONE = no encryption used).
    568 
    569 
    570 Also the scan results include the Hotspot 2.0 indication:
    571 
    572 > scan_results
    573 bssid / frequency / signal level / flags / ssid
    574 02:00:00:00:01:00	2412	-30	[WPA2-EAP-CCMP][ESS][HS20]	Example Network
    575 
    576 
    577 ANQP information for the BSS can be fetched using the BSS command:
    578 
    579 > bss 02:00:00:00:01:00
    580 id=1
    581 bssid=02:00:00:00:01:00
    582 freq=2412
    583 beacon_int=100
    584 capabilities=0x0411
    585 qual=0
    586 noise=-92
    587 level=-30
    588 tsf=1345573286517276
    589 age=105
    590 ie=000f4578616d706c65204e6574776f726b010882848b960c1218240301012a010432043048606c30140100000fac040100000fac040100000fac0100007f04000000806b091e07010203040506076c027f006f1001531122331020304050010203040506dd05506f9a1000
    591 flags=[WPA2-EAP-CCMP][ESS][HS20]
    592 ssid=Example Network
    593 anqp_roaming_consortium=031122330510203040500601020304050603fedcba
    594 
    595 
    596 ANQP queries can also be requested with the anqp_get and hs20_anqp_get
    597 commands:
    598 
    599 > anqp_get 02:00:00:00:01:00 261
    600 OK
    601 <3>RX-ANQP 02:00:00:00:01:00 Roaming Consortium list
    602 > hs20_anqp_get 02:00:00:00:01:00 2
    603 OK
    604 <3>RX-HS20-ANQP 02:00:00:00:01:00 HS Capability List
    605 
    606 In addition, fetch_anqp command can be used to request similar set of
    607 ANQP queries to be done as is run as part of interworking_select:
    608 
    609 > scan
    610 OK
    611 <3>CTRL-EVENT-SCAN-RESULTS
    612 > fetch_anqp
    613 OK
    614 <3>Starting ANQP fetch for 02:00:00:00:01:00
    615 <3>RX-ANQP 02:00:00:00:01:00 ANQP Capability list
    616 <3>RX-ANQP 02:00:00:00:01:00 Roaming Consortium list
    617 <3>RX-HS20-ANQP 02:00:00:00:01:00 HS Capability List
    618 <3>ANQP fetch completed
    619 
    620 
    621 Hotspot 2.0 Rel 2 online signup and OSEN
    622 ----------------------------------------
    623 
    624 Following parameters can be used to create a network profile for
    625 link-layer protected Hotspot 2.0 online signup connection with
    626 OSEN. Note that ssid and identify (NAI) values need to be set based on
    627 the information for the selected provider in the OSU Providers list
    628 ANQP-element.
    629 
    630 network={
    631     ssid="HS 2.0 OSU"
    632     proto=OSEN
    633     key_mgmt=OSEN
    634     pairwise=CCMP
    635     group=GTK_NOT_USED
    636     eap=WFA-UNAUTH-TLS
    637     identity="anonymous (a] example.com"
    638     ca_cert="osu-ca.pem"
    639     ocsp=2
    640 }
    641 
    642 
    643 Hotspot 2.0 connection with external network selection
    644 ------------------------------------------------------
    645 
    646 When a component controlling wpa_supplicant takes care of Interworking
    647 network selection, following configuration and network profile
    648 parameters can be used to configure a temporary network profile for a
    649 Hotspot 2.0 connection (e.g., with SET, ADD_NETWORK, SET_NETWORK, and
    650 SELECT_NETWORK control interface commands):
    651 
    652 interworking=1
    653 hs20=1
    654 auto_interworking=0
    655 
    656 network={
    657     ssid="test-hs20"
    658     proto=RSN
    659     key_mgmt=WPA-EAP
    660     pairwise=CCMP
    661     anonymous_identity="anonymous (a] example.com"
    662     identity="hs20-test (a] example.com"
    663     password="password"
    664     ca_cert="ca.pem"
    665     eap=TTLS
    666     phase2="auth=MSCHAPV2"
    667     update_identifier=54321
    668     roaming_consortium_selection=112233
    669     #ocsp=2
    670 }
    671 
    672 
    673 These parameters are set based on the PPS MO credential and/or NAI Realm
    674 list ANQP-element:
    675 
    676 anonymous_identity: Credential/UsernamePassword/Username with username part
    677 		    replaced with "anonymous"
    678 identity: Credential/UsernamePassword/Username
    679 password: Credential/UsernamePassword/Password
    680 update_identifier: PPS/UpdateIdentifier
    681 ca_cert: from the downloaded trust root based on PPS information
    682 eap: Credential/UsernamePassword/EAPMethod or NAI Realm list
    683 phase2: Credential/UsernamePassword/EAPMethod or NAI Realm list
    684 roaming_consortium_selection: Matching OI from HomeSP/RoamingConsortiumOI
    685 ocsp: Credential/CheckAAAServerCertStatus
    686