盈鹏飞嵌入式-EVB-T335 USB无线网卡移植和使用手册

时间:2022-07-04 18:58:26

1.概述

       本文描述如何在EVB-T335开发板上移植无线网卡驱动及其使用。关于EVB-T335支持哪些usb-wifi设备,取决于该设备使用哪种类型芯片组,每种芯片组都有与之对应的linux驱动,而在EVB-T335的3.14.43内核源码中,已经支持了许多常用的芯片组驱动,具体请用户在menuconfig中自行查看。本文以使用EDUP公司的EP-N8531、TP-LINK公司的TL-WN823N为例,说明usb-wifi移植和使用方法。其中,EP-N8531使用的芯片组分别为RT5370,使用的驱动为rt2800usb;TL-WN823N使用的芯片组为RTL8192CU,驱动为rtl8192cu。

移植和使用步骤如下:

2.内核驱动模块配置和编译

a、配置内核支持cfg80211(802.11n协议)

[*]Networking support  --->

              -*-   Wireless --->

                        --- Wireless                                                 

                         <*>  cfg80211 - wireless configuration API                                      

                         [*]     enable powersave by default                                             

                         [*]     cfg80211 wireless extensionscompatibility                                          

                         <*>   Generic IEEE 802.11 Networking Stack(mac80211)                   

                         [*]   Minstrel                                                                        

                         [*]     Minstrel 802.11n support

b、配置内核支持RTL8192CU(本文为将驱动编译成模块的形式,如需编译进内核,请自行修改)

DeviceDrivers  --->

       [*] Network device support  --->

                     [*]  Wireless LAN  --->

                            <M>   Realtek rtlwifi family of devices  --->

                                   <M>   Realtek RTL8192CU/RTL8188CU USB WirelessNetwork Adapter

c、配置内核支持RT5370(本文为将驱动编译成模块的形式,如需编译进内核,请自行修改)

DeviceDrivers  --->

       [*] Network device support  --->

                     [*]  Wireless LAN  --->

                            <*>   Ralink driver support  --->

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

                                         [*]    rt2800usb - Include support for rt53xxdevices (EXPERIMENTAL) 

 

配置完成后,保存退出。然后重新编译内核和内核模块(如已将驱动编译进内核,则无需编译内核模块):

编译内核:

$ make ARCH=armCROSS_COMPILE=arm-linux-gnueabihf- LOADADDR=0x80008000 uImage

编译内核模块:

$ make ARCH=armCROSS_COMPILE=arm-linux-gnueabihf- modules

安装内核模块:

$ make ARCH=armINSTALL_MOD_PATH=<path to root of file system>modules_install

path to root of filesystem为模块安装的目录,例如/home/alex/evbt335/kernel/modules为笔者的安装路径,相应命令如下所示:

$ make ARCH=armINSTALL_MOD_PATH=/home/alex/evbt335/kernel/modulesmodules_install

将编译好的内核烧录到开发板,并将安装好的驱动模块目录/home/alex/evbt335/kernel/modules/lib/modules

复制到开发板的/lib/目录下。

3.下载固件

每个usb-wifi设备驱动都需要相应的固件,其中,RT5370需要的固件为rt2870.bin;RTL8192CU所需固件为rtl8192cufw_TMSC.bin和rtl8192cufw.bin ,其他wifi模块可根据实际模块加载过程中打印输出为准;(在启用设备时,系统会打印出需要的固件,下文会讲到)

Linux系统所需的固件包可在linux系统下通过如下命令下载:

$ gitclone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git

下载后可在该固件包里找到rt2870.bin、rtl8192cufw_TMSC.bin和rtl8192cufw.bin文件。将rt2870.bin文件拷贝到EVB-T335的/lib/firmware/rtlwifi/目录下(使用EP-N8531的情况下),将rtl8192cufw_TMSC.bin 和rtl8192cufw.bin文件拷贝到EVB-T335的/lib/firmware/rtlwifi/(使用TL-WN823N的情况下)。(注:用户需根据实际情况将所需的固件拷贝到相应的目录下)。

