【发布时间】:2015-10-30 20:44:02
【问题描述】:
我想使用 Wifi-Direct 连接两台设备。 一台是装有 Linux 的电脑(在我的测试中,我使用的是 Linux Mint 17.2),另一台是 Android 智能手机(装有 Android 4.3 的三星 Galaxy S3。没有 root 并且不想 root)。
阅读互联网上的许多指南后,我决定在 Linux 中使用 wpa_supplicant 并为 Android 创建一个应用程序。 这是我为 wpa_supplicant 找到的最佳指南之一: https://web.archive.org/web/20210114180304/https://processors.wiki.ti.com/index.php/OMAP_Wireless_Connectivity_NLCP_WiFi_Direct_Configuration_Scripts
当我运行 iw list 时,我看到“支持的接口模式:”允许 P2P_client 和 P2P_GO。 我的 wpa_supplicant.conf 包含:
ctrl_interface=/var/run/wpa_supplicant
update_config=1
ap_scan=1
device_name=My-pc
device_type=1-0050F204-1
driver_param=use_p2p_group_interface=1
p2p_go_intent=15
p2p_go_ht40=1
它按预期工作。当我在两台 Android 设备上尝试时,它们可以互相看到并连接(出现 Wifi-Direct 图标)。
现在我正在尝试连接 Android 和 Linux,但我想我并不真正了解 wpa_supplicant 的工作原理。 我也看到了这个与我提出的问题非常相似的问题,但它并没有真正回答我的疑问...... Direct Wifi Communication between android smartphone and other devices
我的问题是我不明白如何在两台设备之间进行握手以及如何设置网络。
Wpa_supplicant 是我的问题。我跑:
sudo wpa_supplicant -wlan0 -Dnl80211 -c/etc/wpa_supplicant.conf
sudo wpa_cli
但是我遇到了很多问题:
- 未按照我在 .conf 文件中指定的方式设置 device_name(和其他参数)
- wpa_supplicant 继续尝试连接到所有网络
- p2p_find 真的很慢...
所以我进入 /usr/share/dbus-1/system-services 并移走了这两个文件
fi.epitest.hostap.WPASupplicant.service
fi.w1.wpa_supplicant1.service
现在可以
sudo killall wpa_supplicant
它真的死了,在没有重新连接下一秒的情况下断开了我与 Wifi 的连接。 现在我可以启动 wpa_supplicant,三个问题都解决了。
我进入 wpa_cli,启动“p2p_find”,同时在应用内启用搜索。
Android 和 Linux 现在可以互相看到了。
P2P-DEVICE-FOUND 00:11:22:44:88:ff p2p_dev_addr=00:11:22:44:88:ff
pri_dev_type=10-0050F204-5 name='GT-I9300' config_methods=0x188
dev_capab=0x24 group_capab=0x0 vendor_elems=1 new=0
通过“p2p_peers”,我可以看到手机 MAC。
> aa:bb:cc:dd:ee:ff
这里我不能继续。我尝试了各种可能性,但都没有奏效。我的目标是让 Linux 成为组所有者。
- 问题 1.1:与两台设备握手的正确方法是什么?
- 问题 1.2:当我尝试 p2p_connect 时,经常会在结果之间出现“检测到 Michael MIC 故障”,这在本次比赛中意味着什么?
- 问题 1.3:Android 当前尝试连接 PBC。有办法用 PIN 连接吗?
看到我无法连接 Android/Linux,我尝试使用 Linux/Linux(Linux Mint 作为 GO,Ubuntu 作为客户端)进行一些练习,遵循互联网上的示例,如第一个链接中的示例。 即使在这里我也有很多问题。
我试试薄荷糖
p2p_connect MAC_UBUNTU pin auth
在 Ubuntu 中我尝试
p2p_connect MAC_MINT PIN_GENERATED_BY_MINT
当我在 Mint 中编写 psp_connect 时,它会创建一个新的接口 p2p_wlan0 _0,并返回
P2P-DEVICE-LOST p2p_dev_addr=MAC_UBUNTU
然后从 Ubuntu 启动的 p2p_connect 失败。
-
问题2.1 为什么在创建群组时会切换界面?
-
问题 2.2 处理这种变化的正确方法是什么?更改后我无法 p2p_find Ubuntu(我必须等待一段时间或重新启动所有内容)
-
问题 2.3 Ubuntu 应该改变它的界面吗?
-
问题 2.3 在新界面中,我应该为 Ubuntu 和 Mint 设置 IP...我应该如何使用静态 IP 进行此操作?
-
问题 2.4 如果我想设置例如 DHCP 服务器和客户端?
-
问题 1.4 和 Android(客户端)/Linux(GO)?
【问题讨论】:
-
我也遇到了类似的问题,你有什么办法吗?
-
是的,我一直在努力,解决了很多问题。目前我没有一个很好的稳定解决方案,但我到了那里!一旦我得到所有问题的答案,我会在这里回答!
标签: android linux wifi-direct wpa-supplicant