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
最新文章
- 移动端css知识总结--字体,毛玻璃效果,input和disabled
- Node.js学习笔记
- sharedUserId
- java web.xml配置详解
- U盘启动盘 安装双系统 详细教程
- Game of Life I &; II
- iOS开发中的内存分配(堆和栈)
- jquery 判断元素是否隐藏
- .NET程序的编译和运行
- 【转】object标签和embed标签
- 【桌面程序搞界面再也不怕了】:迅雷BOLT入门(一)开篇 附程序和源码
- Matlab中plot函数参数解析
- Android 实现切换主题皮肤功能(类似于众多app中的 夜间模式,主题包等)
- N - Tram - poj1847(简单最短路)
- 常用的bat命令
- 工欲善其事必先利其器---SQL在线可视化模型设计,(还可学习拖拽知识)
- VCMI Mods list
- Bloom Filter的基本原理和变种
- 微信小程序开发入门
- 强化学习读书笔记 - 02 - 多臂老O虎O机问题