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