我通过wpa_supplicant和一个简单的C程序[1]调用wpa_ctrl API [2]启用到Linux主机的WiFi P2P连接。 在通过Nexus 7 Android平板电脑连接然后断开连接后,Linux主机将从平板电脑的P2P对等列表中消失,并且仅在重新启动主机后重新出现。 我尝试重新发布p2p_ext_listen,重新启动wpa_supplicant,并使用modprobe取消/重新加载mwifiex_sdio驱动程序。 我相信这是我的代码之外的错误,但如果是这样,在哪里?
我的Linux主机:
wpa_supplicant 2.5 with -i p2p0 -D nl80211 -c /etc/wpa_supplicant/p2p0.conf
内核4.7.2(主线)
发行版Arch Linux ARM
电台Marvell sd8787
cpu OMAP3
p2p0.conf:
ctrl_interface=/run/wpa_supplicant
ap_scan=1
device_name=mwifiex-p2p-device
device_type=1-0050F204-1
p2p_listen_reg_class=81
p2p_listen_channel=1
p2p_oper_reg_class=81
p2p_oper_channel=1
p2p_no_group_iface=1
p2p_go_intent=15
程序日志(>>>将msg标记为wpa_supplicant):
$ sudo p2p-host/p2phostd /run/wpa_supplicant/p2p0 75 1500 11111111
>>> P2P_EXT_LISTEN 75 1500
OK
<3>P2P-DEVICE-FOUND ae:22:0b:48:49:61 p2p_dev_addr=ae:22:0b:48:49:61 pri_dev_type=10-0050F204-5 name='Android_7326' config_methods=0x188 dev_capab=0x25 group_capab=0x0 new=1
<3>P2P-PROV-DISC-SHOW-PIN ae:22:0b:48:49:61 72764473 p2p_dev_addr=ae:22:0b:48:49:61 pri_dev_type=10-0050F204-5 name='Android_7326' config_methods=0x188 dev_capab=0x25 group_capab=0x0
>>> P2P_CONNECT ae:22:0b:48:49:61 11111111 display go_intent=0
OK
<3>P2P-GO-NEG-SUCCESS role=client freq=2417 ht40=0 peer_dev=ae:22:0b:48:49:61 peer_iface=ae:22:0b:48:c9:61 wps_method=Display
<3>CTRL-EVENT-SCAN-STARTED
<3>CTRL-EVENT-BSS-ADDED 0 20:4e:7f:92:63:d6
<3>CTRL-EVENT-SCAN-RESULTS
<3>WPS-AP-AVAILABLE
<3>CTRL-EVENT-SCAN-STARTED
<3>CTRL-EVENT-BSS-ADDED 1 ae:22:0b:48:c9:61
<3>CTRL-EVENT-SCAN-RESULTS
<3>WPS-AP-AVAILABLE-AUTH
<3>Trying to associate with ae:22:0b:48:c9:61 (SSID='DIRECT-Mw-Android_7326' freq=2417 MHz)
<3>Associated with ae:22:0b:48:c9:61
<3>CTRL-EVENT-EAP-STARTED EAP authentication started
<3>CTRL-EVENT-EAP-STATUS status='started' parameter=''
<3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=14122 method=1
<3>CTRL-EVENT-EAP-STATUS status='accept proposed method' parameter='WSC'
<3>CTRL-EVENT-EAP-METHOD EAP vendor 14122 method 1 (WSC) selected
<3>WPS-CRED-RECEIVED
<3>WPS-SUCCESS
<3>P2P-GROUP-FORMATION-SUCCESS
<3>CTRL-EVENT-EAP-STATUS status='completion' parameter='failure'
<3>CTRL-EVENT-EAP-FAILURE EAP authentication failed
<3>CTRL-EVENT-DISCONNECTED bssid=ae:22:0b:48:c9:61 reason=3 locally_generated=1
<3>Trying to associate with ae:22:0b:48:c9:61 (SSID='DIRECT-Mw-Android_7326' freq=2417 MHz)
<3>Associated with ae:22:0b:48:c9:61
<3>WPA: Key negotiation completed with ae:22:0b:48:c9:61 [PTK=CCMP GTK=CCMP]
<3>CTRL-EVENT-CONNECTED - Connection to ae:22:0b:48:c9:61 completed [id=0 id_str=]
<3>P2P-GROUP-STARTED p2p0 client ssid="DIRECT-Mw-Android_7326" freq=2417 psk=... go_dev_addr=ae:22:0b:48:49:61 [PERSISTENT]
...disconnect after a short while...
<3>CTRL-EVENT-BSS-REMOVED 0 20:4e:7f:92:63:d6
<3>CTRL-EVENT-DISCONNECTED bssid=ae:22:0b:48:c9:61 reason=3
<3>CTRL-EVENT-DISCONNECTED bssid=ae:22:0b:48:c9:61 reason=3 locally_generated=1
<3>P2P-GROUP-REMOVED p2p0 client reason=GO_ENDING_SESSION
...Linux host disappears from P2P list...
^C
$ wget help