logcat -s WifiEnabler Wifimultisupport WifiPowerSetting WifiStateMachine wpa_supplicant ConnectivityService NetworkSettingsActivity WifiController WifiHW CommandListener WifiP2pService wifi wpa_supplicant WifiMonitor SupplicantStateTracker WifiP2pSettings WifiMonitor WifiNative-HAL
一、问题描述
无法通过配置文件修改默认的p2p的ssid和password。
二、问题原因
1.文件权限问题
Android系统wifi之p2p(wifi直连)配置文件权限导致应用不能使用wifi问题
2.设置密码命令执行错误问题
D/WifiP2pService( 2046): ---Mod Group info, pw: "eeeeeeee" D/wifi ( 2046): TK--------->>>>>>>JNI>>>>doBooleanCommand>>11111 D/WifiHW ( 2046): TK--------->>>>command is SET_NETWORK 0 psk "eeeeeeee",reply is ,reply_len is 4095 D/WifiHW ( 2046): TK-------->>>wifi_send_command,ctrl_conn is I/wpa_supplicant( 4841): [CTRL_IFACE_G]SET_NETWORK 0 psk "eeeeeeee" D/wifi ( 2046): TK--------->>>>>>>JNI>>>>doBooleanCommand>>33333>>>reply is UNKNOWN COMMAND D/WifiP2pService( 2046): ---set pw error原因;wps不识别“SET_NETWORK 0 psk "eeeeeeee"”命令。
修改如下:
frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiNative.java
public WifiNative(String interfaceName) { mInterfaceName = interfaceName; mTAG = "WifiNative";// + interfaceName; tank //if (!interfaceName.equals("p2p0")) { mInterfacePrefix = "IFNAME=" + interfaceName + " "; //} else { // commands for p2p0 interface don't need prefix //mInterfacePrefix = ""; //} //tank }结果:
D/WifiHW ( 2055): TK--------->>>>command is IFNAME=p2p0 SET_NETWORK 0 psk "dddddddd",reply is ,reply_len is 4095 D/WifiHW ( 2055): TK-------->>>wifi_send_command,ctrl_conn is � I/wpa_supplicant( 4846): [CTRL_IFACE]p2p0: SET_NETWORK 0 psk "dddddddd" D/wifi ( 2055): TK--------->>>>>>>JNI>>>>doBooleanCommand>>33333>>>reply is OK ...... D/WifiHW ( 2055): TK--------->>>>command is IFNAME=p2p0 P2P_GROUP_ADD persistent=1,reply is OK,reply_len is 4095 D/WifiHW ( 2055): TK-------->>>wifi_send_command,ctrl_conn is � I/wpa_supplicant( 4846): [CTRL_IFACE]p2p0: P2P_GROUP_ADD persistent=1 D/wifi ( 2055): TK--------->>>>>>>JNI>>>>doBooleanCommand>>33333>>>reply is OK其实没有设置成功。
3.修改“IFNAME=p2p0 P2P_GROUP_ADD persistent=1”为“IFNAME=p2p0 P2P_GROUP_ADD persistent=0”
frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiNative.java
public boolean p2pGroupAdd(boolean persistent) { //modify by tank always add persistent 0 fixed 0 may cause cts verifiver p2p group owner fail /*if (persistent) { return doBooleanCommand("P2P_GROUP_ADD persistent"); } return doBooleanCommand("P2P_GROUP_ADD");*/ return doBooleanCommand("P2P_GROUP_ADD" + " persistent=0");//mod by HQS //end tank } public boolean p2pGroupAdd(int netId) { //modify by tank always add persistent 0 fixed 0 may cause cts verifiver p2p group owner fail //return doBooleanCommand("P2P_GROUP_ADD persistent=" + netId); return doBooleanCommand("P2P_GROUP_ADD" + " persistent=0");//mod by HQS //end tank }结果:可以立即设置成功。
D/WifiHW ( 2026): TK--------->>>>command is IFNAME=p2p0 P2P_GROUP_ADD persistent=0,reply is ��K�L�pIN�,reply_len is 4095 D/WifiHW ( 2026): TK-------->>>wifi_send_command,ctrl_conn is � I/wpa_supplicant( 4657): [CTRL_IFACE]p2p0: P2P_GROUP_ADD persistent=0 D/wifi ( 2026): TK--------->>>>>>>JNI>>>>doBooleanCommand>>33333>>>reply is OK E/wpa_supplicant( 4657): Using interface p2p0 with hwaddr 7e:b2:32:24:9d:da and ssid "TANK_p2p"三、p2p默认配置文件
system/etc/wifi/p2p_supplicant.conf
ctrl_interface=/data/system/wpa_supplicant update_config=1 device_type=10-0050F204-5 config_methods=virtual_push_button physical_display keypad p2p_listen_reg_class=81 p2p_listen_channel=11 p2p_oper_reg_class=81 p2p_oper_channel=11 p2p_go_intent=0 persistent_reconnect=1 network={ ssid="TANK_p2p" psk="123456789" proto=RSN key_mgmt=WPA-PSK pairwise=CCMP auth_alg=OPEN mode=3 disabled=2 }