1. 程式人生 > >利用wpa_cli工具除錯wifi

利用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
[email protected]
_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
[email protected]
:wpa_wlan0 IFNAME=wlan0 SET country US //7.0上需用這條命令才行,這是global方式 wpa_cli -iwpa_wlan0 -p/dev/socket SET country US //7.0上需用這條命令才行,這是非global方式