rt3070无线网卡工作在staion模式----fl2440开发板

-----------------------------------------------------------------------

主机操作系统:Centos 6.5

交叉编译器环境:arm-linux-gcc-4.5.4

开发板平台: FL2440       

Linux内核版本: linux-3.0

-----------------------------------------------------------------------


STA模式:Station, 类似于无线终端,sta本身并不接受无线的接入,它可以连接到AP,一般无线网卡即工作在该模式。简单来说,station模式就是连别人的wifi。

AP模式:即作为无线路由器,提供其他用户接入 (路由器)。

linux3.0以上的内核中已经含有了RT3070的通用mac80211驱动框架,所以直接基于此并借助wpa_suppicant软件来实现Wifi的STA模式


一、配置linux内核支持wireless无线上网

[*] Networking support  --->

         -*-   Wireless  --->

              <*>   cfg80211 - wireless configuration API

              [ ]     nl80211 testmode command

              [ ]     enable developer warnings

              [ ]     cfg80211 regulatory debugging

              [*]     enable powersave by default

              [ ]     use statically compiled regulatory rules database

              [ ]     cfg80211 wireless extensions compatibility

              <*>   Common routines for IEEE802.11 drivers

              [ ]   lib80211 debugging messages

              <*>   Generic IEEE 802.11 Networking Stack (mac80211)

              [ ]   PID controller based rate control algorithm

              [*]   Minstrel

              [*]     Minstrel 802.11n support

                    Default rate control algorithm (Minstrel)  --->

              [ ]   Enable mac80211 mesh networking (pre-802.11s) support

              [ ]   Select mac80211 debugging features  --->


Device Drivers  --->

       Generic Driver Options  --->

              (/sbin/hotplug) path to uevent helper

              [ ] Maintain a devtmpfs filesystem to mount at /dev

              [ ] Select only drivers that don't need compile-time external firmware

              [ ] Prevent firmware from being built

              -*- Userspace firmware loading support

              [*]   Include in-kernel firmware blobs in kernel binary

              ()    External firmware blobs to build into the kernel binary

[*] Network device support  --->

          [*]   Wireless LAN  --->

             <*>   Ralink driver support  --->

                   --- Ralink driver support

                   < >   Ralink rt2500 (USB) support

                   < >   Ralink rt2501/rt73 (USB) support

                   <*>   Ralink rt27xx/rt28xx/rt30xx (USB) support

                   [ ]    rt2800usb - Include support for rt33xx devices

                   [ ]    rt2800usb - Include support for rt35xx devices (EXPERIMENTAL)

                   [ ]    rt2800usb - Include support for rt53xx devices (EXPERIMENTAL)

                   [ ]    rt2800usb - Include support for unknown (USB) devices

                   [*]   Ralink debug output


二、无线网络配置工具Wireless tools和Wpa_supplicant以及Openssl移植 

目前可以使用wireless-toolswpa_supplicant工具来配置无线网络。但要注意对无线网络的配置是全局性的,而非针对具体的接口。

wpa_supplicant是一个较好的选择,但缺点是它不支持所有的驱动。另外,wpa_supplicant目前只能连接到那些你已经配置好ESSID的无线网络。而wireless-tools支持几乎所有的无线网卡和驱动,但它不能连接到那些只支持WPAAP

1、wireless tools移植

wireless_tools.29.tar.gz 
下载地址:http://download.csdn.net/detail/u010944778/8916883

解压:

#tar zxvf wireless_tools.29.tar.gz

#cdwireless_tools.29

 

修改Makefile

CC = /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc

AR = /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-ar

RANLIB = /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-ranlib

 

编译:

#make

拷贝:

将生成的命令工具:iwlistiwconfigiwprivlibiw.so.29 等拷贝到目标板上,路径为:分别把他们放到开发板的/bin/lib目录下,并赋予权限

chmod 777 iw*libiw.so.29



2、openssl移植

======================================================================================================

wifi网络大多都是WPA加密,wpa_supplicant除了配置无线网络的需求之外,更主要是用来支持WEP,WPA/WPA2和WAPI无线协议和加密认证的。而要加密就要使用到相关的加密算法,常用的密钥等,所以要先移植Openssl工具再移植wpa-supplicant。因为后面编译wpa_supplicant要依赖openssl中的lib和include

======================================================================================================

下载openssl驱动源码 
Openssl-0.9.8i 
下载地址:http://download.csdn.net/detail/u010944778/8918317


解压后创建指定的安装目录

[hjiaming@centos6 openssl-0.9.8i]$ mkdir install    //编译的文件放在这个文件夹中


修改Makefile
 29 INSTALLTOP=/home/hjiaming/wifi/openssl-0.9.8i/install //指定ssl的安装目录
 32 OPENSSLDIR=/home/hjiaming/wifi/openssl-0.9.8i/install 
 62 CC= /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc
 69 AR=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-ar $(ARFLAGS) r
 70 RANLIB=  /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-ranlib
 
 

编译

# sudo make & makeinstall

