树莓派上的Wifi直连连接几秒钟后会自动断开

4
我正在为树莓派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

到目前为止,一切都运行良好,我能够通过wifi从Android设备直接连接到Raspberry Pi。现在我面临两个问题,

  1. 连接在几秒钟后自动断开
  2. 当我尝试重新连接Android设备时,它一直显示“已邀请”(但在2个Android设备之间反复断开和连接n次正常工作,连接不会断开)。只有在终止wpa_supplicant并再次启动进程后,我才能连接到Raspberry Pi。这个配置有什么问题?应该进行哪些更改以使连接持久化?

编辑1:

当我重启wpa_supplicant并第一次连接时,日志中显示以下内容

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个回答

4
你手动创建了一个组,使用p2p_group_add命令(自治GO),因此你的Raspberry Pi可能处于P2P Group Owner(GO)角色。而不是根据设备的GO意图值进行协商。在这种情况下,在你的配置中设置p2p_go_intent=1可能没有效果。
担任GO角色的设备应该运行DHCP服务器以向连接的P2P客户端分配IP地址。相应地,每个客户端都应该运行DHCP客户端以接收IP地址。
来自Wi-Fi P2P技术规范3.2.6.1节的摘录:
高级数据服务可以使用IP。P2P Group Owner应充当DHCP服务器,为使用IP的已连接P2P Clients提供IP地址。DHCP服务器应至少支持Internet Protocol版本4(IPv4)和IP地址、子网掩码的分配……
……使用IP的P2P Client应能够充当DHCP Client。
注意-虽然P2P设备可以为其作为P2P Group Owner的每个P2P Group选择不同的IP子网,但连接到多个P2P Group的P2P设备可能会出现冲突的子网。在选择IP子网时使用随机组件可能会减少(但无法消除)此情况的发生。
我认为你会发现Android设备正在等待通过DHCP接收IP配置,然后才进入已连接状态。如果未能成功接收到IP配置,Android设备将超时。
为使连接持久,组需要被创建为一个持久组。在自治GO场景中,你应该能够使用p2p_group_add persistent来做到这一点。在协商的GO场景中,你应该能够执行类似于p2p_connect <peer device address> <pbc|pin|PIN#|p2ps> [display|keypad|p2ps] persistent go_intent=15的操作。有关详细信息,请参阅wpa_supplicant README-P2P:https://w1.fi/cgit/hostap/plain/wpa_supplicant/README-P2P
最后,命令wps_pin any <PIN>允许任何设备使用提供的PIN进行连接,但限制该PIN只能使用一次。要么使用wps_pin <address> <PIN>形式,要么再次运行wps_pin any <PIN>来设置一个新的PIN。

谢谢,没错,树莓派是P2P组的所有者。我一直希望树莓派成为组的所有者。连接是从Android设备发起的。现在已经连接上了。我在组添加命令中添加了persistent关键字,连接保持了一段时间,大约45秒,然后自动断开连接。现在另一个问题是它没有创建一个组,所以我无法获取组所有者IP并在彼此之间发送数据。也许是因为DHCP服务器没有运行。在这种情况下,我该如何设置?我真的卡在这里了。 - Sony
每次运行 p2p_group_add persistent 命令时,配置文件中都会添加一个新的网络块。 - Sony

0

我目前正在运行几乎完全相同的场景,按照第一部分进行操作。

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

请参考此链接以安装/配置Pi上的DHCP服务:

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

顺便问一下,如果这对你有效,你能否分享运行dhcp和启用wifi p2p的顺序,因为我在启用dhcp后遇到了一些p2p问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接