Wifi P2P使用wpa_supplicant在rasperry pi 3 Raspbian上保持Wifi连接

时间:2017-07-29 22:19:14

标签: linux wifi-direct wifip2p wpa-supplicant

我对这个话题非常天真,所以请原谅我方面的任何愚蠢回复。 我想通过Wifi Direct(或P2P)将我的覆盆子pi 3连接到我的Android手机,同时保持其正常的wifi连接。每当我运行wpa_cli命令时,它都会断开与普通wifi连接的连接,而P2P命令工作正常。我知道这是可能的,因为所有最近的android都有这个功能。我尝试在网上搜索很多,但似乎没有人讨论这个。我的wpa_supplicant.conf是 -

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
device_name=RPi_3
device_type=1-0050F204-1
country=GB

network={
        ssid="Sarthak"
        psk="sam.s.home_9h"
        key_mgmt=WPA-PSK
}

冷启动后,我通常在没有任何先前的wpa_supplicant命令的情况下开始使用wpa_cli,所以也许这就是问题。你可能已经判断我的知识有多少,所以请用简单的术语解释为什么会发生这种情况。

2 个答案:

答案 0 :(得分:0)

这是因为Wi-Fi Direct意味着您的手机在打开Wi-Fi Direct连接时会创建单独的Wi-Fi网络(请参阅Wi-Fi Direct on Wikipedia),这与您所使用的Wi-Fi网络不同已连接到(通常由您的路由器创建)。但是,Raspberry Pi上的Wi-Fi接口一次只能连接到一个网络。

因此,当您通过Wi-Fi Direct连接到手机时,Raspberry Pi会首先离开路由器创建的网络,以连接到手机创建的Wi-Fi网络。

如果您想同时连接到不同的Wi-Fi网络,可以使用Wi-Fi USB记忆棒向Raspberry Pi添加另一个Wi-Fi接口。通过两个接口,您可以连接到两个不同的网络,而无需关闭其中一个网络的连接。

答案 1 :(得分:0)

我认为这取决于您如何使用 wpa_cli 来设置连接。您没有提到发出的命令,但我认为您正在使用以下命令:

wpa_cli -i wlan0 list_networks # list all configured networks; in you example, you appeared to have just defined network n. 0
wpa_cli -i wlan0 select_network 0

select_network 0 命令不使用 P2P,它只是将 Raspberry Pi 连接到网络配置文件 0 中定义的接入点。

或者,您可能已经使用例如以下命令创建了第二个网络:

wpa_cli -i wlan0 add_network # this returns the new network profile number; let us consider that 1 is returned
wpa_cli -i wlan0 set_network 1 ssid \"MYSSID\"
wpa_cli -i wlan0 set_network 1 psk \"passphrase\"
wpa_cli -i wlan0 enable_network 1 # alternatively to these commands, you might have added a new network profile by editing wpa_supplicant.conf
wpa_cli -i wlan0 list_networks # in this example, we added network 1
wpa_cli -i wlan0 save_config # optional command to save the newly defined network profile 1 into wpa_supplicant.conf
wpa_cli -i wlan0 select_network 1 # this leaves network 0 and connects to network 1

这些命令再次不使用 P2P,只是将 Raspberry Pi 的连接从网络配置文件 0 中定义的接入点切换到配置文件 1 中定义的另一个 AP。

Wi-Fi Direct 使用不同的 wpa_cli 命令并允许兼容设备形成临时通信组,而不会中断基于接入点的传统 Wi-Fi 通信。

您应该将 device_name=RPi_3 更改为 device_name=DIRECT-RPi_3

然后您可以使用 wpa_cli -i p2p-dev-wlan0 p2p_connect <addr> <8-digit password> display 与 Android 设备协商组。或者,您可以定义一个自治组或一个持久组。

群协商模式示例:

wpa_cli -i p2p-dev-wlan0
set config_methods keypad
p2p_find
p2p_connect <addr> <8-digit password> display

持久组模式示例(假设 p2p_group_add 创建组 p2p-wlan0-0):

wpa_cli -i p2p-dev-wlan0
set config_methods keypad
set_network 0 mode 3
set_network 0 disabled 2
p2p_group_add persistent=0
interface p2p-wlan0-0

Android 设备的 Wi-Fi Direct 接口,选择 DIRECT-RPi_3。 通过Android智能手机的键盘面板插入PIN 00000000进行注册。

interface p2p-wlan0-0
wps_pin any 00000000

查看 Connect Android smartphone with Wi-Fi Direct to a Raspberry Pi 了解更多信息。