并拷贝libcrypto.a  libssl.a到开发板的/lib

 3、下载wpa_supplicant源码

wpa_supplicant-0.7.3.tar.gz

下载地址:http://download.csdn.net/detail/u010944778/8918325

解压:tar -xzf wpa-supplicant-0.7.3.tar.gz

修改.config配置文件:

[hjiaming@centos6 wpa_supplicant-0.7.3]$ ls
COPYING  patches  README  src  wpa_supplicant
[hjiaming@centos6 wpa_supplicant-0.7.3]$ cd wpa_supplicant/
[hjiaming@centos6 wpa_supplicant-0.7.3] cp defconfig .config
[hjiaming@centos6 wpa_supplicant-0.7.3]vim .config
修改如下:
 26 #CC=mipsel-uclibc-gcc
 27 CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -L/home/hjiaming/fl2440/wifi/openssl-0.9.8i/install/lib
 28 CFLAGS += -I/home/hjiaming/fl2440/wifi/openssl-0.9.8i/install/include
 29 #CPPFLAGS += -I../src/include -I../../src/router/openssl/include                                       
 30 LIBS += -L/home/hjiaming/fl2440/wifi/openssl-0.9.8i/install/lib

编译:

make

然后将 wpa_cli wpa_supplicant wpa_passphrase 拷贝到开发板的/ bin 目录,修改执行权限。


三、启动RT3070无线模块连接路由器

使用wpa_passphrase创建wpa_supplicant的配置文件

使用加密后的密码,不用明文。当然使用明文密码也可以连接到无线路由器:

以下命令是在开发板上进行的操作:

>/apps/wireless # wpa_passphrase CMCC 9b4019b401 >> wpa_supplicant.conf

/apps/wireless # cat wpa_supplicant.conf

修改wpa_supplicant.conf配置文件,添加密码加密算法和使用明文密码:

ctrl_interface=/var/run/wpa_supplicant
network={
ssid="Router_LingYun" //路由器名字
key_mgmt=WPA-PSK    //采用WPA-PSK加密模式,一定要和所要连的wifi一致
proto=WPA2
pairwise=TKIP CCMP
group=TKIP CCMP
psk="lingyun-emb"  //...............
#psk=20a17fe2e0482c0db4e4dcf6c4494cebbd88ae4f166015115ca83ce9022b8cd2

使能RT3070无线网卡模块:

通常情况下,load firmware的动作是通过用户空间的hotplug handler,也就是/proc/sys/kernel/hotplug里设定的执行档,来完成。root_qtopia默认会在/etc/init.d/rcS里将/proc/sys/kernel/hotplug设定为/sbin/mdev,即busyboxmdev模块。它在收到来自内核的请求加载rt3070.bin这个firmware消息后,会从/lib/firmware目录下去找rt3070.bin,如果能找到就加载。

Rt2870.bin

下载地址:http://download.csdn.net/detail/u010944778/8918841

RT3070.bin固件下载到开发板的/lib/firmware目录下:

lib >: mkdir firmware
lib >: cd firmware/</span>
>/lib/firmware 
>: ls
rt2870.bin

 

加载完RT3070.bin固件后使能无线网卡

>: ifconfig wlan0 up
第一次使能无线网卡的时候,只是使能了它,但是这张网卡的参数还未配置,还没有IP,所以现在还是不能上网,要配置网卡参数、连接路由器之后才能上网!

启动RT3070并配置RT3070无线网卡参数 

利用wpa_supplicant工具来配置

>wpa_supplicant-B -d -Dwext -iwlan0-c/apps/wireless/Sta/wpa_supplicant.conf

-d :增加调试信息

-B:后台守护进程

-c:指定配置文件

-Dwext:wext为驱动名称

-iwlan0 :wlan0为网络接口名称

配置无线网卡IP和子网掩码:

>: ifconfig wlan0 192.168.1.144 broadcast 192.168.1.1 netmask 255.255.255.0 up
测试:

先关闭eth0

~>: ifconfig eth0 down

如果上外网,就要给开发板添加DNS域名解析服务!还有添加默认网关!

在开发板的/etc/创建一个resolv.conf的文件,因为在内核启动的时候内核会在resolv.conf文件中找dns

 ~>: vi resolv.conf 

#search localdomain

nameserver 4.2.2.2 
nameserver 8.8.8.8

添加网关

route add default gw 192.168.1.1

>: ping www.baidu.com
PING www.baidu.com (119.75.218.70) 56(84) bytes of data.
64 bytes from 119.75.218.70: icmp_seq=1 ttl=53 time=23.0 ms
64 bytes from 119.75.218.70: icmp_seq=2 ttl=53 time=25.7 ms
64 bytes from 119.75.218.70: icmp_seq=3 ttl=53 time=22.1 ms
64 bytes from 119.75.218.70: icmp_seq=4 ttl=53 time=22.0 ms
64 bytes from 119.75.218.70: icmp_seq=5 ttl=53 time=21.9 ms
64 bytes from 119.75.218.70: icmp_seq=6 ttl=53 time=22.2 ms








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值