6410移植RT3070无线模块,WPA加密方式,并开机自动加载
6410移植RT3070无线模块,WPA加密方式,并开机自动加载
一. wireless-tools安装
wireless-tools是一组无线网络扫描器及监控工具,可以用于监控、分析、以及测试WiFi网络,支持几乎所有的无线网卡和驱动,它可以支持WEP的AP,但它不能连接到那些只支持WPA的AP。连接AP需要使用它所编译出来的工具。
1、资源下载
下载wireless_tools.29.tar.gz
2、解压
# tar zxvf wireless_tools.29.tar.gz
#cd wireless_tools.29
3、修改Makefile
## Compiler to use (modify this for cross compile).
CC = arm-linux-gcc
4、编译
#make
5、拷贝
将生成的工具:iwlist、iwconfig、iwpriv等拷贝到目标板上,路径为:/root/app/bin/wifitools/
用iwlist scanning可搜索无线信号
二.rt3070驱动移植
1:网上下载雷凌最新的USB驱动,(http://download.csdn.net/detail/colwer/4515005)此驱动亲测可编译通过,其它的版本下了不少,都没有编译通过.
2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2
2.拷备到Linux目录并解压:
tar jxf 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2
3.进入RT3070_Linux_STA目录,看到有一个README_STA_usb文件,里面介绍了如何加载该驱动:
vi Makefile
ifeq ($(CHIPSET),)
CHIPSET = 3070
endif
#PLATFORM: Target platform
PLATFORM = SMDK
ifeq ($(PLATFORM),SMDK)
LINUX_SRC = /forlinx/linux-3.0.1
CROSS_COMPILE = /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-
endif
芯片型号要选择对应的CHIPSET = 3070,
PLATFORM = SMDK选择什么不重要,关键是对应后面的ifeq ($(PLATFORM),SMDK) 里面的linux内核的路径和交叉编译环境要填正确
第四步:按照第三步README_STA_usb给出的提示,修改config.mk文件,这里也只给出修改部分:
# vi os/linux/config.mk
# Support Wpa_Supplicant
HAS_WPA_SUPPLICANT=y
# Support Native WpaSupplicant for Network Maganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
2.2 编译源码
make也可以不改芯片型号用命令(make CHIPSET=3070)
,在2011_0719_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/os/linux目录下生成了rt3070sta.ko,也就是RT3070的驱动了
3.1 拷贝驱动到目标系统
把RT2870STA.dat拷贝到/etc/Wireless/RT2870STA目录下
把rt3070sta.ko拷贝到/xxx/ 目录下 xxx自定
注意,如果重新编译过linux内核,zImage文件也要更换,rt3070sta.ko与zImage版本要一致
三.基于6410的wpa_supplicant移植
因为现在的无线wifi网络大多是wpa加密。所以需要移植wpa_supplicant工具。
A)、下载源码
下载wpa_supplicant-0.7.3.tar.gz (openssl用到0.7.3提供的补丁)
#tar xvfz wpa_supplicant-0.7.3.tar.gz
下载www.openssl.org/source/openssl-0.9.8e.tar.gz
#tar zxvf openssl-0.9.8e.tar.gz
B)、编译openssl库
将wpa_supplicant中的补丁拷贝到openssl中
# cp wpa_supplicant-0.7.3/patches/openssl-0.9.8e-tls-extensions.patch openssl-0.9.8e/
#cd openssl-0.9.8e
#mkdir /usr/local/ssl
#vim Makefile
CC= arm-linux-gnu-gcc
AR= arm-linux-gnu-ar $(ARFLAGS) r
RANLIB= arm-linux-gnu-ranlib
INSTALLTOP=/usr/local/ssl
OPENSSLDIR=/usr/local/ssl
#make
#make install
在/usr/local/ssl目录下安装了ssl库
#ls /usr/local/ssl
#bin certs include lib man misc openssl.cnf private
后面编译wpa_supplicant要依赖openssl中的lib和include
C)、编译wpa_supplicant
进入wpa_supplicant-0.7.3.tar.gz解压生成的wpa_supplicant-0.7.3/wpa_supplicant目录中:
#cp defconfig .config
#vim .config
CC=arm-linux-gcc -L/usr/local/ssl/lib/
#CC=/opt/brcm/hndtools-mipsel-uclibc/bin/mipsel-uclibc-gcc
CFLAGS += -I/usr/local/ssl/include
#CPPFLAGS += -I../src/include -I../../src/router/openssl/include
LIBS += -L/usr/local/ssl/lib
#make
经过编译后的wpa_supplicant源程序可以看到两个主要的可执行工具:wpa_supplicant和wpa_cli。wpa_supplicant是核心程序,它和wpa_cli的关系就是服务和客户端的关系:后台运行wpa_supplicant,使用wpa_cli来搜索、设置、和连接网络。
D)、配置wpa_supplicant
(1)首先拷贝wpa_supplicant和wpa-psk-tkip.conf到开发板根文件系统中,并改名wpa-psk-tkip.conf为wpa_supplicant.conf
#cp wpa_supplicant /bin
#cp wpa_supplicant-0.7.3/wpa_supplicant/examples/wpa-psk-tkip.conf /etc/wpa_supplicant.conf
(2)修改wpa_supplicant.conf配置文件
#vim /etc/wpa_supplicant.conf
修改内容如下:
# WPA-PSK/TKIP
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="FS2410" //填写无线网络的的用户名
key_mgmt=WPA-PSK
proto=WPA
pairwise=TKIP
group=TKIP
psk="1234567890" //填写密码
}
ifconfig -a查看是否创建ra0这个节点。
分配IP地址:
#ifconfig ra0 192.168.1.5 //也可以动态分配 dhclient -i ra0 不过你得移植dhcp
(4)创建连接暗文密码(PSK密码),通过明码转换
#cd /etc
#wpa_passphrase FS2410 1234567890 >> wpa_supplicant.conf
此时将在wpa_supplicant.conf文件中生成:
network={
ssid="FS2410"
#psk="1234567890"
psk=4b2bc7cbb3710e9ea43f09e8d57e8bdb3b2a2127af44960d73216c3612f6baba
}
E)然后修改wpa_supplicant.conf配置文件,把 psk="1234567890" 这一行明文密码改成生成的暗文密码,即:
psk=4b2bc7cbb3710e9ea43f09e8d57e8bdb3b2a2127af44960d73216c3612f6baba
其它生成的多余信息删除,最后wpa_supplicant.conf文件如下:
# WPA-PSK/TKIP ctrl_interface=/var/run/wpa_supplicant network={ |
(以上是网上参考的,我的实际配置中,路由器是wpa加密,但我的密码没有用暗文密码,也成功了)
以下是我的wpa_support.conf
# WPA-PSK/TKIP
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="tp_linik"
scan_ssid=1
key_mgmt=WPA-PSK WPA-EAP
proto=WPA
pairwise=TKIP CCMP
group=TKIP CCMP
priority=1
#psk="ed51bdd318173ff2ae741862e2ec41dd1137681cf6d6e6e2cc15bb1d6c78bb32"
psk="0123456789"
}
6410 DHCP配置无线:
root@6410: /ifconfig ra0 up
root@6410: /wpa_supplicant -ira0 -c/etc/wpa_supplicant.conf -B
root@6410: /udhcpc -i ra0
6410开发板linux3.0.1开机自动加载rt3070无线模块:
vi /etc/init.d/rcS(确保你的rcS有可写权限)
末尾添加:
cd /etc/Wireless/
insmod rt3070sta.ko
ifconfig ra0 up
ifconfig eth0 down
wpa_supplicant -ira0 -c/etc/wpa_supplicant.conf -B
udhcpc -i ra0
保存,重启开发板.