利用wpa_cli工具调试wifi

利用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方式

猜你喜欢

转载自blog.csdn.net/chenpuo/article/details/81977218