Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 1 | wpa_supplicant and Wi-Fi P2P |
| 2 | ============================ |
| 3 | |
| 4 | This document describes how the Wi-Fi P2P implementation in |
| 5 | wpa_supplicant can be configured and how an external component on the |
| 6 | client (e.g., management GUI) is used to enable WPS enrollment and |
| 7 | registrar registration. |
| 8 | |
| 9 | |
| 10 | Introduction to Wi-Fi P2P |
| 11 | ------------------------- |
| 12 | |
| 13 | TODO |
| 14 | |
| 15 | More information about Wi-Fi P2P is available from Wi-Fi Alliance: |
| 16 | http://www.wi-fi.org/Wi-Fi_Direct.php |
| 17 | |
| 18 | |
| 19 | wpa_supplicant implementation |
| 20 | ----------------------------- |
| 21 | |
| 22 | TODO |
| 23 | |
| 24 | |
| 25 | wpa_supplicant configuration |
| 26 | ---------------------------- |
| 27 | |
| 28 | Wi-Fi P2P is an optional component that needs to be enabled in the |
| 29 | wpa_supplicant build configuration (.config). Here is an example |
| 30 | configuration that includes Wi-Fi P2P support and Linux nl80211 |
| 31 | -based driver interface: |
| 32 | |
| 33 | CONFIG_DRIVER_NL80211=y |
| 34 | CONFIG_CTRL_IFACE=y |
| 35 | CONFIG_P2P=y |
| 36 | CONFIG_AP=y |
| 37 | CONFIG_WPS=y |
| 38 | |
| 39 | |
| 40 | In run-time configuration file (wpa_supplicant.conf), some parameters |
| 41 | for P2P may be set. In order to make the devices easier to recognize, |
| 42 | device_name and device_type should be specified. For example, |
| 43 | something like this should be included: |
| 44 | |
| 45 | ctrl_interface=/var/run/wpa_supplicant |
| 46 | device_name=My P2P Device |
| 47 | device_type=1-0050F204-1 |
| 48 | |
| 49 | |
| 50 | wpa_cli |
| 51 | ------- |
| 52 | |
| 53 | Actual Wi-Fi P2P operations are requested during runtime. These can be |
| 54 | done for example using wpa_cli (which is described below) or a GUI |
| 55 | like wpa_gui-qt4. |
| 56 | |
| 57 | |
| 58 | wpa_cli starts in interactive mode if no command string is included on |
| 59 | the command line. By default, it will select the first network interface |
| 60 | that it can find (and that wpa_supplicant controls). If more than one |
| 61 | interface is in use, it may be necessary to select one of the explicitly |
| 62 | by adding -i argument on the command line (e.g., 'wpa_cli -i wlan1'). |
| 63 | |
| 64 | Most of the P2P operations are done on the main interface (e.g., the |
| 65 | interface that is automatically added when the driver is loaded, e.g., |
| 66 | wlan0). When using a separate virtual interface for group operations |
| 67 | (e.g., wlan1), the control interface for that group interface may need |
| 68 | to be used for some operations (mainly WPS activation in GO). This may |
| 69 | change in the future so that all the needed operations could be done |
| 70 | over the main control interface. |
| 71 | |
| 72 | Device Discovery |
| 73 | |
Dmitry Shmidt | 61d9df3 | 2012-08-29 16:22:06 -0700 | [diff] [blame] | 74 | p2p_find [timeout in seconds] [type=<social|progressive>] \ |
Dmitry Shmidt | 344abd3 | 2014-01-14 13:17:00 -0800 | [diff] [blame] | 75 | [dev_id=<addr>] [dev_type=<device type>] \ |
Dmitry Shmidt | 203eadb | 2015-03-05 14:16:04 -0800 | [diff] [blame] | 76 | [delay=<search delay in ms>] [seek=<service name>] [freq=<MHz>] |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 77 | |
| 78 | The default behavior is to run a single full scan in the beginning and |
| 79 | then scan only social channels. type=social will scan only social |
| 80 | channels, i.e., it skips the initial full scan. type=progressive is |
| 81 | like the default behavior, but it will scan through all the channels |
| 82 | progressively one channel at the time in the Search state rounds. This |
| 83 | will help in finding new groups or groups missed during the initial |
Dmitry Shmidt | 203eadb | 2015-03-05 14:16:04 -0800 | [diff] [blame] | 84 | full scan. When the type parameter is not included (i.e., full scan), the |
| 85 | optional freq parameter can be used to override the first scan to use only |
| 86 | the specified channel after which only social channels are scanned. |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 87 | |
Dmitry Shmidt | 61d9df3 | 2012-08-29 16:22:06 -0700 | [diff] [blame] | 88 | The optional dev_id option can be used to specify a single P2P peer to |
| 89 | search for. The optional delay parameter can be used to request an extra |
| 90 | delay to be used between search iterations (e.g., to free up radio |
| 91 | resources for concurrent operations). |
| 92 | |
Dmitry Shmidt | 344abd3 | 2014-01-14 13:17:00 -0800 | [diff] [blame] | 93 | The optional dev_type option can be used to specify a single device type |
| 94 | (primary or secondary) to search for, e.g., |
| 95 | "p2p_find dev_type=1-0050F204-1". |
| 96 | |
Dmitry Shmidt | 7f65602 | 2015-02-25 14:36:37 -0800 | [diff] [blame] | 97 | |
| 98 | With one or more seek arguments, the command sends Probe Request frames |
| 99 | for a P2PS service. For example, |
| 100 | p2p_find 5 dev_id=11:22:33:44:55:66 seek=alt.example.chat seek=alt.example.video |
| 101 | |
| 102 | Parameters description: |
| 103 | Timeout - Optional ASCII base-10-encoded u16. If missing, request will not |
| 104 | time out and must be canceled manually |
| 105 | dev_id - Optional to request responses from a single known remote device |
| 106 | Service Name - Mandatory UTF-8 string for ASP seeks |
| 107 | Service name must match the remote service being advertised exactly |
| 108 | (no prefix matching). |
| 109 | Service name may be empty, in which case all ASP services will be |
| 110 | returned, and may be filtered with p2p_serv_disc_req settings, and |
| 111 | p2p_serv_asp_resp results. |
| 112 | Multiple service names may be requested, but if it exceeds internal |
| 113 | limit, it will automatically revert to requesting all ASP services. |
| 114 | |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 115 | p2p_listen [timeout in seconds] |
| 116 | |
| 117 | Start Listen-only state (become discoverable without searching for |
| 118 | other devices). Optional parameter can be used to specify the duration |
| 119 | for the Listen operation in seconds. This command may not be of that |
| 120 | much use during normal operations and is mainly designed for |
| 121 | testing. It can also be used to keep the device discoverable without |
| 122 | having to maintain a group. |
| 123 | |
| 124 | p2p_stop_find |
| 125 | |
| 126 | Stop ongoing P2P device discovery or other operation (connect, listen |
| 127 | mode). |
| 128 | |
| 129 | p2p_flush |
| 130 | |
| 131 | Flush P2P peer table and state. |
| 132 | |
| 133 | Group Formation |
| 134 | |
Dmitry Shmidt | 0494959 | 2012-07-19 12:16:46 -0700 | [diff] [blame] | 135 | p2p_prov_disc <peer device address> <display|keypad|pbc> [join|auto] |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 136 | |
| 137 | Send P2P provision discovery request to the specified peer. The |
| 138 | parameters for this command are the P2P device address of the peer and |
| 139 | the desired configuration method. For example, "p2p_prov_disc |
| 140 | 02:01:02:03:04:05 display" would request the peer to display a PIN for |
| 141 | us and "p2p_prov_disc 02:01:02:03:04:05 keypad" would request the peer |
| 142 | to enter a PIN that we display. |
| 143 | |
Dmitry Shmidt | 1f69aa5 | 2012-01-24 16:10:04 -0800 | [diff] [blame] | 144 | The optional "join" parameter can be used to indicate that this command |
| 145 | is requesting an already running GO to prepare for a new client. This is |
Dmitry Shmidt | 0494959 | 2012-07-19 12:16:46 -0700 | [diff] [blame] | 146 | mainly used with "display" to request it to display a PIN. The "auto" |
| 147 | parameter can be used to request wpa_supplicant to automatically figure |
| 148 | out whether the peer device is operating as a GO and if so, use |
| 149 | join-a-group style PD instead of GO Negotiation style PD. |
Dmitry Shmidt | 1f69aa5 | 2012-01-24 16:10:04 -0800 | [diff] [blame] | 150 | |
Dmitry Shmidt | 7f65602 | 2015-02-25 14:36:37 -0800 | [diff] [blame] | 151 | p2p_connect <peer device address> <pbc|pin|PIN#|p2ps> [display|keypad|p2ps] |
Dmitry Shmidt | 0494959 | 2012-07-19 12:16:46 -0700 | [diff] [blame] | 152 | [persistent|persistent=<network id>] [join|auth] |
Dmitry Shmidt | 7f65602 | 2015-02-25 14:36:37 -0800 | [diff] [blame] | 153 | [go_intent=<0..15>] [freq=<in MHz>] [ht40] [vht] [provdisc] [auto] |
Dmitry Shmidt | de47be7 | 2016-01-07 12:52:55 -0800 | [diff] [blame] | 154 | [ssid=<hexdump>] |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 155 | |
| 156 | Start P2P group formation with a discovered P2P peer. This includes |
| 157 | optional group owner negotiation, group interface setup, provisioning, |
| 158 | and establishing data connection. |
| 159 | |
| 160 | The <pbc|pin|PIN#> parameter specifies the WPS provisioning |
| 161 | method. "pbc" string starts pushbutton method, "pin" string start PIN |
| 162 | method using an automatically generated PIN (which will be returned as |
| 163 | the command return code), PIN# means that a pre-selected PIN can be |
Dmitry Shmidt | 1f69aa5 | 2012-01-24 16:10:04 -0800 | [diff] [blame] | 164 | used (e.g., 12345670). [display|keypad] is used with PIN method |
| 165 | to specify which PIN is used (display=dynamically generated random PIN |
| 166 | from local display, keypad=PIN entered from peer display). "persistent" |
Dmitry Shmidt | 0494959 | 2012-07-19 12:16:46 -0700 | [diff] [blame] | 167 | parameter can be used to request a persistent group to be formed. The |
| 168 | "persistent=<network id>" alternative can be used to pre-populate |
| 169 | SSID/passphrase configuration based on a previously used persistent |
| 170 | group where this device was the GO. The previously used parameters will |
| 171 | then be used if the local end becomes the GO in GO Negotiation (which |
| 172 | can be forced with go_intent=15). |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 173 | |
| 174 | "join" indicates that this is a command to join an existing group as a |
| 175 | client. It skips the GO Negotiation part. This will send a Provision |
| 176 | Discovery Request message to the target GO before associating for WPS |
| 177 | provisioning. |
| 178 | |
| 179 | "auth" indicates that the WPS parameters are authorized for the peer |
| 180 | device without actually starting GO Negotiation (i.e., the peer is |
| 181 | expected to initiate GO Negotiation). This is mainly for testing |
| 182 | purposes. |
| 183 | |
| 184 | "go_intent" can be used to override the default GO Intent for this GO |
| 185 | Negotiation. |
| 186 | |
| 187 | "freq" can be used to set a forced operating channel (e.g., freq=2412 |
| 188 | to select 2.4 GHz channel 1). |
| 189 | |
Dmitry Shmidt | 0494959 | 2012-07-19 12:16:46 -0700 | [diff] [blame] | 190 | "provdisc" can be used to request a Provision Discovery exchange to be |
| 191 | used prior to starting GO Negotiation as a workaround with some deployed |
| 192 | P2P implementations that require this to allow the user to accept the |
| 193 | connection. |
| 194 | |
Dmitry Shmidt | 7f65602 | 2015-02-25 14:36:37 -0800 | [diff] [blame] | 195 | "auto" can be used to request wpa_supplicant to automatically figure |
| 196 | out whether the peer device is operating as a GO and if so, use |
| 197 | join-a-group operation rather than GO Negotiation. |
| 198 | |
Dmitry Shmidt | de47be7 | 2016-01-07 12:52:55 -0800 | [diff] [blame] | 199 | "ssid=<hexdump>" can be used to specify the Group SSID for join |
| 200 | operations. This allows the P2P Client interface to filter scan results |
| 201 | based on SSID to avoid selecting an incorrect BSS entry in case the same |
| 202 | P2P Device or Interface address have been used in multiple groups |
| 203 | recently. |
| 204 | |
Dmitry Shmidt | 7f65602 | 2015-02-25 14:36:37 -0800 | [diff] [blame] | 205 | P2PS attribute changes to p2p_connect command: |
| 206 | |
| 207 | P2PS supports two WPS provisioning methods namely PIN method and P2PS default. |
Dmitry Shmidt | 9c17526 | 2016-03-03 10:20:07 -0800 | [diff] [blame] | 208 | The remaining parameters hold same role as in legacy P2P. In case of P2PS |
| 209 | default config method "p2ps" keyword is added in p2p_connect command. |
Dmitry Shmidt | 7f65602 | 2015-02-25 14:36:37 -0800 | [diff] [blame] | 210 | |
| 211 | For example: |
| 212 | p2p_connect 02:0a:f5:85:11:00 12345670 p2ps persistent join |
| 213 | (WPS Method = P2PS default) |
| 214 | |
| 215 | p2p_connect 02:0a:f5:85:11:00 45629034 keypad persistent |
| 216 | (WPS Method = PIN) |
| 217 | |
| 218 | p2p_asp_provision <peer MAC address> <adv_id=peer adv id> |
| 219 | <adv_mac=peer MAC address> [role=2|4|1] <session=session id> |
| 220 | <session_mac=initiator mac address> |
| 221 | [info='service info'] <method=Default|keypad|Display> |
| 222 | |
| 223 | This command starts provision discovery with the P2PS enabled peer device. |
| 224 | |
| 225 | For example, |
| 226 | p2p_asp_provision 00:11:22:33:44:55 adv_id=4d6fc7 adv_mac=00:55:44:33:22:11 role=1 session=12ab34 session_mac=00:11:22:33:44:55 info='name=john' method=1000 |
| 227 | |
| 228 | Parameter description: |
| 229 | MAC address - Mandatory |
| 230 | adv_id - Mandatory remote Advertising ID of service connection is being |
| 231 | established for |
| 232 | adv_mac - Mandatory MAC address that owns/registered the service |
| 233 | role - Optional |
| 234 | 2 (group client only) or 4 (group owner only) |
| 235 | if not present (or 1) role is negotiated by the two peers. |
| 236 | session - Mandatory Session ID of the first session to be established |
| 237 | session_mac - Mandatory MAC address that owns/initiated the session |
| 238 | method - Optional method to request for provisioning (1000 - P2PS Default, |
| 239 | 100 - Keypad(PIN), 8 - Display(PIN)) |
| 240 | info - Optional UTF-8 string. Hint for service to indicate possible usage |
| 241 | parameters - Escape single quote & backslash: |
| 242 | with a backslash 0x27 == ' == \', and 0x5c == \ == \\ |
| 243 | |
| 244 | p2p_asp_provision_resp <peer mac address> <adv_id= local adv id> |
| 245 | <adv_mac=local MAC address> <role=1|2|4> <status=0> |
| 246 | <session=session id> <session_mac=peer MAC address> |
| 247 | |
| 248 | This command sends a provision discovery response from responder side. |
| 249 | |
| 250 | For example, |
| 251 | p2p_asp_provision_resp 00:55:44:33:22:11 adv_id=4d6fc7 adv_mac=00:55:44:33:22:11 role=1 status=0 session=12ab34 session_mac=00:11:22:33:44:55 |
| 252 | |
| 253 | Parameters definition: |
| 254 | MAC address - Mandatory |
| 255 | adv_id - Mandatory local Advertising ID of service connection is being |
| 256 | established for |
| 257 | adv_mac - Mandatory MAC address that owns/registered the service |
| 258 | role - Optional 2 (group client only) or 4 (group owner only) |
| 259 | if not present (or 1) role is negotiated by the two peers. |
| 260 | status - Mandatory Acceptance/Rejection code of Provisioning |
| 261 | session - Mandatory Session ID of the first session to be established |
| 262 | session_mac - Mandatory MAC address that owns/initiated the session |
| 263 | |
Dmitry Shmidt | 68d0e3e | 2013-10-28 17:59:21 -0700 | [diff] [blame] | 264 | p2p_group_add [persistent|persistent=<network id>] [freq=<freq in MHz>] |
| 265 | [ht40] [vht] |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 266 | |
| 267 | Set up a P2P group owner manually (i.e., without group owner |
| 268 | negotiation with a specific peer). This is also known as autonomous |
| 269 | GO. Optional persistent=<network id> can be used to specify restart of |
| 270 | a persistent group. Optional freq=<freq in MHz> can be used to force |
| 271 | the GO to be started on a specific frequency. Special freq=2 or freq=5 |
| 272 | options can be used to request the best 2.4 GHz or 5 GHz band channel |
| 273 | to be selected automatically. |
| 274 | |
| 275 | p2p_reject <peer device address> |
| 276 | |
| 277 | Reject connection attempt from a peer (specified with a device |
| 278 | address). This is a mechanism to reject a pending GO Negotiation with |
| 279 | a peer and request to automatically block any further connection or |
| 280 | discovery of the peer. |
| 281 | |
| 282 | p2p_group_remove <group interface> |
| 283 | |
| 284 | Terminate a P2P group. If a new virtual network interface was used for |
| 285 | the group, it will also be removed. The network interface name of the |
| 286 | group interface is used as a parameter for this command. |
| 287 | |
| 288 | p2p_cancel |
| 289 | |
Dmitry Shmidt | a54fa5f | 2013-01-15 13:53:35 -0800 | [diff] [blame] | 290 | Cancel an ongoing P2P group formation and joining-a-group related |
Dmitry Shmidt | 9c17526 | 2016-03-03 10:20:07 -0800 | [diff] [blame] | 291 | operation. This operation unauthorizes the specific peer device (if any |
Dmitry Shmidt | a54fa5f | 2013-01-15 13:53:35 -0800 | [diff] [blame] | 292 | had been authorized to start group formation), stops P2P find (if in |
| 293 | progress), stops pending operations for join-a-group, and removes the |
| 294 | P2P group interface (if one was used) that is in the WPS provisioning |
| 295 | step. If the WPS provisioning step has been completed, the group is not |
| 296 | terminated. |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 297 | |
Dmitry Shmidt | 391c59f | 2013-09-03 12:16:28 -0700 | [diff] [blame] | 298 | p2p_remove_client <peer's P2P Device Address|iface=<interface address>> |
| 299 | |
| 300 | This command can be used to remove the specified client from all groups |
| 301 | (operating and persistent) from the local GO. Note that the peer device |
| 302 | can rejoin the group if it is in possession of a valid key. See p2p_set |
| 303 | per_sta_psk command below for more details on how the peer can be |
| 304 | removed securely. |
| 305 | |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 306 | Service Discovery |
| 307 | |
Dmitry Shmidt | 7f65602 | 2015-02-25 14:36:37 -0800 | [diff] [blame] | 308 | p2p_service_add asp <auto accept> <adv id> <status 0/1> <Config Methods> |
| 309 | <Service name> [Service Information] [Response Info] |
| 310 | |
| 311 | This command can be used to search for a P2PS service which includes |
| 312 | Play, Send, Display, and Print service. The parameters for this command |
| 313 | are "asp" to identify the command as P2PS one, auto accept value, |
| 314 | advertisement id which uniquely identifies the service requests, state |
| 315 | of the service whether the service is available or not, config methods |
| 316 | which can be either P2PS method or PIN method, service name followed by |
| 317 | two optional parameters service information, and response info. |
| 318 | |
| 319 | For example, |
| 320 | p2p_service_add asp 1 4d6fc7 0 1108 alt.example.chat svc_info='name=john' rsp_info='enter PIN 1234' |
| 321 | |
| 322 | Parameters definition: |
| 323 | asp - Mandatory for ASP service registration |
| 324 | auto accept - Mandatory ASCII hex-encoded boolean (0 == no auto-accept, |
| 325 | 1 == auto-accept ANY role, 2 == auto-accept CLIENT role, |
| 326 | 4 == auto-accept GO role) |
| 327 | Advertisement ID - Mandatory non-zero ASCII hex-encoded u32 |
| 328 | (Must be unique/not yet exist in svc db) |
| 329 | State - Mandatory ASCII hex-encoded u8 (0 -- Svc not available, |
| 330 | 1 -- Svc available, 2-0xff Application defined) |
| 331 | Config Methods - Mandatory ASCII hex-encoded u16 (bitmask of WSC config |
| 332 | methods) |
| 333 | Service Name - Mandatory UTF-8 string |
| 334 | Service Information - Optional UTF-8 string |
| 335 | Escape single quote & backslash with a backslash: |
| 336 | 0x27 == ' == \', and 0x5c == \ == \\ |
| 337 | Session response information - Optional (used only if auto accept is TRUE) |
| 338 | UTF-8 string |
| 339 | Escape single quote & backslash with a backslash: |
| 340 | 0x27 == ' == \', and 0x5c == \ == \\ |
| 341 | |
| 342 | p2p_service_rep asp <auto accept> <adv id> <status 0/1> <Config Methods> |
| 343 | <Service name> [Service Information] [Response Info] |
| 344 | |
| 345 | This command can be used to replace the existing service request |
| 346 | attributes from the initiator side. The replacement is only allowed if |
| 347 | the advertisement id issued in the command matches with any one entry in |
| 348 | the list of existing SD queries. If advertisement id doesn't match the |
| 349 | command returns a failure. |
| 350 | |
| 351 | For example, |
| 352 | p2p_service_rep asp 1 4d6fc7 1 1108 alt.example.chat svc_info='name=john' rsp_info='enter PIN 1234' |
| 353 | |
| 354 | Parameters definition: |
| 355 | asp - Mandatory for ASP service registration |
| 356 | auto accept - Mandatory ASCII hex-encoded boolean (1 == true, 0 == false) |
| 357 | Advertisement ID - Mandatory non-zero ASCII hex-encoded u32 |
| 358 | (Must already exist in svc db) |
| 359 | State - Mandatory ASCII hex-encoded u8 (can be used to indicate svc |
| 360 | available or not available for instance) |
| 361 | Config Methods - Mandatory ASCII hex-encoded u16 (bitmask of WSC config |
| 362 | methods) |
| 363 | Service Name - Mandatory UTF-8 string (Must match existing string in svc db) |
| 364 | Service Information - Optional UTF-8 string |
| 365 | Escape single quote & backslash with a backslash: |
| 366 | 0x27 == ' == \', and 0x5c == \ == \\ |
| 367 | Session response information - Optional (used only if auto accept is TRUE) |
| 368 | UTF-8 string |
| 369 | Escape single quote & backslash with a backslash: |
| 370 | 0x27 == ' == \', and 0x5c == \ == \\ |
| 371 | |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 372 | p2p_serv_disc_req |
| 373 | |
| 374 | Schedule a P2P service discovery request. The parameters for this |
| 375 | command are the device address of the peer device (or 00:00:00:00:00:00 |
| 376 | for wildcard query that is sent to every discovered P2P peer that |
| 377 | supports service discovery) and P2P Service Query TLV(s) as hexdump. For |
| 378 | example, |
| 379 | |
| 380 | p2p_serv_disc_req 00:00:00:00:00:00 02000001 |
| 381 | |
| 382 | schedules a request for listing all available services of all service |
| 383 | discovery protocols and requests this to be sent to all discovered |
| 384 | peers (note: this can result in long response frames). The pending |
| 385 | requests are sent during device discovery (see p2p_find). |
| 386 | |
Dmitry Shmidt | 13ca8d8 | 2014-02-20 10:18:40 -0800 | [diff] [blame] | 387 | There can be multiple pending peer device specific queries (each will be |
| 388 | sent in sequence whenever the peer is found). |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 389 | |
| 390 | This command returns an identifier for the pending query (e.g., |
| 391 | "1f77628") that can be used to cancel the request. Directed requests |
| 392 | will be automatically removed when the specified peer has replied to |
| 393 | it. |
| 394 | |
Dmitry Shmidt | a54fa5f | 2013-01-15 13:53:35 -0800 | [diff] [blame] | 395 | Service Query TLV has following format: |
| 396 | Length (2 octets, little endian) - length of following data |
| 397 | Service Protocol Type (1 octet) - see the table below |
| 398 | Service Transaction ID (1 octet) - nonzero identifier for the TLV |
| 399 | Query Data (Length - 2 octets of data) - service protocol specific data |
| 400 | |
| 401 | Service Protocol Types: |
| 402 | 0 = All service protocols |
| 403 | 1 = Bonjour |
| 404 | 2 = UPnP |
| 405 | 3 = WS-Discovery |
| 406 | 4 = Wi-Fi Display |
| 407 | |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 408 | For UPnP, an alternative command format can be used to specify a |
| 409 | single query TLV (i.e., a service discovery for a specific UPnP |
| 410 | service): |
| 411 | |
| 412 | p2p_serv_disc_req 00:00:00:00:00:00 upnp <version hex> <ST: from M-SEARCH> |
| 413 | |
| 414 | For example: |
| 415 | |
| 416 | p2p_serv_disc_req 00:00:00:00:00:00 upnp 10 urn:schemas-upnp-org:device:InternetGatewayDevice:1 |
| 417 | |
| 418 | Additional examples for queries: |
| 419 | |
| 420 | # list of all Bonjour services |
| 421 | p2p_serv_disc_req 00:00:00:00:00:00 02000101 |
| 422 | |
| 423 | # list of all UPnP services |
| 424 | p2p_serv_disc_req 00:00:00:00:00:00 02000201 |
| 425 | |
| 426 | # list of all WS-Discovery services |
| 427 | p2p_serv_disc_req 00:00:00:00:00:00 02000301 |
| 428 | |
| 429 | # list of all Bonjour and UPnP services |
| 430 | p2p_serv_disc_req 00:00:00:00:00:00 0200010102000202 |
| 431 | |
| 432 | # Apple File Sharing over TCP |
| 433 | p2p_serv_disc_req 00:00:00:00:00:00 130001010b5f6166706f766572746370c00c000c01 |
| 434 | |
| 435 | # Bonjour SSTH (supported service type hash) |
| 436 | p2p_serv_disc_req 00:00:00:00:00:00 05000101000000 |
| 437 | |
| 438 | # UPnP examples |
| 439 | p2p_serv_disc_req 00:00:00:00:00:00 upnp 10 ssdp:all |
| 440 | p2p_serv_disc_req 00:00:00:00:00:00 upnp 10 upnp:rootdevice |
| 441 | p2p_serv_disc_req 00:00:00:00:00:00 upnp 10 urn:schemas-upnp-org:service:ContentDirectory:2 |
| 442 | p2p_serv_disc_req 00:00:00:00:00:00 upnp 10 uuid:6859dede-8574-59ab-9332-123456789012 |
| 443 | p2p_serv_disc_req 00:00:00:00:00:00 upnp 10 urn:schemas-upnp-org:device:InternetGatewayDevice:1 |
| 444 | |
Dmitry Shmidt | 61d9df3 | 2012-08-29 16:22:06 -0700 | [diff] [blame] | 445 | # Wi-Fi Display examples |
| 446 | # format: wifi-display <list of roles> <list of subelements> |
| 447 | p2p_serv_disc_req 00:00:00:00:00:00 wifi-display [source] 2,3,4,5 |
| 448 | p2p_serv_disc_req 02:01:02:03:04:05 wifi-display [pri-sink] 3 |
| 449 | p2p_serv_disc_req 00:00:00:00:00:00 wifi-display [sec-source] 2 |
| 450 | p2p_serv_disc_req 00:00:00:00:00:00 wifi-display [source+sink] 2,3,4,5 |
| 451 | p2p_serv_disc_req 00:00:00:00:00:00 wifi-display [source][pri-sink] 2,3,4,5 |
| 452 | |
Dmitry Shmidt | 7f65602 | 2015-02-25 14:36:37 -0800 | [diff] [blame] | 453 | p2p_serv_disc_req <Unicast|Broadcast mac address> asp <Transaction ID> |
| 454 | <Service Name> [Service Information] |
| 455 | |
| 456 | The command can be used for service discovery for P2PS enabled devices. |
| 457 | |
| 458 | For example: p2p_serv_disc_req 00:00:00:00:00:00 asp a1 alt.example 'john' |
| 459 | |
| 460 | Parameters definition: |
| 461 | MAC address - Mandatory Existing |
| 462 | asp - Mandatory for ASP queries |
| 463 | Transaction ID - Mandatory non-zero ASCII hex-encoded u8 for GAS |
| 464 | Service Name Prefix - Mandatory UTF-8 string. |
| 465 | Will match from beginning of remote Service Name |
| 466 | Service Information Substring - Optional UTF-8 string |
| 467 | If Service Information Substring is not included, all services matching |
| 468 | Service Name Prefix will be returned. |
| 469 | If Service Information Substring is included, both the Substring and the |
| 470 | Service Name Prefix must match for service to be returned. |
| 471 | If remote service has no Service Information, all Substring searches |
| 472 | will fail. |
| 473 | |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 474 | p2p_serv_disc_cancel_req <query identifier> |
| 475 | |
| 476 | Cancel a pending P2P service discovery request. This command takes a |
| 477 | single parameter: identifier for the pending query (the value returned |
| 478 | by p2p_serv_disc_req, e.g., "p2p_serv_disc_cancel_req 1f77628". |
| 479 | |
| 480 | p2p_serv_disc_resp |
| 481 | |
| 482 | Reply to a service discovery query. This command takes following |
| 483 | parameters: frequency in MHz, destination address, dialog token, |
| 484 | response TLV(s). The first three parameters are copied from the |
| 485 | request event. For example, "p2p_serv_disc_resp 2437 02:40:61:c2:f3:b7 |
| 486 | 1 0300000101". This command is used only if external program is used |
| 487 | to process the request (see p2p_serv_disc_external). |
| 488 | |
| 489 | p2p_service_update |
| 490 | |
| 491 | Indicate that local services have changed. This is used to increment |
| 492 | the P2P service indicator value so that peers know when previously |
| 493 | cached information may have changed. This is only needed when external |
| 494 | service discovery processing is enabled since the commands to |
| 495 | pre-configure services for internal processing will increment the |
| 496 | indicator automatically. |
| 497 | |
| 498 | p2p_serv_disc_external <0|1> |
| 499 | |
| 500 | Configure external processing of P2P service requests: 0 (default) = |
| 501 | no external processing of requests (i.e., internal code will process |
| 502 | each request based on pre-configured services), 1 = external |
| 503 | processing of requests (external program is responsible for replying |
| 504 | to service discovery requests with p2p_serv_disc_resp). Please note |
| 505 | that there is quite strict limit on how quickly the response needs to |
| 506 | be transmitted, so use of the internal processing is strongly |
| 507 | recommended. |
| 508 | |
| 509 | p2p_service_add bonjour <query hexdump> <RDATA hexdump> |
| 510 | |
| 511 | Add a local Bonjour service for internal SD query processing. |
| 512 | |
| 513 | Examples: |
| 514 | |
| 515 | # AFP Over TCP (PTR) |
| 516 | p2p_service_add bonjour 0b5f6166706f766572746370c00c000c01 074578616d706c65c027 |
| 517 | # AFP Over TCP (TXT) (RDATA=null) |
| 518 | p2p_service_add bonjour 076578616d706c650b5f6166706f766572746370c00c001001 00 |
| 519 | |
| 520 | # IP Printing over TCP (PTR) (RDATA=MyPrinter._ipp._tcp.local.) |
| 521 | p2p_service_add bonjour 045f697070c00c000c01 094d795072696e746572c027 |
| 522 | # IP Printing over TCP (TXT) (RDATA=txtvers=1,pdl=application/postscript) |
| 523 | p2p_service_add bonjour 096d797072696e746572045f697070c00c001001 09747874766572733d311a70646c3d6170706c69636174696f6e2f706f7374736372797074 |
| 524 | |
| 525 | # Supported Service Type Hash (SSTH) |
| 526 | p2p_service_add bonjour 000000 <32-byte bitfield as hexdump> |
| 527 | (note: see P2P spec Annex E.4 for information on how to construct the bitfield) |
| 528 | |
| 529 | p2p_service_del bonjour <query hexdump> |
| 530 | |
| 531 | Remove a local Bonjour service from internal SD query processing. |
| 532 | |
| 533 | p2p_service_add upnp <version hex> <service> |
| 534 | |
| 535 | Add a local UPnP service for internal SD query processing. |
| 536 | |
| 537 | Examples: |
| 538 | |
| 539 | p2p_service_add upnp 10 uuid:6859dede-8574-59ab-9332-123456789012::upnp:rootdevice |
| 540 | p2p_service_add upnp 10 uuid:5566d33e-9774-09ab-4822-333456785632::upnp:rootdevice |
| 541 | p2p_service_add upnp 10 uuid:1122de4e-8574-59ab-9322-333456789044::urn:schemas-upnp-org:service:ContentDirectory:2 |
| 542 | p2p_service_add upnp 10 uuid:5566d33e-9774-09ab-4822-333456785632::urn:schemas-upnp-org:service:ContentDirectory:2 |
| 543 | p2p_service_add upnp 10 uuid:6859dede-8574-59ab-9332-123456789012::urn:schemas-upnp-org:device:InternetGatewayDevice:1 |
| 544 | |
| 545 | p2p_service_del upnp <version hex> <service> |
| 546 | |
| 547 | Remove a local UPnP service from internal SD query processing. |
| 548 | |
Dmitry Shmidt | 7f65602 | 2015-02-25 14:36:37 -0800 | [diff] [blame] | 549 | p2p_service_del asp <adv id> |
| 550 | |
| 551 | Removes the local asp service from internal SD query list. |
| 552 | For example: p2p_service_del asp 4d6fc7 |
| 553 | |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 554 | p2p_service_flush |
| 555 | |
| 556 | Remove all local services from internal SD query processing. |
| 557 | |
| 558 | Invitation |
| 559 | |
| 560 | p2p_invite [persistent=<network id>|group=<group ifname>] [peer=address] |
Dmitry Shmidt | 68d0e3e | 2013-10-28 17:59:21 -0700 | [diff] [blame] | 561 | [go_dev_addr=address] [freq=<freq in MHz>] [ht40] [vht] |
| 562 | [pref=<MHz>] |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 563 | |
| 564 | Invite a peer to join a group (e.g., group=wlan1) or to reinvoke a |
| 565 | persistent group (e.g., persistent=4). If the peer device is the GO of |
Dmitry Shmidt | 0494959 | 2012-07-19 12:16:46 -0700 | [diff] [blame] | 566 | the persistent group, the peer parameter is not needed. Otherwise it is |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 567 | used to specify which device to invite. go_dev_addr parameter can be |
| 568 | used to override the GO device address for Invitation Request should |
| 569 | it be not known for some reason (this should not be needed in most |
Jouni Malinen | 31be0a4 | 2012-08-31 21:20:51 +0300 | [diff] [blame] | 570 | cases). When reinvoking a persistent group, the GO device can specify |
Dmitry Shmidt | 7a5e50a | 2013-03-05 12:37:16 -0800 | [diff] [blame] | 571 | the frequency for the group with the freq parameter. When reinvoking a |
| 572 | persistent group, the P2P client device can use freq parameter to force |
| 573 | a specific operating channel (or invitation failure if GO rejects that) |
| 574 | or pref parameter to request a specific channel (while allowing GO to |
| 575 | select to use another channel, if needed). |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 576 | |
| 577 | Group Operations |
| 578 | |
| 579 | (These are used on the group interface.) |
| 580 | |
| 581 | wps_pin <any|address> <PIN> |
| 582 | |
| 583 | Start WPS PIN method. This allows a single WPS Enrollee to connect to |
| 584 | the AP/GO. This is used on the GO when a P2P client joins an existing |
| 585 | group. The second parameter is the address of the Enrollee or a string |
| 586 | "any" to allow any station to use the entered PIN (which will restrict |
| 587 | the PIN for one-time-use). PIN is the Enrollee PIN read either from a |
| 588 | label or display on the P2P Client/WPS Enrollee. |
| 589 | |
| 590 | wps_pbc |
| 591 | |
| 592 | Start WPS PBC method (i.e., push the button). This allows a single WPS |
| 593 | Enrollee to connect to the AP/GO. This is used on the GO when a P2P |
| 594 | client joins an existing group. |
| 595 | |
| 596 | p2p_get_passphrase |
| 597 | |
| 598 | Get the passphrase for a group (only available when acting as a GO). |
| 599 | |
| 600 | p2p_presence_req [<duration> <interval>] [<duration> <interval>] |
| 601 | |
| 602 | Send a P2P Presence Request to the GO (this is only available when |
| 603 | acting as a P2P client). If no duration/interval pairs are given, the |
| 604 | request indicates that this client has no special needs for GO |
Dmitry Shmidt | fb79edc | 2014-01-10 10:45:54 -0800 | [diff] [blame] | 605 | presence. The first parameter pair gives the preferred duration and |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 606 | interval values in microseconds. If the second pair is included, that |
Dmitry Shmidt | fb79edc | 2014-01-10 10:45:54 -0800 | [diff] [blame] | 607 | indicates which value would be acceptable. This command returns OK |
| 608 | immediately and the response from the GO is indicated in a |
| 609 | P2P-PRESENCE-RESPONSE event message. |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 610 | |
| 611 | Parameters |
| 612 | |
| 613 | p2p_ext_listen [<period> <interval>] |
| 614 | |
| 615 | Configure Extended Listen Timing. If the parameters are omitted, this |
| 616 | feature is disabled. If the parameters are included, Listen State will |
| 617 | be entered every interval msec for at least period msec. Both values |
| 618 | have acceptable range of 1-65535 (with interval obviously having to be |
| 619 | larger than or equal to duration). If the P2P module is not idle at |
| 620 | the time the Extended Listen Timing timeout occurs, the Listen State |
| 621 | operation will be skipped. |
| 622 | |
| 623 | The configured values will also be advertised to other P2P Devices. The |
| 624 | received values are available in the p2p_peer command output: |
| 625 | |
| 626 | ext_listen_period=100 ext_listen_interval=5000 |
| 627 | |
| 628 | p2p_set <field> <value> |
| 629 | |
| 630 | Change dynamic P2P parameters |
| 631 | |
| 632 | p2p_set discoverability <0/1> |
| 633 | |
| 634 | Disable/enable advertisement of client discoverability. This is |
| 635 | enabled by default and this parameter is mainly used to allow testing |
| 636 | of device discoverability. |
| 637 | |
| 638 | p2p_set managed <0/1> |
| 639 | |
| 640 | Disable/enable managed P2P Device operations. This is disabled by |
| 641 | default. |
| 642 | |
Dmitry Shmidt | 31a29cc | 2016-03-09 15:58:17 -0800 | [diff] [blame] | 643 | p2p_set listen_channel <channel> [<op_class>] |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 644 | |
| 645 | Set P2P Listen channel. This is mainly meant for testing purposes and |
| 646 | changing the Listen channel during normal operations can result in |
| 647 | protocol failures. |
| 648 | |
Dmitry Shmidt | 31a29cc | 2016-03-09 15:58:17 -0800 | [diff] [blame] | 649 | When specifying a social channel on the 2.4 GHz band (1/6/11) there is |
| 650 | no need to specify the operating class since it defaults to 81. When |
| 651 | specifying a social channel on the 60 GHz band (2), specify the 60 GHz |
| 652 | operating class (180). |
| 653 | |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 654 | p2p_set ssid_postfix <postfix> |
| 655 | |
| 656 | Set postfix string to be added to the automatically generated P2P SSID |
| 657 | (DIRECT-<two random characters>). For example, postfix of "-testing" |
| 658 | could result in the SSID becoming DIRECT-ab-testing. |
| 659 | |
Dmitry Shmidt | 391c59f | 2013-09-03 12:16:28 -0700 | [diff] [blame] | 660 | p2p_set per_sta_psk <0/1> |
| 661 | |
| 662 | Disabled(default)/enables use of per-client PSK in the P2P groups. This |
| 663 | can be used to request GO to assign a unique PSK for each client during |
| 664 | WPS provisioning. When enabled, this allow clients to be removed from |
Dmitry Shmidt | 9c17526 | 2016-03-03 10:20:07 -0800 | [diff] [blame] | 665 | the group securely with p2p_remove_client command since that client's |
Dmitry Shmidt | 391c59f | 2013-09-03 12:16:28 -0700 | [diff] [blame] | 666 | PSK is removed at the same time to prevent it from connecting back using |
| 667 | the old PSK. When per-client PSK is not used, the client can still be |
| 668 | disconnected, but it will be able to re-join the group since the PSK it |
| 669 | learned previously is still valid. It should be noted that the default |
| 670 | passphrase on the GO that is normally used to allow legacy stations to |
| 671 | connect through manual configuration does not change here, so if that is |
| 672 | shared, devices with knowledge of that passphrase can still connect. |
| 673 | |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 674 | set <field> <value> |
| 675 | |
| 676 | Set global configuration parameters which may also affect P2P |
| 677 | operations. The format on these parameters is same as is used in |
| 678 | wpa_supplicant.conf. Only the parameters listen here should be |
| 679 | changed. Modifying other parameters may result in incorrect behavior |
| 680 | since not all existing users of the parameters are updated. |
| 681 | |
| 682 | set uuid <UUID> |
| 683 | |
| 684 | Set WPS UUID (by default, this is generated based on the MAC address). |
| 685 | |
| 686 | set device_name <device name> |
| 687 | |
| 688 | Set WPS Device Name (also included in some P2P messages). |
| 689 | |
| 690 | set manufacturer <manufacturer> |
| 691 | |
| 692 | Set WPS Manufacturer. |
| 693 | |
| 694 | set model_name <model name> |
| 695 | |
| 696 | Set WPS Model Name. |
| 697 | |
| 698 | set model_number <model number> |
| 699 | |
| 700 | Set WPS Model Number. |
| 701 | |
| 702 | set serial_number <serial number> |
| 703 | |
| 704 | Set WPS Serial Number. |
| 705 | |
| 706 | set device_type <device type> |
| 707 | |
| 708 | Set WPS Device Type. |
| 709 | |
| 710 | set os_version <OS version> |
| 711 | |
| 712 | Set WPS OS Version. |
| 713 | |
| 714 | set config_methods <config methods> |
| 715 | |
| 716 | Set WPS Configuration Methods. |
| 717 | |
| 718 | set sec_device_type <device type> |
| 719 | |
| 720 | Add a new Secondary Device Type. |
| 721 | |
| 722 | set p2p_go_intent <GO intent> |
| 723 | |
| 724 | Set the default P2P GO Intent. Note: This value can be overridden in |
| 725 | p2p_connect command and as such, there should be no need to change the |
| 726 | default value here during normal operations. |
| 727 | |
| 728 | set p2p_ssid_postfix <P2P SSID postfix> |
| 729 | |
| 730 | Set P2P SSID postfix. |
| 731 | |
| 732 | set persistent_reconnect <0/1> |
| 733 | |
| 734 | Disable/enabled persistent reconnect for reinvocation of persistent |
| 735 | groups. If enabled, invitations to reinvoke a persistent group will be |
| 736 | accepted without separate authorization (e.g., user interaction). |
| 737 | |
| 738 | set country <two character country code> |
| 739 | |
| 740 | Set country code (this is included in some P2P messages). |
| 741 | |
Dmitry Shmidt | 09f57ba | 2014-06-10 16:07:13 -0700 | [diff] [blame] | 742 | set p2p_search_delay <delay> |
| 743 | |
| 744 | Set p2p_search_delay which adds extra delay in milliseconds between |
| 745 | concurrent search iterations to make p2p_find friendlier to concurrent |
| 746 | operations by avoiding it from taking 100% of radio resources. The |
| 747 | default value is 500 ms. |
| 748 | |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 749 | Status |
| 750 | |
| 751 | p2p_peers [discovered] |
| 752 | |
| 753 | List P2P Device Addresses of all the P2P peers we know. The optional |
| 754 | "discovered" parameter filters out the peers that we have not fully |
| 755 | discovered, i.e., which we have only seen in a received Probe Request |
| 756 | frame. |
| 757 | |
| 758 | p2p_peer <P2P Device Address> |
| 759 | |
| 760 | Fetch information about a known P2P peer. |
| 761 | |
| 762 | Group Status |
| 763 | |
| 764 | (These are used on the group interface.) |
| 765 | |
| 766 | status |
| 767 | |
| 768 | Show status information (connection state, role, use encryption |
| 769 | parameters, IP address, etc.). |
| 770 | |
| 771 | sta |
| 772 | |
| 773 | Show information about an associated station (when acting in AP/GO role). |
| 774 | |
| 775 | all_sta |
| 776 | |
| 777 | Lists the currently associated stations. |
| 778 | |
| 779 | Configuration data |
| 780 | |
| 781 | list_networks |
| 782 | |
| 783 | Lists the configured networks, including stored information for |
| 784 | persistent groups. The identifier in this list is used with |
| 785 | p2p_group_add and p2p_invite to indicate which persistent group is to |
| 786 | be reinvoked. |
| 787 | |
| 788 | remove_network <network id> |
| 789 | |
| 790 | Remove a network entry from configuration. |
| 791 | |
| 792 | |
Dmitry Shmidt | 7f65602 | 2015-02-25 14:36:37 -0800 | [diff] [blame] | 793 | P2PS Events/Responses: |
| 794 | |
| 795 | P2PS-PROV-START: This events gets triggered when provisioning is issued for |
| 796 | either seeker or advertiser. |
| 797 | |
| 798 | For example, |
| 799 | P2PS-PROV-START 00:55:44:33:22:11 adv_id=111 adv_mac=00:55:44:33:22:11 conncap=1 session=1234567 session_mac=00:11:22:33:44:55 info='xxxx' |
| 800 | |
| 801 | Parameters definition: |
| 802 | MAC address - always |
| 803 | adv_id - always ASCII hex-encoded u32 |
| 804 | adv_mac - always MAC address that owns/registered the service |
| 805 | conncap - always mask of 0x01 (new), 0x02 (group client), 0x04 (group owner) |
| 806 | bits |
| 807 | session - always Session ID of the first session to be established |
| 808 | session_mac - always MAC address that owns/initiated the session |
| 809 | info - if available, UTF-8 string |
| 810 | Escaped single quote & backslash with a backslash: |
| 811 | \' == 0x27 == ', and \\ == 0x5c == \ |
| 812 | |
| 813 | P2PS-PROV-DONE: When provisioning is completed then this event gets triggered. |
| 814 | |
| 815 | For example, |
| 816 | P2PS-PROV-DONE 00:11:22:33:44:55 status=0 adv_id=111 adv_mac=00:55:44:33:22:11 conncap=1 session=1234567 session_mac=00:11:22:33:44:55 [dev_passwd_id=8 | go=p2p-wlan0-0 | join=11:22:33:44:55:66 | persist=0] |
| 817 | |
| 818 | Parameters definition: |
| 819 | MAC address - always main device address of peer. May be different from MAC |
| 820 | ultimately connected to. |
| 821 | status - always ascii hex-encoded u8 (0 == success, 12 == deferred success) |
| 822 | adv_id - always ascii hex-encoded u32 |
| 823 | adv_mac - always MAC address that owns/registered the service |
| 824 | conncap - always One of: 1 (new), 2 (group client), 4 (group owner) bits |
| 825 | session - always Session ID of the first session to be established |
| 826 | session_mac - always MAC address that owns/initiated the session |
| 827 | dev_passwd_id - only if conncap value == 1 (New GO negotiation) |
| 828 | 8 - "p2ps" password must be passed in p2p_connect command |
| 829 | 1 - "display" password must be passed in p2p_connect command |
| 830 | 5 - "keypad" password must be passed in p2p_connect command |
| 831 | join only - if conncap value == 2 (Client Only). Display password and "join" |
| 832 | must be passed in p2p_connect and address must be the MAC specified |
| 833 | go only - if conncap value == 4 (GO Only). Interface name must be set with a |
| 834 | password |
| 835 | persist - only if previous persistent group existed between peers and shall |
| 836 | be re-used. Group is restarted by sending "p2p_group_add persistent=0" |
| 837 | where value is taken from P2P-PROV-DONE |
| 838 | |
| 839 | Extended Events/Response |
| 840 | |
| 841 | P2P-DEVICE-FOUND 00:11:22:33:44:55 p2p_dev_addr=00:11:22:33:44:55 pri_dev_type=0-00000000-0 name='' config_methods=0x108 dev_capab=0x21 group_capab=0x0 adv_id=111 asp_svc=alt.example.chat |
| 842 | |
| 843 | Parameters definition: |
| 844 | adv_id - if ASP ASCII hex-encoded u32. If it is reporting the |
| 845 | "wildcard service", this value will be 0 |
| 846 | asp_svc - if ASP this is the service string. If it is reporting the |
| 847 | "wildcard service", this value will be org.wi-fi.wfds |
| 848 | |
| 849 | |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 850 | wpa_cli action script |
| 851 | --------------------- |
| 852 | |
| 853 | See examples/p2p-action.sh |
| 854 | |
| 855 | TODO: describe DHCP/DNS setup |
| 856 | TODO: cross-connection |