您的位置:首页 > 其它

wifi tool工具的使用(iw与wpa_supplicant)(持续更新中)

2018-02-25 23:34 405 查看
wifi 驱动还有app tool移植可参考如下链接,写得非常好,韦东山老师写的东西就是牛逼。
http://www.100ask.org/bbs/forum.php?mod=viewthread&tid=14626&extra=page%3D1
WIFI tool主要有:wpa_supplicant(依赖于libnl、openssl库) 、hostapd 以及iw相关的tool            

[align=left]1.wpa_supplicant (无线网卡连接其它设备,工作于STA模式)[/align][align=left]2.hostapd              (无线网卡作为路由器,工作于AP模式)[/align]驱动程序的移植,如果是以模块的形式进行移植,关注点在于:
(1)采用什么编译器,如果是x86,那么Makefile可以不用更改直接make,如果是ARM,则需要修改Makefile中的CC选项
CC=arm-linux-gcc (假设是arm-linux-gcc) 

(2)指定内核源码的路径
DEF_KERNEL_DIR := /BSP/yuanxin/Demo/Project/yocto2.1/kernel4.1.15-r0

(3)指定环境变量
这个最让人头痛了,笔者曾经为这个问题绞尽脑汁好几天,最好才知道,要定制一些FLAG在里面,这些FLAG就是环境变量相关的东西,通常指定一些库,一些编译参数进行编译等等,这个可以通过echo $CC进行查看,前提是你当前的交叉编译环境以及配置成功。

应用程序的移植,关注点在于:
(1)采用什么平台进行编译,那么在Makefile中需要修改为xxx-gcc,比如CC=arm-linux-gcc,和驱动移植第一点是一样的。
(2)指定环境变量,和驱动移植的第三点是一样的。

关于wifi的加密/认证,以手机为例主要有四种模式:
(1)OPEN模式
(2)WEP模式
(3)WPA(TKIP)
(4)WPA2(AES)
1、iw工具的使用:
iw工具:是iwconfig的替代者
(1)可用于 open, WEP两种"认证/加密"的模式的使用
 // 列出WIFI网卡的性能

iw list 
//启动wifi模块
ifconfig wlan0 up
// 扫描WIFI AP

iw dev wlan0 scan     
// 连接到WIFI AP:xxx (open模式) (没有密码的,开放式wifi的连接)
iw wlan0 connect xxx  
// 连接到WIFI AP:xxx (WEP模式)   后面的xxxxx表示密码

iw wlan0 connect xxx keys d:0:xxxxxx 
                            d: default, 0: 第0个密码 

手动配置wifi热点的ip
ifconfig wlan0 192.168.1.22
ping 一下百度,看是否可以连通网络(前提,已经设置了支持外网)
ping www.baidu.com 

断开热点的连接:
iw wlan0 disconnect

2、wpa_supplicant(正在学习中)

功能比iw更为强大,可以用于OPEN模式、WEP模式、WPA(TKIP)、WPA2(AES)四种模式
一般情况下,现在很多都是用WPA2(AES)这种模式进行配置,所以我们来看看如何使用。
wpa_supplicant连接热点的方法如下:

连接命令:wpa_supplicant -B -i interface -c filename

字段含义如下:
wpa_supplicant -B -i interface -c filename
-B: Fork into background
-i: interface,表示对应的wifi节点(通常是wlan,当然有可能是其它的名字) -Interface to listen on.

-c: filename,表示使用哪个路径下的配置文件
例如:使用手动连接的方式去测试是否能够连接热点
wpa_supplicant -B -c /etc/wpa_wpa2.conf  -imlan0

解析:使用mlan0这个节点,创建一个进程,并且使用/etc/wpa_wpa2这个作为wifi的配置文件。
配置文件:/etc/wpa_wpa2.conf 
如果没有,需要touch  /etc/wpa_wpa2.conf
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="test"
psk="123456"

}如果需要添加多个配置,也可以继续添加以上network的字段,wpa这个工具会自动去匹配能够连接的ssid
连接成功:
root@imx6qrsb4411a1:/# wpa_cli -imlan0 status
bssid=9c:1c:12:28:dd:53
freq=2462
ssid=test
id=0
mode=station
pairwise_cipher=CCMP
group_cipher=CCMP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED
address=28:c2:dd:95:57:db

uuid=78dae99a-9f04-5c99-9080-8287e3f24ae5

但现在ping百度是ping不通的,那么如何连接外网呢?需要配置ip,添加域名,设置网关,添加DNS,但有一个工具已经将这些步骤通通自动完成,只要:
动态获取IP:
udhcpc ‐b ‐i mlan0      (mlan0是我的wifi节点)
例如:(对域名,IP,DNS保密,故以xx,xxx形式进行缩写)
root@imx6qrsb4411a1:/# udhcpc  -b -i mlan0
udhcpc (v1.23.1) started
Sending discover...
Sending select for xxx.xx.xxx.xx...
Lease of xxx.xx.xxx.xx obtained, lease time 3600
/etc/udhcpc.d/50default: Adding DNS xxx.xx.xxx.xx
/etc/udhcpc.d/50default: Adding DNS xxx.xx.xxx.xx

执行这个命令后,会在/etc/resolv.conf 自动生成对应的信息
root@imx6qrsb4411a1:/# cat /etc/resolv.conf 
domain XXXXXX
nameserver xxx.xx.xx.xx
nameserver xxx.xx.xx.xx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: