记录一下如何使用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:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions: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:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions: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:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions: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 contributorsThis 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

Linux wpa_cli 调试方法相关推荐

  1. linux内核串口调试,linux 串口调试方法

    linux 串口调试方法 作者:syhdjf 发布于:2015-4-8 16:41 最近项目上用到linux下的串口,与下级模块的通信出了些问题,所以写了个小程序想要测试下串口,物理连接是PC端串口调 ...

  2. Linux内核调试方法总结

    [转]Linux内核调试方法总结 目录[-] 一  调试前的准备 二  内核中的bug 三  内核调试配置选项 1  内核配置 2  调试原子操作 四  引发bug并打印信息 1  BUG()和BUG ...

  3. Linux内核调试方法总结【转】

    转自:http://my.oschina.net/fgq611/blog/113249 内核开发比用户空间开发更难的一个因素就是内核调试艰难.内核错误往往会导致系统宕机,很难保留出错时的现场.调试内核 ...

  4. Linux内核调试方法【转】

    转自:http://www.cnblogs.com/shineshqw/articles/2359114.html kdb:只能在汇编代码级进行调试: 优点是不需要两台机器进行调试. gdb:在调试模 ...

  5. linux vc 调试方法,VC实现【API钩取】【调试法】附加调试器

    最近在学习逆向核心,在论坛也发了几篇帖子说说自己的经验,帮助自己巩固知识,也方便了大家. 如果帖子中有什么疏漏甚至不对的地方,请大牛们指出,我会积极改正的! 废话不多说,还是我[Miss丿小沫],上教 ...

  6. linux反调试代码,linux反调试方法

    如何防止自己的程序被调试器跟踪,这是一个很有趣的话题,也是反逆向工程中的一个重要话题.这里简单介绍一下Linux平台上的反调试技术. (本文主要参考:http://blog.txipinet.com/ ...

  7. linux驱动程序调试方法

    驱动程序开发的一个重大难点就是不易调试. 本文目的就是介绍驱动开发中常用的几种直接和间接的调试手段,它们是: 利用printk 查看OOP消息 利用strace 利用内核内置的hacking选项 利用 ...

  8. linux单步调试方法,linux下gdb单步调试(中).doc

    linux下gdb单步调试(中) linux下gdb单步调试(中) linux下gdb单步调试(中) 一.设置断点( BreakPoint ) 我们用 break 命令来设置断点.正面有几点设置断点的 ...

  9. Linux内核调试方法总结之sysrq

    sysrq [用途] Sysrq被称为"魔术组合键", 是内建于Linux内核的调试工具.只要内核没有完全锁住,不管内核在做什么事情,使用这些组合键都可以搜集包括系统内存使用.CP ...

  10. linux sysrq使用方法,Linux内核调试方法总结之sysrq

    sysrq [用途] Sysrq被称为"魔术组合键", 是内建于Linux内核的调试工具.只要内核没有完全锁住,不管内核在做什么事情,使用这些组合键都可以搜集包括系统内存使用.CP ...

最新文章

  1. Linux/Ubuntu
  2. 利用阿里云自定义镜像实现服务器数据/网站快速迁移
  3. android 测试工程 关闭混淆,混淆Android Test项目以及项目(在发布和混淆版本上运行测试)...
  4. 模型训练速度过慢,GPU利用率低
  5. 部署nginx反向代理及缓存
  6. mysql中outer join用什么,mysql – “INNER JOIN”和“OUTER JOIN”有什么区别?
  7. 1w用户的并发量多大_QQ邮件订阅中心下线:卢松松博客曾经有1W多订阅用户
  8. 线性表:7.C语言链表实现俄罗斯轮盘赌小游戏
  9. 没有APP经验的运营者,怎么做好APP推广
  10. DB2常见错误码注释
  11. JS 逻辑中断(二)
  12. 五款优秀的端口扫描工具
  13. C++排列组合及应用
  14. RestTemplate application/octet-stream处理
  15. Crypto one-time-pad
  16. linux怎么恢复删除的文件
  17. 如何恢复已删除的照片
  18. 【JUC高并发编程】—— 初见JUC
  19. 50款拥有超赞用户体验的精美移动UI设计
  20. 事件委托(事件代理)概述

热门文章

  1. 01.WebService概述和WebService在企业应用中的作用
  2. 原创engine中地块的自动编号函数
  3. 小小知识点(十一)——MATLAB中fftshift的作用
  4. Ubuntu14.4安装mysql
  5. 属于自己的MES(二)必备的主数据
  6. POJ2536 Gopher II【二分图最大匹配】
  7. Thinkphp5命名规范
  8. MySQL索引类型及优化
  9. 课堂随笔01--进制转换
  10. 系统架构师学习笔记_第十一章(下)_连载