xref: /aosp_15_r20/external/wpa_supplicant_8/wpa_supplicant/README-HS20 (revision 03f9172ca588f91df233974f4258bab95191f931)
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