Wifi Sta驱动移植与wifi链接使用
来源:互联网 发布:一句话网络段子精选 编辑:程序博客网 时间:2024/05/18 17:25
开发环境:
开发板:hisi3520D
内核linux3.0.8
交叉编译器:arm-hisiv100nptl-linux-gcc
wifi模块:rt5572和mt7601
在介绍wpa_supplicant工具前,需要先介绍一下它和wireless-tool的差异:
第一步:编译驱动
在网上下载rt5572和mt7601的驱动,这两个驱动都存在两个版本。STA驱动和AP驱动,通俗的说就是wifi客户端驱动和wifi热点驱动,STA驱动中主要分为两个大版本DPO和DPA,两者具体的差异不太明白,但是DPA的版本编译出来rt5572和mt7601都存在三个ko文件,文件大小较大,而DPO版本的编译驱动程序只有一个ko文件,文件大小较小。处于节省flash空间目的这里选用DPO版本的驱动程序。
修改Makefile(指定平台类型和相应平台类型下的内核与交叉编译器):
PLATFORM = PC
ifeq ($(PLATFORM),PC)
LINUX_SRC_MODULE = /lib/modules/$(shell uname -r)/kernel/drivers/net/wireless/
LINUX_SRC = /home/Hi3520D_SDK_V1.0.3.0/osdrv/kernel/linux-3.0.y
CROSS_COMPILE = arm-hisiv100nptl-linux-
endif
修改os/linux/config.mk(添加wpa支持)
HAS_WPA_SUPPLICANT=y
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
编译驱动程序:#make ARCH=arm
第二步:交叉编译wpa-supplicant工具
下载wpa-supplicant2.2开源包,openssl-0.9.8e开源包
第一步编译openssl-0.9.8e
把wpa_supplicant-2.2里面的patches文件夹下的openssl-0.9.8e-tls-extensions.patch文件拷贝到openssl-0.9.8e目录下,运行:
pathc–p1<openssl-0.9.8e-tls-extensions.patch
然后建立openssl的安装目录,建议安装在openssl-0.9.8e目录下,因为生成的库等只在交叉编译wpa_supplicant时使用,这样可以保持系统干净。
进入openssl-0.9.8e目录修改Makefile,修改如下:
CC=arm-linux-uclibcgnueabi-gcc
AR=arm-linux-uclibcgnueabi-ar$(ARFLAGS) r
RANLIB=arm-linux-uclibcgnueabi-ranlib
INSTALLTOP=刚才你建立的安装目录,要使用绝对路径,不然在make install的时候会出错
OPENSSLDIR=刚才你建立的安装目录,要使用绝对路径,不然在make install的时候会出错
然后,执行make&&make install。
第二步编译wap-supplicant2.2
wpa_supplicant目录,首先执行cp defconfig .config 拷贝生成编译配置,添加一下配置
CC=arm-hisiv100nptl-linux-gcc
CFLAGS += -I/home/openssl-0.9.8e/Demo/include
LIBS += -L/home/openssl-0.9.8e/Demo/lib
LIBS_p += -L/home/openssl-0.9.8e/Demo/lib
执行#make 编译生成3个文件wpa_supplicant, wpa_cli, wpa_passphrase
第三步 生成有效的wpa配置文件
wpa-psk/wpa2-psk方式链接热点:
ctrl_interface=/var/ra0
eapol_version=1
ap_scan=1
network={
ssid="xxxxx"
scan_ssid=1
proto=WPA RSN
pairwise=CCMP TKIP NONE
key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
group=TKIP CCMP
psk="xxxxx" #密码
priority=10
}
wep方式链接热点:
network={
ssid="xxxxx"
key_mgmt=NONE
wep_key0="xxx" #ASCII 密码
#wep_key0=xxxx #十六进制密码
wep_tx_keyidx=0
priority=5
auth_alg=SHARED
}
无密码访问热点:
network={
ssid="xxxx"
key_mgmt=NONE
}
第四步基于rt5572模块和mt7601模块链接wifi热点
测试流程如下:
#insmod xxxx.ko 加载驱动
#ifconfig -a 查看无线网卡
#ifconfig ra0 up 打开对应的无线网卡ra0
#iwlist ra0 scan 扫描wifi热点
#./wpa_supplicant -Dwext -ira0 -c/var/wpa_supplicant.conf -dd&
-i为wifi设备,-c指定wpa_supplicant配置文件(wifi路由器设置为不同的协议采用不同的配置文件) -dd打开调试信息
# udhcpc -b -i ra0 自动获取ip(udhcpc需要自己移植)
#ping www.baidu.com ping外网,如果能ping通外网就成功了
测试发现bug:
模块不支持wpa2-psk方式链接热点
解决方法:将wpa_supplicant的版本换成0.6.10的版本
rt5572不支持wpa-psk方式链接热点
解决方法:将rt5572的驱动包换成2012_03_22_RT5572_Linux_STA_v2.6.0.0_DPO版本
上诉三种配置文件,经测试发现支持所用常用的wifi配置,wifi配置界面如下,红色椭圆为支持协议类型,绿色矩形为支持下拉框内的,任何认证类型与加密算法的搭配,这些涵盖了常用wifi设置所用方式。
- Wifi Sta驱动移植与wifi链接使用
- hi3518e移植USB-WiFi RT3070 STA驱动
- wifi AP驱动移植与使用
- android wifi驱动移植
- 移植usb wifi 驱动
- rt3070 wifi驱动移植
- A20 wifi驱动移植
- android wifi驱动移植
- 移植usb wifi 驱动
- Android WIFI 驱动移植
- WIFI网卡驱动移植
- WIFI 驱动 RT3070移植
- Android Wifi驱动移植
- android wifi驱动移植
- WIFI分析与移植
- Android 下移植WIFI 驱动
- 9 Android WIFI 驱动移植
- usb wifi 驱动移植rtl5370
- iphone数据存储-Core Data的使用
- git相关
- ETL工具的进化
- 284. Peeking Iterator
- 首都查找例子(深搜)
- Wifi Sta驱动移植与wifi链接使用
- 解决undefined reference to `boost::filesystem::detail::copy_file
- vc复制指定文件夹以及文件夹内的内容
- 趣谈Java反射调用
- Java中几种遍历map的方法
- 安卓HelloWorld问题
- 究竟什么是数据仓库
- ios开发app瘦身
- 我的英文博客