Set up a Wifi-Direct connection between Android and Raspberry Pi 3 Linux

Keles picture Keles · May 19, 2017 · Viewed 10.3k times · Source

I want to connect two devices using Wifi-Direct. One is a RaspBerry PI 3 (with Raspbian Jessie), the other is an Android smartphone. Raspberry as server and Android as client.

I decided to use wpa_supplicant in Raspbian and the WifiDirect example app for Android:

https://developer.android.com/guide/topics/connectivity/wifip2p.html

My wpa_supplicant.conf contains:

ctrl_interface=/var/run/wpa_supplicant
update_config=1 
device_name=raspberry
device_type=1-0050F204-1
driver_param=use_p2p_group_interface=1
p2p_go_intent=1
p2p_go_ht40=1

I am following this steps:

1) In the raspberry pi:

sudo wpa_supplicant  -B -iwlan0 -Dnl80211 -c/etc/wpa_supplicant.conf
sudo wpa_cli -iwlan0 p2p_group_add
ifconfig p2p-wlan0-0 192.168.1.2
wpa_cli -ip2p-wlan0-0 wps_pbc

2) Then in the Android app, I can see the raspberry as a peer but I get a connection failure. I try with the settings app (Wifi => Advanced => Wifi Direct) and I can see the raspberry as a peer too but the diference is that when I try to make the connection, the application request me a PIN code and I am able to make the connection if I introduce the pin returned by p2p_pin any in the raspberry.

Im trying to understand this behavior:

Why is requesting me a PIN? This is the reason why I am not able to make the connection through the WifiDirect example app? Im missing something here?

Thank you.

Answer

Jim Provan picture Jim Provan · Feb 3, 2018

Where you have:

wpa_cli -ip2p-wlan0-0 wps_pbc

use:

sudo wpa_cli -ip2p-wlan0-0 wps_pin any 12345670