fl2440工作于STA模式

板子为fl2440,无线网卡为rt3070,内核为linux3.0。

基站模式(STA):任何无线设备驱动都可以工作在该模式下,这种模式是默认的模式在该模式下工作的网卡必须连接到一个在AP模式下工作的网卡。

由于linux-3.0开始,RT3070STA驱动已经作为正式版本加入了Linux内核源码中,所以我们可直接配置内核,将驱动集成到内核中。

1:添加内核支持(网络支持,驱动支持或网络设备支持)
[*] Networking support  --->
      -*-   Wireless  --->
        <*>   cfg80211 - wireless configuration API  (必选)                                         
                 [ ]     nl80211 testmode command                                                     
                 [ ]     enable developer warnings                                                    
                 [ ]     cfg80211
regulatory debugging                                                
                 [*]     enable powersave by default       (必选)                                   
                 [ ]     cfg80211 DebugFS entries                                                     
                 [*]     cfg80211 wireless extensions compatibility                                   
                 [*]   Wireless extensions sysfs files                                                
                 {*}   Common routines for IEEE802.11 drivers     (必选)                            
                 [ ]   lib80211 debugging messages                                                    
                 <*>   Generic IEEE 802.11 Networking Stack (mac80211)  (必选)                      
                       Default rate control algorithm (Minstrel)  --->                                
                 [ ]   Enable mac80211 mesh networking (pre-802.11s) support                          
                 [ ]   Export mac80211 internals in DebugFS                                           
                 [ ]   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                        
                 [ ] Driver Core verbose debug messages                                               
                 [ ] Managed device resources verbose debug messages 
          [*] 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


2:插上rt2070无线网卡,重新加载内核

当插上无线网卡后,显示
usb 1-1.1: new full speed USB device number 3 using s3c2410-ohci
phy0 -> rt2x00_set_chip: Info - Chipset detected - rt: 3070, rf: 0005, rev: 0201.
表示已成功连接无线网卡。(因为内核支持了热插拔,故插上即可用)
用命令可看到:
>: ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 48:5D:60:40:32:F6  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)


3:使能网卡

>: ifconfig wlan0 up
    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
根据提示可知道,系统缺少rt2870.bin这个固件(固件是指设备内部保存的设备“驱动程序”,通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行动作)


4:获取固件,重新使能网卡

通过虚拟机下载该固件:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git
再用开发板自带的tftp功能下载放到/lib/firmware路径下
>: tftp -gr rt2870.bin 192.168.1.30
  rt2870.bin           100% |*******************************|  8192   0:00:00 ETA
此时再使能无线网卡
>: ifconfig wlan0 up
phy0 -> rt2x00lib_request_firmware: Info - Loading firmware file 'rt2870.bin'.
phy0 -> rt2x00lib_request_firmware: Info - Firmware detected - version: 0.22.
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.
表示网卡使能成功。


5:获取工具

目前可以使用wireless-toolswpa_supplicant工具来配置无线网络。

wpa_supplicant目前只能连接到那些你已经配置好ESSID的无线网络,且不支持所有的驱动。而wireless-tools支持几乎所有的无线网卡和驱动,但它不能连接到那些只支持WPAAP。

wireless_tool.29

下载wireless_tools.29.tar.gz这个压缩包来制作。
http://www.linuxfromscratch.org/blfs/view/svn/basicnet/wireless_tools.html
解压缩之后,进入文件内修改Makefile。
## Compiler to use (modify this for cross compile).
    CC =/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc(编译器)
## Other tools you need to modify for cross compile (static lib only).
    AR = /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-ar(打包工具,指定生成静态库还是动态库文件)
    RANLIB =/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-ranlib (更新库的符号索引表)
之后,make生成工具iwlist、iwconfig、iwpriv及动态库文件libiw.so.29,将工具放到开发板的/bin路径下。动态库放到/lib下,并修改权限使其可用chmod a+x iw* libiw.so.29。


由于wpa_supplicant依赖openssl库,所以这里我们得先交叉编译openssl

Openssl 是一个强大的安全套接字层密码库,囊括了密码算法,常用的密钥,证书封装管理和ssl协议,提供丰富的应用程序供测试和其他使用


openssl-0.9.8l

下载openssl源代码:http://download.csdn.net/detail/u010944778/8918317
解压缩后,进入文件修改Makefile相应行。
INSTALLTOP= /home/zhangl/openssl-0.9.8l/install
OPENSSLDIR= /home/zhangl/openssl-0.9.8l/install
CC= /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc
AR= /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-ar $(ARFLAGS) r
RANLIB= /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-ranlib
完成后,make,之后make install。之后在install/lib下,有两个动态库libcrypto.a和libssl.a,将其下到开发板的/lib下。


