android - Wifi 直接连接在 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。现在我面临两个问题,
- 几秒钟后连接会自动断开
- 当我尝试重新连接 Android 设备时,它显示永远受邀(但在 2 个 Android 设备之间断开和连接 n 次工作正常,并且连接没有断开)。只有在终止 wpa supplicant 并再次启动该过程后,我才能连接到 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) 角色,因为您使用命令(自主 GO)手动创建组,p2p_group_add
而不是让设备根据其 GO 意图值进行协商。p2p_go_intent=1
在这种情况下,您的配置中可能没有效果。
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 配置,如果没有发生则超时。
要使连接持久,需要将组创建为持久组。您应该能够在自治 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>
运行设置新的 PIN 。wps_pin any <PIN>
推荐阅读
- linux - Bash 练习为另一个脚本提供多个输入
- r - 带有向后消除交互的 brglm 模型中的错误:do.call("glm.control", control) 中的错误:第二个参数必须是一个列表
- python - 无法为 Selenium 会话设置代理
- jquery - 在页脚工具栏上带有 MENUTOOLBAR 和 Listbox 的 Jqgrid
- c - 如何使 Python.h 文件在 Ubuntu 中工作?
- java - 如何将具有多个相同键和列表的多个地图组合为值?
- php - 安装后 GD 库仍然丢失
- php - 注册成功后跳转到首页
- kubernetes - ERR_TOO_MANY_REDIRECTS 302 与 ELK Operator 7.10.0 使用 Server.basePath
- java - 检查项目的 Maven 构建生命周期的特定阶段的目标