我想使用Wifi-Direct连接两台设备.一个是带Linux的电脑(在我的测试中我使用的是Linux Mint 17.2),另一个是Android智能手机(带有Android 4.3的三星Galaxy S3.没有root,也不想root).
在互联网上阅读了许多指南,我决定在Linux中使用wpa_supplicant并为Android创建一个应用程序.这是我为wpa_supplicant找到的最佳指南之一:http: //processors.wiki.ti.com/index.php/OMAP_Wireless_Connectivity_NLCP_WiFi_Direct_Configuration_Scripts#p2p_group_add
当我运行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
Run Code Online (Sandbox Code Playgroud)
该应用程序非常类似于此示例(它来自一本书)http://kurser.iha.dk/eit/itsmap/basic/MEIER/Professional%20Android%204%20All%20downloads/9781118102275%20PA4AD/Code%20Snippets/章%2016/PA4AD_Ch16_WiFiDirect/src/com/paad/wifidirect/WiFiDirectActivity.java (我删除了整个"套接字部分").
它按预期工作.当我尝试使用两个Android设备时,他们可以看到对方并连接(它显示为Wifi-Direct图标).
现在我正在尝试连接Android和Linux,但我想我真的不明白wpa_supplicant是如何工作的.我也看到了这个与我问的问题非常相似的问题,但它并没有真正回答我的怀疑... Android智能手机和其他设备之间的直接Wifi通信
我的问题是我无法理解如何在两个设备之间进行握手以及如何设置网络.
Wpa_supplicant是我的问题.我跑:
sudo wpa_supplicant -wlan0 -Dnl80211 -c/etc/wpa_supplicant.conf
sudo wpa_cli
Run Code Online (Sandbox Code Playgroud)
但是我遇到了很多问题: - 设备名称(和其他参数)没有像我在.conf文件中指定的那样设置 - wpa_supplicant继续尝试连接到所有网络 - p2p_find真的很慢......
所以我进入/ usr/share/dbus-1/system-services并移走了两个文件
fi.epitest.hostap.WPASupplicant.service
fi.w1.wpa_supplicant1.service
Run Code Online (Sandbox Code Playgroud)
现在我能
sudo killall wpa_supplicant
Run Code Online (Sandbox Code Playgroud)
它真的死了,在没有重新连接下面的第二个的情况下将我与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
Run Code Online (Sandbox Code Playgroud)
使用"p2p_peers",我可以看到手机MAC.
> aa:bb:cc:dd:ee:ff
Run Code Online (Sandbox Code Playgroud)
在这里,我不能继续.我尝试了各种各样的可能性,但没有一种可行.我的目标是让Linux成为集团所有者.
看到我无法连接Android/Linux,我尝试使用Linux/Linux(Linux Mint作为GO,Ubuntu作为客户端)进行一些练习,遵循来自互联网的示例,如第一个链接中的示例.我甚至在这里遇到了很多问题.
在Mint我尝试
p2p_connect MAC_UBUNTU pin auth
Run Code Online (Sandbox Code Playgroud)
在Ubuntu我试试 …