zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    [Android Samples视频系列之ApiDemos] AppActivityReceive Result
    【Android每日一讲】2012.11.19 我同意条款 CheckBox的isChecked属性
    Android中得到SharedPreference全面总结
    【Android每日一讲】2012.11.27 向左或向右 RadioGroup组与onCheckedChanged事件
    [Android Samples视频系列之ApiDemos] AppActivityReorder Activities
    Lc.exe已退出,代码为1
    反射和委托的两个例子
    数据库日志太大如何快速删除
    Spring.NET环境搭建之基础篇(收藏、学习)
    软件工程之编程规范
  • 原文地址:https://www.cnblogs.com/jiangzhaowei/p/8256920.html
Copyright © 2011-2022 走看看