Linux wpa_cli 調試方法


  記錄一下如何使用wpa_cli來進行wifi調試。

1、啟動WLAN

(1)加載驅動 
  打開wifi的時候會加載驅動,關閉則會卸載wifi驅動。手動調試的時候,先調用insmod/rmmod命令加載/卸載指定的wifi驅動。 
再調用iwconfig可以看到驅動是否加載成功,如下,可以看到wlan0已經有了,則驅動加載成功。

// ifconfig -a 查看
//tmp # ifconfig -a
lo        Link encap:Local Loopback  
          LOOPBACK  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

sit0      Link encap:IPv6-in-IPv4  
          NOARP  MTU:1480  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wlan0     Link encap:Ethernet  HWaddr 00:00:00:00:00:00  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
 

(2)打開wlan0 
  ifconfig wlan0 up

2、啟動wpa_supplicant

命令如下:可以參考下自己init.xxx.rc是如何配置的,參數可能會不一樣。

wpa_supplicant –iwlan0 –Dnl80211 –c 配置文件 &

-i:指定網口; 
-D:指定驅動類型; 
-c:指定了wpa_supplicant的配置文件。

例如

RDA 512C方案:
wpa_supplicant_8 -iwlan0 -Dwext -c/etc/wpa_supplicant.conf &

 

配置文件為/etc/wifi/wpa_supplicant.conf,-d參數是打開wpa_supplicant的打印。 
配置文件如下:

update_config=1 ctrl_interface=/data/misc/wifi/sockets eapol_version=1 ap_scan=1 fast_reauth=1

 

ps:如果運行不起來,在已經加載驅動,也已up wlan0的情況下,很可能是/data/misc/wifi/sockets的權限不足,導致無法創建wlan0 socket。

確保wpa_supplicant已經運行起來。

3、啟動wpa_cli進入交互模式

wpa_cli -i網口 -p socket所在路徑

 

例如像我剛才那么調用的話,則用下面命令啟動:

wpa_cli -iwlan0 -p /data/misc/wifi/sockets/

RDA在/bin目錄運行:
wpa_cli_8

 進入如下界面則已經可以正常調試了。

/bin # wpa_cli_8 -i wlan0
wpa_cli v0.8.x
Copyright (c) 2004-2011, Jouni Malinen <j@w1.fi> and contributors

This program is free software. You can distribute it and/or modify it
under the terms of the GNU General Public License version 2.

Alternatively, this software may be distributed under the terms of the
BSD license. See README and COPYING for more details.


Selected interface 'wlan0'

Interactive mode

>
 

如果一直顯示如果出現“Could not connect to wpa_supplicant - re-trying”,那表示 wpa_cli 不能和wpa_supplicant 建立 socket 連接,這時要檢查 wpa_supplicant 進程是否還在,還有socket所在路徑wlan0是否存在(在我的例子是/data/misc/wifi/sockets/wlan0)。

4、掃描ap

輸入scan命令

> scan
OK
>SCANNING, suspend MSDU transmission ...
 SYNC - BBP R4 to 20MHz.l
MT7601_ChipSwitchChannel: SwitchChannel#1(RF=15, 1T)
MT7601_ChipSwitchChannel: SwitchChannel#2(RF=15, 1T)
MT7601_ChipSwitchChannel: SwitchChannel#3(RF=15, 1T)
SYNC - End of SCAN, restore to 20MHz channel 1, Total BSS[24]
SCAN done, resume MSDU transmission ...
CNTL - All roaming failed, restore to channel 1, Total BSS[24]
===>rt_ioctl_giwscan. 24(24) BSS returned, data->length = 4082
<3>CTRL-EVENT-SCAN-RESULTS 
<3>WPS-AP-AVAILABLE 
TSSI = 0x4F
temperature = 0xFFFFFFFB
PacketType = 0xBD
tx_11g_rate: b
Channel PWR + MCS PWR = 22000
TargetPower: 0x2428f(148111)
tssi_m_dc: 78
TssiLinear0: 79
TssiDC0: 1
tssi_offset: 0
tssi_offset<<9: 0
TssiSlope: 128
tssi_db: 1209
CurrentPower: 154752
PowerDiff: -6641
final PowerDiff: -2(0xfffffffe)
MAC 13b4: 0xc9540029
MT7601AsicTemperatureCompensation::Disable PLL Lock Protect.
查看scan_result結果:
> scan_results
bssid / channel / signal level / quality /flags / ssid
20:6b:e7:f2:7a:50       1       -51     99/100  [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]      KAHUNA
34:96:72:f1:11:9a       6       -51     99/100  [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]      Panelmate
b8:f8:83:35:21:e6       6       -51     99/100  [WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][ESS]    TP-LINK_YSKJ
0a:d4:0c:c4:be:59       1       -33     100/100 [WPA2-PSK-CCMP][ESS]    A_Clair_Cl
d4:6a:a8:96:60:40       5       -51     99/100  [WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][ESS]    ChinaNet-Rg9G
50:bd:5f:1c:a1:04       11      -61     73/100  [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]      kitking_____
fc:3d:93:b4:01:3a       1       -57     83/100  [WPA2-PSK-CCMP][ESS]    Xiaomi_Lee
30:fc:68:ed:f4:d9       11      -63     68/100  [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]      TP-LINK_F4D9
d0:c7:c0:1b:b8:a6       11      -65     63/100  [WPA2-PSK-CCMP][ESS]
bc:46:99:e2:b4:b4       1       -65     63/100  [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]      TP-LINK_B4B4
8c:a6:df:40:35:26       11      -67     57/100  [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]      TP-LINK_3526
60:b6:17:4d:c8:c8       13      -63     68/100  [WPA-PSK-CCMP][WPA2-PSK-CCMP][WPS][ESS] ChinaNet-PDU9
c4:c7:55:0f:78:43       1       -63     68/100  [WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][WPS][ESS]       ChinaNet-VUEP
a8:6b:7c:41:64:81       1       -69     52/100  [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]      jinghua
06:69:68:99:48:d1       6       -69     52/100  [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]      TPGuest_guest
f0:b4:29:d3:68:4f       7       -65     63/100  [WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][WPS][ESS]       Kitking_01A
f4:83:cd:f9:fb:2b       1       -71     47/100  [WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][ESS]    TP-LINK_FB2B
24:69:68:99:48:d1       6       -71     47/100  [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]      TP-LINK_XU
b0:e2:e5:c8:4d:fa       7       -67     57/100  [WPA-PSK-CCMP][WPA2-PSK-CCMP][WPS][ESS] ChinaNet-UZah
02:0e:5e:29:77:ce       1       -71     47/100  [WPA2-PSK-TKIP+CCMP][ESS]
60:bb:0c:46:7f:8c       1       -75     37/100  [WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][WPS][ESS]       ChinaNet-TwnA
fa:8f:ca:7e:49:e2       6       -37     100/100 [ESS]   Cast-Kitking.m
f2:b4:29:d1:68:4f       7       -63     68/100  [WPS][ESS]        ____________WiFi_684E
8c:f2:28:68:3c:9e       1       -75     37/100  [ESS]   MERCURY_3C9E
 
        