wpa_supplicant-0.7.3

下载wpa_supplicant源码
解压缩后,进入文件wpa_supplicant。
将defconfig重命名为.config
cp defconfig .config
打开.config
修改
CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -L/home/zhangl/openssl-0.9.8i/install/lib
CFLAGS += -l /home/zhangl/openssl-0.9.8i/install/include
LIBS += -L /home/zhangl/openssl-0.9.8i/install/lib
保存后make,便生成wpa_passphrase,wpa_supplicant,wpa_cli这些工具,将其下到开发板的bin路径下。

6:使用wpa_passphrase创建wpa_supplicant的配置文件。
我们可以直接用wpa_passphrase生成配置文件。
wpa_passphrase name password >> wpa_supplicant.conf(name为要连接的wifi名字,password为wifi密码)
此时就初步生成配置文件,还要修改内容。
>: vi wpa_supplicant.conf
# WPA-PSK/TKIP
#wpa_supplicant -Dwext -iwlan0 -c/apps/etc/wireless/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
network={
        ssid="HZHZ"
        key_mgmt=WPA-PSK  //加密模式,与wifi的保持一致
        proto=WPA
        pairwise=TKIP   CCMP
        psk="123456"  //也可以对密码进行加密
#psk=81a8c46543f339bbcd0381b4d7a13673d4e02f67108d978fb545435a15d95ea5
        }


7:运行wpa_supplicant来连接无线路由器。
-D选项指明采用采用的驱动程序接口,这里是 wext,-i 选项指明里无线网接口。-c 指明使用的配置文件,&后台运行
>: wpa_supplicant -D wext -i wlan0 -c wpa_supplicant.conf &
>: Trying to associate with d4:ee:07:22:6b:5c (SSID='HZHZ' freq=2417 MHz)
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 2 - CWmin: 6, CWmax: 10, Aifs: 3, TXop: 0.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 3 - CWmin: 4, CWmax: 10, Aifs: 7, TXop: 0.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 1 - CWmin: 3, CWmax: 4, Aifs: 2, TXop: 94.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 0 - CWmin: 2, CWmax: 3, Aifs: 2, TXop: 47.
Associated with d4:ee:07:22:6b:5c
WPA: Key negotiation completed with d4:ee:07:22:6b:5c [PTK=CCMP GTK=CCMP]
CTRL-EVENT-CONNECTED - Connection to d4:ee:07:22:6b:5c completed (auth) [id=0 id_str=]
出现上述提示,表示连接成功。
>: iwconfig
lo        no wireless extensions.
eth0      no wireless extensions.
wlan0     IEEE 802.11bgn  ESSID:"HZHZ"  
          Mode:Managed  Frequency:2.417 GHz  Access Point: D4:EE:07:22:6B:5C   
          Bit Rate=90 Mb/s   Tx-Power=20 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:on
          Link Quality=57/70  Signal level=-53 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
手动配置ip,广播地址和子网掩码

>:ifconfig wlan0 192.168.1.244 broatcast 192.168.1.1 netmask 255.255.255.0 up
此时可ping通局域网内的主机。若要上外网则要配置dns和默认网关。
在/etc下创建resolv.conf配置文件,内核启动时会从中读dns
>: vi resolv.conf 
#search localdomain
nameserver 4.2.2.2
nameserver 8.8.8.8
>:source resolv.conf(使能配置文件)
添加默认网关
>:route add default gw 192.168.1.1
此时可上外网。


8:动态获取ip

如果想要自动获取ip,则需要修改内核和选中制作文件系统的busybox的menuconfig中的必要项。
内核:
Networking support---> 
    Networking options ---> 
<*> Packet socket 
[*]     IP: DHCP support 
[*] Network packet filtering framework(Netfilter)  --->(子选项可不选)

重新编译,下载。
busybox:
Networking Utilities  --->
[*] udhcp server (udhcpd)
[*] udhcp client (udhcpc)
udhcpd就是终端设备作为DHCP服务器 ;udhcpc就是终端设备作为DHCP客户端
重新make,并make install,然后在busybox的examles/udhcp目录下将simple.script拷贝到开发板的/usr/share/udhcpc/下,重命名为default.script,更改权限chmod a+x default.script。
在连接wifi成功后,可用udhcpc -i wlan0动态获取ip及dns,可直接上外网。(建议关闭本地网卡,以免冲突)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值