fl2440模块学习——添加RT3070实现无线上网

最近学习了在fl2440开发板上添加了RT3070网卡,并通过连接路由器上网,在此记录一下。

首先预备一下一些有关的网络知识:
1、计算机网络->无线网络的几种常见标准:
IEEE802.11a:使用5GHz频段,传输速度54Mbps,与802.11b不兼容;
IEEE 802.11b:使用2.4GHz频段,传输速度11Mbps;
IEEE802.11g:使用2.4GHz频段,传输速度主要有54Mbps、108Mbps,可向下兼容802.11b;
IEEE802.11n草案:使用2.4GHz频段,传输速度可达300Mbps,标准尚为草案,但产品已层出不穷;
目前IEEE802.11b最常用,但IEEE802.11g更具下一代标准的实力,802.11n也在快速发展中。
IEEE 802.11是如今无线局域网通用的标准。

2、WiFi无线网络的几种认证与加密方式:
Open System:完全不认证也不加密,任何人都可以连到无线基地台使用网络。

WEP (Wired Equivalent Privacy) 有线等效加密:最基本的加密技术,手机用户、笔记型计算机与无线网络的Access Point拥有相同的网络密钥,才能解读互相传递的数据。密钥分为64bits及128bits两种,最多可设定四组不同的密钥。当用户端进入WLAN前必须输入正确的密钥才能进行连接。