4.usb-wifi的使用

经上述步骤将所需的内核和驱动模块以及固件程序烧录到EVB-T335,待系统启动后,将usb-wifi设备插入EVB-T335,系统会识别到设备并自动安装相应驱动模块。由于EP-N8531和TL-WN823N在EVB-T335上的使用方法一致,因此,接下来仅以EP-N8531为例进行使用说明。EP-N8531插入EVB-T335后系统打印出如下信息:

盈鹏飞嵌入式-EVB-T335 USB无线网卡移植和使用手册

此时,系统会自动加载rt2800usb的驱动模块,输入lsmod命令可查看:

盈鹏飞嵌入式-EVB-T335 USB无线网卡移植和使用手册

注:如果系统没有自动加载,则可以输入modprobert2800usb命令进行手动加载。

并且生成了wlan0网口,输入ifconfig -a可查看:

盈鹏飞嵌入式-EVB-T335 USB无线网卡移植和使用手册

驱动模块加载成功后,需要使用wpa_supplicant 工具连接wifi网络。具体使用步骤如下:

4.1创建wpa_supplicant.conf配置文件

在/etc/目录下创建wpa_supplicant.conf文件:

# WPA-PSK/TKIP

ctrl_interface=/var/run/wpa_supplicant

network={

     ssid="artcor"              //Wifi账号

     key_mgmt=WPA-PSK //请无论你是使用WPA-PSK,WPA2-PSK,都请在这里输入 WPA-PSK。这

在wpa_supplicant看来WPA-PSK,WPA2-PSK都是 WPA-PSK,改成WPA2-PSK,它会不认识。

      proto=WPA RSN     //一般这样写可以兼容WPA和WPA2 CCMP和TKIP

proto=RSN #Robust SecurityNetwork:强健安全网络,表示这个网络配

置比 WEP模式要更安全。

      pairwise=CCMPTKIP    //关键点,wpa_supplicant目前还不认AES的加密标准,因此即使你在

此输入AES也没有用,自行web到路由器上改成CCMP TKIP

     psk="82523090"      //Wifi密码 

4.2连接无线wifi

a、由于EVBT-335使用了双网络,为避免冲突,可以先关闭eth0和eth1:

#ifconfigeth0 down

#ifconfigeth1 down

b、设置默认路由网关(一般为路由器IP,笔者的路由器IP192.168.0.1):

#routeadd default gw 192.168.0.1

设置wlan0的IP(注:请根据路由器实际情况设置,需与路由器IP在同一网段)

#ifconfigwlan0 192.168.0.222 up

盈鹏飞嵌入式-EVB-T335 USB无线网卡移植和使用手册

c、连接无线wifi

#wpa_supplicant-iwlan0 -c /etc/wpa_supplicant.conf -B

盈鹏飞嵌入式-EVB-T335 USB无线网卡移植和使用手册

d、查看连接状况:

#iwconfig

盈鹏飞嵌入式-EVB-T335 USB无线网卡移植和使用手册

可见wlan0已经连接上了账号为‘artcor’的wifi。

e、测试,ping路由IP:

# ping192.168.0.1 -I wlan0

盈鹏飞嵌入式-EVB-T335 USB无线网卡移植和使用手册

可看到顺利ping通路由IP,至此,EP-N8531可以正常使用。

4.3无线网卡使用注意事项

问题1:如何卸载驱动模块

EVB-T335系统会自动加载usb-wifi所需的驱动模块,如需卸载rt2800usb模块,可使用如下命令:

#modporbe–rt2800usb

若要手动加载驱动模块,由依赖模块较多,请尽量不要使用insmod命令,推荐使用modprobe 命令,该命令可自动加载该模块所需的其他依赖模块。

问题2:可以ping通路由但是ping不通外网

盈鹏飞嵌入式-EVB-T335 USB无线网卡移植和使用手册盈鹏飞嵌入式-EVB-T335 USB无线网卡移植和使用手册

解决办法:

routeadd default gw 192.168.0.1