利用wpa_cli工具调试wifi
‘’‘---------------以下在4.4的android上调试是OK的-----------------’‘’
insmod /system/lib/modules/ittiam.ko
wpa_supplicant -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf -dd
另外的窗口:
wpa_cli -iwlan0 -p/data/misc/wifi/sockets
scan 能看到有回复;
scan_results 能看到搜到的AP热点, 之后可以配置一个没有密码的热点 AAAA
remove_network all
add_network
set_network 0 ssid "AAAA"
set_network 0 key_mgmt NONE
select_network 0 这时候会去链接AP
status 如果成功可以通过status查看到 状态是 connect
补充:
当连接加密热点时,add_network后面如下执行即可:
set_network 0 ssid "AP_TJ_FAE_5F23"
set_network 0 key_mgmt WPA-PSK
set_network 0 psk “faewifi2014”
select_network 0 这时候会去链接AP
status 如果成功可以通过status查看到 状态是 connect
4.4平台,global方式启动 启动wpa_supplicant: wpa_supplicant -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf -dd -g/data/misc/wifi/sockets/global 启动wpa_cli: wpa_cli -iglobal -p/data/misc/wifi/sockets 发命令: IFNAME=wlan0 SCAN 四个socket: wpa_wlan0: 这个是在每次android起wpa_supplicant 服务时启动,init.board.rc 里创建的; 在4.4以前平台,非global起supplicant的话,直接走wpa_supplicant_ctl_iface_init ,判断是否有wpa_wlan0的socket(正常init.board.rc都会创建了此socket),于是注册此socket的接受处理函数为: wpa_supplicant_ctrl_iface_receive 在4.4平台上, 1)是以globla方式启动supplicant,先走wpa_supplicant_global_ctl_iface_init , 判断是否有wpa_wlan0的socket(正常init.board.rc都会创建了此socket),于是注册此socket的接受处理函数为:wpa_supplicant_global_ctrl_iface_receive. 2)紧接着,这里还会从wpa_supplicant_add_iface -》wpa_supplicant_init_iface -》wpa_supplicant_ctl_iface_init 这里面会根据conf文件里配置的ctrl_interface,先同样判断是否存在此socket,不存在则根据此ctrl_interface+fname,创建socket 即为:wpa_supplicant_ctrl_iface_init before bind path=/data/misc/wifi/sockets/wlan0 fname为‘wlan0’ ,来自启动wpa_supplicant 时传进来的参数 -iwlan0 ctrl_interface来自conf配置文件, 4.4平台conf文件里的ctrl_interface root@scx35_sp8830ec:/ # cat data/misc/wifi/wpa_supplicant.conf ctrl_interface=DIR=/data/misc/wifi/sockets update_config=1 shark235平台conf文件里的ctrl_interface # cat wpa_supplicant.conf ctrl_interface=wlan0 update_config=1 eapol_version=1 wpa_cli IFNAME=wlan0 DRIVER COUNTRY MY //6.0上可用这条命令 wpa_cli -g@android:wpa_wlan0 IFNAME=wlan0 SET country US //7.0上需用这条命令才行,这是global方式 wpa_cli -iwpa_wlan0 -p/dev/socket SET country US //7.0上需用这条命令才行,这是非global方式