在Raspberry Pi中几秒钟后,Wifi直接连接会自动断开连接

时间:2019-02-02 07:33:59

标签: android raspberry-pi3 wifi-direct raspbian-stretch

我正在使用此配置在Raspberry PI 2 B +中进行wifi直接连接

ctrl_interface=DIR=/var/run/wpa_supplicant
driver_param=use_p2p_group_interface=1
update_config=1
device_name=Raspberry_pi
device_type=1-0050F204-1
p2p_go_intent=1
p2p_go_ht40=1
country=IN

然后使用

启动wpa请求者
sudo wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant/p2p.conf -B

,然后使用

添加新组
sudo wpa_cli -iwlan0 p2p_group_add

然后使用

设置IP
ifconfig p2p-wlan0-0 192.168.1.20

,然后使用

设置图钉
sudo wpa_cli -ip2p-wlan0-0 wps_pin any 0000

到目前为止,一切正常,我可以直接从Android设备通过wifi连接到Raspberry Pi。现在我面临两个问题,

  1. 几秒钟后,连接会自动断开连接
  2. 当我尝试重新连接Android设备时,它显示永远受邀(但是在2个Android设备之间断开连接并进行n次连接可以正常工作,并且连接不会断开)。仅在终止wpa请求者并重新启动该过程之后,我才能连接到Raspberry Pi。此配置有什么问题?应该进行哪些更改以使连接持久?

编辑1:

当我重新启动wpa请求者并首次连接时,这就是我在日志中得到的信息

CTRL-EVENT-EAP-STARTED 2a:3f:69:1d:ed:c5
<3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=1
<3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=14122 method=254
<3>WPS-REG-SUCCESS 2a:3f:69:1d:ed:c5 884efa75-0a98-52c6-85aa-07527f4a9c35
<3>WPS-SUCCESS 
<3>CTRL-EVENT-EAP-FAILURE 2a:3f:69:1d:ed:c5
<3>AP-STA-CONNECTED 2a:3f:69:1d:ed:c5 p2p_dev_addr=2a:3f:69:1d:ed:c5

以及自动断开连接后

AP-STA-DISCONNECTED 2a:3f:69:1d:ed:c5 p2p_dev_addr=2a:3f:69:1d:ed:c5

如果我尝试不重新连接就重新连接,则会在控制台中显示

CTRL-EVENT-EAP-STARTED 2a:3f:69:1d:ed:c5
<3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=1
<3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=14122 method=254
<3>WPS-PIN-NEEDED 884efa75-0a98-52c6-85aa-07527f4a9c35 2a:3f:69:1d:ed:c5 [Xperia XA |MediaTek Inc.|MTK Wireless Model|1.0|2.0|10-0050F204-5]
<3>CTRL-EVENT-EAP-FAILURE 2a:3f:69:1d:ed:c5

2 个答案:

答案 0 :(得分:3)

您的Raspberry Pi可能是P2P组所有者(GO)角色,因为您是使用compute Quarter=trunc((month-1)/3)+1. * this can also be done like this: * recode month (1 2 3=1)(4 5 6=2)(7 8 9=3)(10 11 12=4) into Quarter. dataset name byMonth. dataset declare byQuarter. aggregate /outfile=byQuarter /break=Year Quarter ...Other_grouping_variables ... /var1 var2 ... your_scale_variables ....=mean(var1 var2 ...your_scale_variables...). dataset activate byQuarter. 命令(自主GO)手动创建组,而不是让设备根据其GO意向值进行协商。在这种情况下,您配置中的p2p_group_add可能无效。

具有GO角色的设备应该运行DHCP服务器,以便为连接的P2P客户端分配IP地址。相应地,每个客户端都应运行DHCP客户端才能接收IP地址。

Wi-Fi P2P技术规范第3.2.6.1节的摘录:

  

更高层的数据服务可能使用IP。 P2P组所有者应充当DHCP服务器,以向使用IP的已连接P2P客户端提供IP地址。 DHCP服务器至少应支持Internet协议版本4(IPv4)并分配IP地址,子网掩码...

     

...使用IP的P2P客户端应能够充当DHCP客户端。

     

注—尽管P2P设备可以为其作为P2P组所有者的每个P2P组选择不同的IP子网,但连接到多个P2P组的P2P设备可能最终会遇到冲突的子网。在IP子网的选择中使用随机成分可以减少(但不能消除)这种情况的发生

我想您会发现Android设备在进入连接状态之前正在等待通过DHCP接收IP配置,如果这种情况没有发生,则会超时。

要使连接持久,需要将组创建为持久组。您应该可以在p2p_go_intent=1的自主GO场景中做到这一点。在协商的GO方案中,您应该可以执行类似p2p_group_add persistent的操作。有关更多详细信息,请参见wpa_supplicant README-P2P:https://w1.fi/cgit/hostap/plain/wpa_supplicant/README-P2P

最后,命令p2p_connect <peer device address> <pbc|pin|PIN#|p2ps> [display|keypad|p2ps] persistent go_intent=15允许任何设备使用提供的PIN进行连接,但将PIN限制为一次性使用。使用wps_pin any <PIN>表单或通过再次运行wps_pin <address> <PIN>来设置新的PIN。

答案 1 :(得分:0)

此刻我正在运行几乎相同的场景,请按照第一部分进行操作

  

将Raspberry Pi设置为独立网络中的访问点   (NAT)

在此链接上以在Pi上安装/配置DHCP服务:

https://www.raspberrypi.org/documentation/configuration/wireless/access-point.md

顺便说一句,如果它对您有用,请您分享一下运行dhcp并启用wifi p2p的顺序,因为启用dhcp后我对p2p有点麻烦。