5、連接

從掃描結果看KAHUNA這個熱點是信號最強的。我們選擇連接這個ap。

> add_network 0 > set_network 0 ssid "KAHUNA" OK > set_network 0 key_mgmt WPA-PSK OK > set_network 0 psk "aa6396aa" OK > set_network 0 pairwise CCMP OK > set_network 0 group CCMP OK > set_network 0 proto WPA2 OK > enable_network 0 OK <3>CTRL-EVENT-STATE-CHANGE id=-1 state=3 BSSID=00:00:00:00:00:00 SSID= <3>CTRL-EVENT-SCAN-RESULTS <3>WPS-AP-AVAILABLE <3>Trying to associate with d4:61:2e:a2:b9:e5 (SSID='HUAWEI G9 Youth' freq=2437 MHz) <3>CTRL-EVENT-STATE-CHANGE id=-1 state=5 BSSID=00:00:00:00:00:00 SSID= <3>CTRL-EVENT-STATE-CHANGE id=1 state=6 BSSID=00:00:00:00:00:00 SSID=HUAWEI G9 Youth <3>Associated with d4:61:2e:a2:b9:e5 <3>CTRL-EVENT-STATE-CHANGE id=1 state=7 BSSID=d4:61:2e:a2:b9:e5 SSID=HUAWEI G9 Youth <3>CTRL-EVENT-STATE-CHANGE id=1 state=8 BSSID=d4:61:2e:a2:b9:e5 SSID=HUAWEI G9 Youth <3>WPA: Key negotiation completed with d4:61:2e:a2:b9:e5 [PTK=CCMP GTK=CCMP] <3>CTRL-EVENT-CONNECTED - Connection to d4:61:2e:a2:b9:e5 completed (auth) [id=1 id_str=] <3>CTRL-EVENT-STATE-CHANGE id=1 state=9 BSSID=d4:61:2e:a2:b9:e5 SSID=HUAWEI G9 Youth

 

步驟如下: 
(1)“add_network”,這里返回網絡ID 為 1。 
(2) 配置網絡的 SSID,執行 set_network 1 ssid AP 的 SSID。 
(3)配置網絡的加密方式和密碼。 
(4)啟動網絡,執行“enable_network 0”。 
(5)收到“CTRL-EVENT-CONNECTED”表示連接成功。

6、分配IP

此時已經連接上ap,dhcp分配一個IP即可。 
輸入 q 退出 wpa_cli,執行命令:udhcpc -i wlan0
此時已經可以ping通了,在Android系統里,還需要設置DNS這些,在Android里,這些流程會有netd來完成,這里就不說了。

 

 

簡單描述交互模式如下:

insmod mt7601Usta.ko

ifconfig wlan0 up

wpa_supplicant_8 -iwlan0 -Dwext -c/etc/wpa_supplicant.conf &

交互模式:

wpa_cli_8 -i wlan0
1)add_network//添加網絡
2)scan //搜索網絡
3)scan_result //顯示搜索結果
4)set_net 0 ssid "xxxx" //熱點名字
5)set_net 0 psk "xxxxx" //熱點密碼
6)select_net 0

7)退出交互模式 q

完成以上應該可以連上,但是還沒有分配ip

8)動態分配IP
udhcpc -i wlan0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM