Wi-Fi direct

Wi-Fi direct is a wireless standard that allows devices to connect with each other without requiring a wireless access point. Wi-Fi Direct negotiates the link with a Wi-Fi Protected Setup (WPS) system that assigns each device a limited wireless access point.

Establishing a peer-to-peer (P2P) link has the following phases:

The QCA6564 driver on load creates a p2p0 interface that is used by the wpa supplicant for P2P group formation. Once a group is formed, virtual p2p-p2p0-N interfaces are created, where N is an index starting at 0. These virtual interfaces are then used for provisioning.

Note Remember:

  • Group additions, find and connect operations happen on the p2p0 interface
  • Provisioning happens on the virtual p2p-p2p0-N interfaces

By default the Wi-Fi Direct functionality in the ConnectCore 6UL is disabled. To enable it, configure your Digi Embedded Yocto project by adding the following lines to your conf/local.conf file:

WLAN_P2P_INTERFACE = "p2p0"                                                        
WLAN_P2P_AUTO = "1" 

The above will configure the /etc/network/interfaces file with a p2p0 interface and will start a wpa-supplicant instance with a default /etc/wpa_supplicant_p2p.conf configuration file.

The following examples will use two ConnectCore 6UL devices to establish P2P connections. For more information about the wpa-supplicant P2P specific commands refer to this document.

Autonomous GO creation

Create Autonomous Group Owner (GO) and join using PBC method

Peer (GO) ---- PBC --- Peer (GC)

Steps

Peer 1

Peer 2

1

wpa_cli -ip2p0

wpa_cli -ip2p0

2

p2p_group_add

 

3

 

p2p_find

4

 

p2p_connect <CC6UL1_go_mac_addr> pbc join

5

Ctrl-c to exit

Ctrl-c to exit

6

wpa_cli -i p2p-p2p0-0 wps_pbc

 

7

ifconfig p2p-p2p0-0 <CC6UL1_ip_addr>

ifconfig p2p-p2p0-0 <CC6UL2_ip_addr>

8

ping <CC6UL2_ip_addr>

ping <CC6UL1_ip_addr>

Create Autonomous GO and join using PIN from GO

Peer (GO) ---- PIN --- Peer (GC)

Steps

Peer 1

Peer 2

1

wpa_cli -ip2p0

wpa_cli -ip2p0

2

p2p_group_add

 

3

 

p2p_find

4

Ctrl-c to exit

 

5

wpa_cli -ip2p-p2p0-0 wps_pin any (shows <pin>)

 

6

 

p2p_connect <cc6ul_go_mac_addr> <pin> join

7

 

Ctrl-c to exit

8

ifconfig p2p-p2p0-0 <CC6UL1_ip_addr>

ifconfig p2p-p2p0-0 <CC6UL2_ip_addr>

9

ping <CC6UL2_ip_addr>

ping <CC6UL1_ip_addr>

Create Autonomous GO and join using PIN from GC

Peer (GO) ---- PIN --- Peer (GC)

Steps

Peer 1

Peer 2

1

wpa_cli -ip2p0

wpa_cli -ip2p0

2

p2p_group_add

 

3

 

p2p_find

4

 

p2p_connect <cc6ul_go_mac_addr> pin join (shows <pin>)

5

Ctrl-c to exit

Ctrl-c to exit

6

wpa_cli -ip2p-p2p0-0 wps_pin any <pin>

 

7

ifconfig p2p-p2p0-0 <CC6UL1_ip_addr>

ifconfig p2p-p2p0-0 <CC6UL2_ip_addr>

8

ping <CC6UL2_ip_addr>

ping <CC6UL1_ip_addr>

Create Autonomous GO and invite GC using PBC

Peer (GO) ---- PBC --- Peer (GC)

Steps

Peer 1

Peer 2

1

wpa_cli -ip2p0

wpa_cli -ip2p0

2

p2p_group_add

 

3

 

p2p_find

4

p2p_invite group=p2p-p2p0-0 peer=<CC6UL2_mac_addr>

 

5

 

p2p_connect <CC6UL1_go_mac_addr> pbc join

6

Ctrl-c to exit

Ctrl-c to exit

7

wpa_cli -i p2p-p2p0-0 wps_pbc

 

8

ifconfig p2p-p2p0-0 <CC6UL1_ip_addr>

ifconfig p2p-p2p0-0 <CC6UL2_ip_addr>

9

ping <CC6UL2_ip_addr>

ping <CC6UL1_ip_addr>

Negotiated GO

Negotiate GO and join using PIN

Peer (GO | GC) ---- PIN --- Peer (GO | GC)

Steps

Peer 1

Peer 2

1

wpa_cli -ip2p0

wpa_cli -ip2p0

2

p2p_find

 

3

 

p2p_find

4

p2p_connect <CC6UL2_go_mac_addr> pin go_intent=1

 

5

 

p2p_connect <CC6UL1_go_mac_addr> <pin> go_intent=15

6

Ctrl-c to exit

Ctrl-c to exit

7

ifconfig p2p-p2p0-0 <CC6UL1_ip_addr>

ifconfig p2p-p2p0-0 <CC6UL2_ip_addr>

8

ping <CC6UL2_ip_addr>

ping <CC6UL1_ip_addr>

Negotiate GO and join using PBC

Peer (GO | GC) ---- PBC --- Peer (GO | GC)

Steps

Peer 1

Peer 2

1

wpa_cli -ip2p0

wpa_cli -ip2p0

2

p2p_find

 

3

 

p2p_find

4

p2p_connect <CC6UL2_go_mac_addr> pbc go_intent=1

 

5

 

p2p_connect <CC6UL1_go_mac_addr> pbc go_intent=14

6

Ctrl-c to exit

Ctrl-c to exit

7

ifconfig p2p-p2p0-0 <CC6UL1_ip_addr>

ifconfig p2p-p2p0-0 <CC6UL2_ip_addr>

8

ping <CC6UL2_ip_addr>

ping <CC6UL1_ip_addr>