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后系统打印出如下信息:
此时,系统会自动加载rt2800usb的驱动模块,输入lsmod命令可查看:
注:如果系统没有自动加载,则可以输入modprobert2800usb命令进行手动加载。
并且生成了wlan0网口,输入ifconfig -a可查看:
驱动模块加载成功后,需要使用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,笔者的路由器IP为192.168.0.1):
#routeadd default gw 192.168.0.1
设置wlan0的IP(注:请根据路由器实际情况设置,需与路由器IP在同一网段):
#ifconfigwlan0 192.168.0.222 up
c、连接无线wifi
#wpa_supplicant-iwlan0 -c /etc/wpa_supplicant.conf -B
d、查看连接状况:
#iwconfig
可见wlan0已经连接上了账号为‘artcor’的wifi。
e、测试,ping路由IP:
# ping192.168.0.1 -I wlan0
可看到顺利ping通路由IP,至此,EP-N8531可以正常使用。
4.3无线网卡使用注意事项
问题1:如何卸载驱动模块
EVB-T335系统会自动加载usb-wifi所需的驱动模块,如需卸载rt2800usb模块,可使用如下命令:
#modporbe–rt2800usb
若要手动加载驱动模块,由依赖模块较多,请尽量不要使用insmod命令,推荐使用modprobe 命令,该命令可自动加载该模块所需的其他依赖模块。
问题2:可以ping通路由但是ping不通外网
解决办法:
routeadd default gw 192.168.0.1