Wifi 直接连接在 Raspberry Pi 几秒后自动断开

Wifi direct connection disconnects automatically after a few seconds in Raspberry Pi

我在 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

您的 Raspberry Pi 可能是 P2P 组所有者 (GO) 角色,因为您是使用 p2p_group_add 命令手动创建组(自主 GO),而不是让设备根据他们的协商GO 意图值。在这种情况下,您的配置中的 p2p_go_intent=1 可能无效。

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

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

Higher-layer data services may use IP. The P2P Group Owner shall act as a DHCP server to provide IP addresses to the connected P2P Clients that use IP. The DHCP Server shall at a minimum support Internet Protocol version 4 (IPv4) and assignment of an IP address, subnet mask...

...A P2P Client that uses IP shall be capable of acting as a DHCP Client.

Note — While a P2P Device can select distinct IP subnets for each P2P Group for which it is P2P Group Owner, it is possible that a P2P Device connected to more than one P2P Group may end up with colliding subnets. Use of a random component in the selection of IP subnet may reduce the probability of (but not eliminate) this situation occurring

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

要使连接持久化,需要将组创建为持久化组。你应该能够在 p2p_group_add persistent 的自主 GO 场景中做到这一点。在协商的 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> 表格或再次 运行ning wps_pin any <PIN> 设置新的 PIN。

我现在是运行几乎完全一样的场景,看第一节

Setting up a Raspberry Pi as an access point in a standalone network (NAT)

在此link以便install/comfigure Pi 上的 DHCP 服务:

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

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