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: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (0.0 B) TX bytes: (0.0 B) sit0 Link encap:IPv6-in-IPv4
NOARP MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (0.0 B) TX bytes: (0.0 B) wlan0 Link encap:Ethernet HWaddr :::::
BROADCAST MULTICAST MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (0.0 B) TX bytes: (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..x
Copyright (c) -, 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 . 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#(RF=, 1T)
MT7601_ChipSwitchChannel: SwitchChannel#(RF=, 1T)
MT7601_ChipSwitchChannel: SwitchChannel#(RF=, 1T)
SYNC - End of SCAN, restore to 20MHz channel , Total BSS[]
SCAN done, resume MSDU transmission ...
CNTL - All roaming failed, restore to channel , Total BSS[]
===>rt_ioctl_giwscan. () BSS returned, data->length =
<>CTRL-EVENT-SCAN-RESULTS
<>WPS-AP-AVAILABLE
TSSI = 0x4F
temperature = 0xFFFFFFFB
PacketType = 0xBD
tx_11g_rate: b
Channel PWR + MCS PWR =
TargetPower: 0x2428f()
tssi_m_dc:
TssiLinear0:
TssiDC0:
tssi_offset:
tssi_offset<<:
TssiSlope:
tssi_db:
CurrentPower:
PowerDiff: -
final PowerDiff: -(0xfffffffe)
MAC 13b4: 0xc9540029
MT7601AsicTemperatureCompensation::Disable PLL Lock Protect.
查看scan_result结果:
> scan_results
bssid / channel / signal level / quality /flags / ssid
:6b:e7:f2:7a: - / [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] KAHUNA
:::f1::9a - / [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] Panelmate
b8:f8::::e6 - / [WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][ESS] TP-LINK_YSKJ
0a:d4:0c:c4:be: - / [WPA2-PSK-CCMP][ESS] A_Clair_Cl
d4:6a:a8::: - / [WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][ESS] ChinaNet-Rg9G
:bd:5f:1c:a1: - / [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] kitking_____
fc:3d::b4::3a - / [WPA2-PSK-CCMP][ESS] Xiaomi_Lee
:fc::ed:f4:d9 - / [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] TP-LINK_F4D9
d0:c7:c0:1b:b8:a6 - / [WPA2-PSK-CCMP][ESS]
bc:::e2:b4:b4 - / [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] TP-LINK_B4B4
8c:a6:df::: - / [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] TP-LINK_3526
:b6::4d:c8:c8 - / [WPA-PSK-CCMP][WPA2-PSK-CCMP][WPS][ESS] ChinaNet-PDU9
c4:c7::0f:: - / [WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][WPS][ESS] ChinaNet-VUEP
a8:6b:7c::: - / [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] jinghua
:::::d1 - / [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] TPGuest_guest
f0:b4::d3::4f - / [WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][WPS][ESS] Kitking_01A
f4::cd:f9:fb:2b - / [WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][ESS] TP-LINK_FB2B
:::::d1 - / [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] TP-LINK_XU
b0:e2:e5:c8:4d:fa - / [WPA-PSK-CCMP][WPA2-PSK-CCMP][WPS][ESS] ChinaNet-UZah
:0e:5e:::ce - / [WPA2-PSK-TKIP+CCMP][ESS]
:bb:0c::7f:8c - / [WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][WPS][ESS] ChinaNet-TwnA
fa:8f:ca:7e::e2 - / [ESS] Cast-Kitking.m
f2:b4::d1::4f - / [WPS][ESS] ____________WiFi_684E
8c:f2:::3c:9e - / [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 调试方法的更多相关文章
- Linux内核调试方法总结
Linux内核调试方法总结 一 调试前的准备 二 内核中的bug 三 内核调试配置选项 1 内核配置 2 调试原子操作 四 引发bug并打印信息 1 BUG()和BUG_ON() 2 ...
- Linux内核调试方法总结之反汇编
Linux反汇编调试方法 Linux内核模块或者应用程序经常因为各种各样的原因而崩溃,一般情况下都会打印函数调用栈信息,那么,这种情况下,我们怎么去定位问题呢?本文档介绍了一种反汇编的方法辅助定位此类 ...
- Linux内核调试方法总结【转】
转自:http://my.oschina.net/fgq611/blog/113249 内核开发比用户空间开发更难的一个因素就是内核调试艰难.内核错误往往会导致系统宕机,很难保留出错时的现场.调试内核 ...
- 【转】Linux内核调试方法总结
目录[-] 一 调试前的准备 二 内核中的bug 三 内核调试配置选项 1 内核配置 2 调试原子操作 四 引发bug并打印信息 1 BUG()和BUG_ON() 2 dump_sta ...
- Linux内核调试方法【转】
转自:http://www.cnblogs.com/shineshqw/articles/2359114.html kdb:只能在汇编代码级进行调试: 优点是不需要两台机器进行调试. gdb:在调试模 ...
- Linux内核调试方法总结之调试宏
本文介绍的内核调试宏属于静态调试方法,通过调试宏主动触发oops从而打印出函数调用栈信息. 1) BUG_ON 查看bug处堆栈内容,主动制造oops Linux中BUG_ON,WARN_ON用于调试 ...
- Linux内核调试方法总结之栈帧
栈帧 栈帧和指针可以说是C语言的精髓.栈帧是一种特殊的数据结构,在C语言函数调用时,栈帧用来保存当前函数的父一级函数的栈底指针,当前函数的局部变量以及被调用函数返回后下一条汇编指令的地址.如下图所示: ...
- Linux内核调试方法总结之序言
本系列主要介绍Linux内核死机.异常重启类稳定性问题的调试方法. 在Linux系统中,一切皆为文件,而系统运行的载体,是一类特殊的文件,即进程.因此,我尝试从进程的角度分析Linux内核的死机.异常 ...
- Linux内核调试方法总结之ptrace
ptrace [用途] 进程跟踪器,类似于gdb watch的调试方法 [原理][详细说明参考man ptrace帮助文档] ptrace系统调用主要是父进程用来观察和控制子进程的执行过程.检查并替换 ...
随机推荐
- h5调用手机照相机
camera.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...
- SpringMVC:JSON
@ResponseBody params="json":访问我这个方法的时候一定要有参数名为json 返回值Userjackson-all-1.9.0.jar @RequestMa ...
- 构造方法后面带:this()
可以这么理解,有参数的构造函数需要执行无参构造函数中的代码,为了省去重复代码的编写,所以就继承了,先执行没参数的那个构造函数. 在this上“转到定义”(F12)就到第一个构造函数上去了.
- allegro设置鼠标滚轮放大缩小
allegro设置鼠标滚轮放大缩小 allegro16版本以增加可以通过鼠标滚轮进行PCB的放大缩小.具体方法如下: 首先在HOME路径下找到PCBENV文件夹,进入该文件夹打开ENV文件. 在ENV ...
- 启动app-inspector报Internal Server Error
前言 应用工具app-inspector可以协助定位IOS版App的控件元素,然鹅启动时报Internal Server Error! 解决办法 一.找到XCTestWD项目 目录: /usr/loc ...
- JSP页面的编码设置(转载)
1. pageEncoding:<%@ page pageEncoding="UTF-8"%> jsp页面编码: jsp文件本身的编码 2. contentType: ...
- SAP-ABAP系列 第二篇SAP ABAP开发基础
第二章SAP ABAP开发基础 1.ABAP数据类型及定义 ABAP程序中共包含8种基本数据类型定义, 类型名称 描述 属性 C Character Text (字符类型) 默认长度=1,默认值 = ...
- 相似进程死掉Process com.midea.mmp2 died.
此异常查到网上有一篇不错的文章例如以下: 08:56:03,273 INFO – 运行Do func=[GetSeqNo] keyNam=[keynam];KeyVal=[PRYPAYBILSYSTR ...
- iOS 优化方案浅析
本文转载至 http://mobile.51cto.com/iphone-413256.htm Windows独特的注册表机制以及复杂的进程.内存管理,给了很多PC“优化”类软件极大的机遇,比如奇虎3 ...
- spring+mybatis多数据源,动态切换
有时我们项目中需要配置多个数据源,不同的业务使用的数据库不同 实现思路:配置多个dataSource ,再配置多个sqlSessionFactory,和dataSource一一对应.重写SqlSess ...