WPA (Wi-Fi Protected Access) 商务宝采用的加密方式:由Wi-Fi Alliance (http://www.wi-fi.com/)所提出的无线安全标准,有分成家用的WPA-PSK (Pre-Shared Key)与企业用的WPA-Enterprise版本。

WPA2:WPA的加强版,也就是IEEE 802.11i无线网络标准。同样有家用的PSK版本与企业的IEEE 802.1x版本。WPA2与WPA的差别在于,它使用更安全的加密技术AES (Advanced Encryption Standard),因此比WPA更难被破解、更安全。

MAC ACL (Access Control List):MAC ACL只能用于认证而不能用于加密。在无线基地台输入允许被连入的无线网卡MAC地址,不在此清单的无线网卡无法连入无线基地台。

参考:http://www.cnblogs.com/haitao-fan/archive/2012/07/11/2586430.html
http://blog.youkuaiyun.com/wang_kailiang/article/details/7708863

RT3070有两种工作模式:STA(station)模式和SoftAP(Access Point)模式。
在这先记录STA模式的学习过程,SoftAP模式将在下一次记录。

STA:即客户端模式。就是把你的开发板当作个笔记本电脑,然后用它连路由器来上网。

一、内核配置

要使内核支持上网,需要配置如下:

[*] Networking support  --->  
    <*>   cfg80211 - wireless configuration API
    [*]     enable powersave by default
    [*]     cfg80211 wireless extensions compatibility
    [*]   Wireless extensions sysfs files
    {*}   Common routines for IEEE802.11 drivers
    <*>   Generic IEEE 802.11 Networking Stack (mac80211) 
Device Drivers  --->
    [*]   Include in-kernel firmware blobs in kernel binary
    [*] Network device support  --->
        [*]   Wireless LAN  --->
            <*>   Ralink driver support  --->
            <*>   Ralink rt27xx/rt28xx/rt30xx (USB) support
            [*]   Ralink debug output

确保这些选项是选上的。
make 编译。

二、下载3070固件并使能芯片

插入RT3070无线网卡,把编译的新内核烧录到开发板。可看到内核打印的信息:
这里写图片描述

查看usb:
>: lsusb
Bus 001 Device 001: ID 1d6b:0001
Bus 001 Device 002: ID 05e3:0606
Bus 001 Device 003: ID 148f:3070

下载3070固件,放到开发板/lib/firmware下:

>: ls lib/firmware/
rt2870.bin

该固件可以到这里下载:https://coding.net/u/sfantree/p/self_use_OSS/git/raw/master/source/rt2870.bin

开启无线网卡:ifconfig wlan0 up可看到:

>: ifconfig wlan0 up
phy0 -> rt2x00lib_request_firmware: Info - Loading firmware file 'rt2870.bin'.
phy0 -> rt2x00lib_request_firmware: Info - Firmware detected - version: 0.29.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 0 - CWmin: 3, CWmax: 4, Aifs: 2, TXop: 102.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 1 - CWmin: 4, CWmax: 5, Aifs: 2, TXop: 188.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 2 - CWmin: 5, CWmax: 10, Aifs: 3, TXop: 0.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 3 - CWmin: 5, CWmax: 10, Aifs: 7, TXop: 0.
>: 

若没有rt2870.bin,则会提示如下错误:

phy0 -> rt2x00lib_request_firmware: Info - Loading firmware file ‘rt2870.bin’. 
phy0 -> rt2x00lib_request_firmware: Error - Failed to request Firmware. 
ifconfig: SIOCSIFFLAGS: No such file or directory

ifconfig查看:
这里写图片描述

三、wireless tools、wpa_supplicant和openssl移植

Wireless tools for Linux是一个Linux命令行工具包,用来设置支持Linux Wireless Extension的无线设备。
wpa_supplicant主要是用来支持WEP,WPA/WPA2和WAPI无线协议和加密认证。
OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

这里是在PC上完成:
1.1 下载wireless_tools.29.tar.gz
http://download.youkuaiyun.com/detail/u010944778/8916883
1.2解压

[tangbin@localhost wifi]$ tar zxvf wireless_tools.29.tar.gz
[tangbin@localhost wifi]$ cd wireless_tools.29

1.3修改Makefile
这里写图片描述
1.4make编译后
这里写图片描述
1.5将生成的命令工具:ifrename、iwevent、wgetid、iwspy、iwlist、iwconfig、iwpriv,libiw.so.29拷贝到开发板的/bin下,并分别赋予权限chmod 777 iw* libiw.so.29。

2.1下载openssl
https://coding.net/u/sfantree/p/self_use_OSS/git/raw/master/source/openssl-1.0.0s.tar.gz
2.2解压、并指定安装目录
[tangbin@localhost wifi]$tar zxvf openssl-1.0.0s.tar.gz
[tangbin@localhost openssl-1.0.0s]$ mkdir install
2.3修改Makefile
这里写图片描述

 62 CC= /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc
 63 CFLAG= -O
 64 DEPFLAG= -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_MD2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_STORE
 65 PEX_LIBS=
 66 EX_LIBS=
 67 EXE_EXT=
 68 ARFLAGS=
 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

2.4编译
[tangbin@localhost openssl-1.0.0s]$ sudo make && sudo make install
2.5拷贝libcrypto.a ; libssl.a到开发板的/lib下
这里写图片描述

3.1下载wpa_supplicant源码
https://coding.net/u/sfantree/p/self_use_OSS/git/raw/master/source/wpa_supplicant-0.7.3.tar.gz
3.2解压、并修改.config配置文件

[tangbin@localhost wpa_supplicant-0.7.3]$ ls
COPYING  patches  README  src  wpa_supplicant
[tangbin@localhost wpa_supplicant-0.7.3]$ cd wpa_supplicant/
[tangbin@localhost wpa_supplicant-0.7.3]$ cp defconfig .config
[tangbin@localhost wpa_supplicant-0.7.3]$ vim .config
 27 CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -L /home/tangbin/fl2440/wifi/openssl-1.0.0s/install/lib
 28 #CC=/opt/brcm/hndtools-mipsel-uclibc/bin/mipsel-uclibc-gcc
 29 #CFLAGS += -Os
 30 CFLAGS += -I /home/tangbin/fl2440/wifi/openssl-1.0.0s/install/include
 31 #CPPFLAGS += -I../src/include -I../../src/router/openssl/include
 32 LIBS += -L /home/tangbin/fl2440/wifi/openssl-1.0.0s/install/lib
 33 #LIBS += -L/opt/brcm/hndtools-mipsel-uclibc-0.9.19/lib -lssl

3.3 make编译
这里写图片描述
wpa_cli,wpa_supplicant,wpa_passphrase拷贝到开发板的/bin目录下。并给予权限 chmod 777:wpa_cli,wpa_supplicant,wpa_passphrase

四、开发板配置以及操作

在开发板上:

>: ls etc/wpa_supplicant.conf 
etc/wpa_supplicant.conf
>: cd /etc
输入命令:wpa_passphrase ssid psk >> wpa_supplicant.conf  (ssid就是你wifi的名字 psk就是密码)

比如我的:wpa_passphrase Router_Linyun_Master lingyun_emb >> wpa_supplicant.conf

修改配置文件:
>: vi /etc/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant
network={
        ssid="Router_LingYun_Master"
        key_mgmt=WPA-PSK
        proto=WPA2
        pairwise=TKIP CCMP
        group=TKIP CCMP
        psk="lingyun_emb"
        #psk=62ec468ff29932a1ceb01271b2176ca71e6a1b360f79cdbffd1344221fd46a43
}

接下来连接路由器,启用wpa_supplicant:
输入命令:wpa_supplicant -B -d -Dwext -iwlan0 -c /etc/wpa_supplicant.conf
这里写图片描述

网络设置:
未开启DHCP,所以得手动分配:
配置IP:ifconfig wlan0 192.168.0.50
配置默认网关:route add default gw 192.168.0.1
配置DNS:echo "nameserver 8.8.8.8" > /etc/resolv.conf

ping测试:

>: ping www.baidu.com
PING www.baidu.com (180.97.33.108): 56 data bytes
64 bytes from 180.97.33.108: seq=0 ttl=54 time=20.357 ms
64 bytes from 180.97.33.108: seq=1 ttl=54 time=59.386 ms
64 bytes from 180.97.33.108: seq=2 ttl=54 time=59.473 ms
64 bytes from 180.97.33.108: seq=3 ttl=54 time=59.350 ms
64 bytes from 180.97.33.108: seq=4 ttl=54 time=59.029 ms

--- www.baidu.com ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 20.357/51.519/59.473 ms

开启DHCP:
busybox已经集成了DHCP的客户端和服务端,make编译后,我们只要把Busybox的examples/udhcp/simple.script 拷贝到开发板/usr/share/udhcpc/下,并重命名为default.script,然后更改文件default.script的权限。
>: chmod 777 default.script

动态获取IP:

>: udhcpc -i wlan0
udhcpc (v1.20.2) started
Setting IP address 0.0.0.0 on wlan0
Sending discover...
Sending select for 192.168.0.157...
Lease of 192.168.0.157 obtained, lease time 1800
Setting IP address 192.168.0.157 on wlan0
Deleting routers
route: SIOCDELRT: No such process
Adding router 192.168.0.1
Recreating /etc/resolv.conf
 Adding DNS server 192.168.0.1
 Adding DNS server 0.0.0.0

udhcp会以守护进程方式在后台运行。

ping测试:

>: ping www.qq.com
PING www.qq.com (14.17.32.211): 56 data bytes
64 bytes from 14.17.32.211: seq=0 ttl=53 time=22.564 ms
64 bytes from 14.17.32.211: seq=1 ttl=53 time=63.429 ms
64 bytes from 14.17.32.211: seq=2 ttl=53 time=65.172 ms
64 bytes from 14.17.32.211: seq=3 ttl=53 time=63.515 ms

--- www.qq.com ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 22.564/53.670/65.172 ms
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值