现在usb很流行,热拔插,方便携带,传输速度快等优点,刚好手上有一块买电视送的usb无线网卡,壳不知道扔哪里去了,就不知道型号,但是看到芯片(就是usb网卡板子上最大的那块芯片)写着RTL8192SU,于是就上网找找有没有移植的资料,找到了http://blog.sina.com.cn/s/blog_4c796ed20100hpwq.html的资料,也是移植RTL8192SU,于是就跟着做了,但是第一步取得的linux驱动内容就不对了,我也不知道他是什么版本的,我拿的是RTL819xSU_usb_linux_v2.6.6.0.20120405版本的,没办法,只要自己再查查资料,发现可以从Makefile下手,于是打开device目录下的Makefile。发现里面内容还是挺简单易懂的,不吹了,步骤开始
1.去官网下载linux版本的驱动:http://218.210.127.131/downloads/downloadsView.aspx?Langid=1&PFid=48&Level=5&Conn=4&ProdID=231&DownTypeID=3&GetDown=false&Downloads=true#2292,下载us2版本的
2.解压放到ubuntu桌面,进入device目录再次解压,进入
3.打开Makefile,发现里面有段这个
CONFIG_PLATFORM_I386_PC = y
CONFIG_PLATFORM_ANDROID_X86 = n
CONFIG_PLATFORM_ARM_S3C = n
CONFIG_PLATFORM_ARM_PXA = n
CONFIG_PLATFORM_MIPS_RMI = n
CONFIG_PLATFORM_RTK_DMP = n
CONFIG_PLATFORM_MIPS_PLM = n
CONFIG_PLATFORM_RTD2880B = n
CONFIG_PLATFORM_MSTAR389 = n
CONFIG_PLATFORM_ARM_TCC8900 = n
妈呀,一看就明白了,刚好里面有ARM_S3C,赶紧把n换成y,最上边的I386_PC改成n
接着找到
ifeq ($(CONFIG_PLATFORM_ARM_S3C), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := arm-linux-
KVER := 2.6.24.7_$(ARCH)
KSRC := /usr/src/kernels/linux-$(KVER)
Endif
主要改
ifeq ($(CONFIG_PLATFORM_ARM_S3C), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := arm-linux-#CROSS_COMPILE = 交叉编译工具链
KVER := linux-3.0.1#2.6.24.7_$(ARCH)
KSRC := /home/nests/Desktop/linux-3.0.1#/usr/src/kernels/linux-$(KVER)#LINUX_SRC = 你内核文件的路径
Endif
4.改好后make,得到8192su.ko就是我们要的驱动模块了,挺大的。5点多mb
arm-linux-strip -S 8192su.ko,可以简化文件,只剩几百k,原因应该是包含了大量调试信息(一定要大写S,内核才能检查得到)
5.拷到板子上,执行#insmod 8192su.ko ,
#ifconifg
仍然没有wlan0无线网卡,但是cat /proc/net/wireless
Inter-| sta-| Quality | Discarded packets | Missed | WE
face | tus | link level noise | nwid crypt frag retry misc | beacon | 22
wlan0: 0000 0. 0. 0. 0 0 0 0 0 0
6.先静态配置wlan0的ip
#ifconfig wlan0 192.168.0.231
这时候usb网卡led灯亮起来,大概是驱动成功了吧
通过ifconfig后比先前看到的多出wlan0,可见目前已经将wlan0激活。但仍需要要一些应以偶那个设置方能访问网络。
8.至此网卡驱动移植成功。但是如果需要让网卡连接入目前常见的WPA加密的网络,还需要移植wpa_supplicant工具。
另外还有一个名为wireless_tools的辅助工具,可以用它来检索在网卡所在的环境中存在的无线网络,如果对于要连接入的无线网络的ssid和相关信息已经清楚,可以不用移植,不过这个工具的移植很简单。
9.在驱动包里面就自带了wireless_tools文件夹,里面就是压缩包,直接解压修改Makefile
主要修改
ifndef PREFIX
PREFIX = /usr/local/arm/4.3.2#/usr/local
endif
PREFIX = /usr/local/wirelesstool
## Compiler to use (modify this for cross compile).
CC = /usr/local/arm/4.3.2/bin/arm-linux-gcc#arm-linux-gcc#gcc
## Other tools you need to modify for cross compile (static lib only).
AR = /usr/local/arm/4.3.2/bin/arm-linux-ar#ar
RANLIB = /usr/local/arm/4.3.2/bin/arm-linux-ranlib#ranlib
10.#make
11.#make install
在/usr/local/wirelesstool/lib目录下找到libiw.so.29,下载到开发板的/lib/目录下;/usr/local/wirelesstool/sbin目录下找到iwpriv、iwconfig、iwlist, iwevent, iwspy等命令,下载到开发板的/usr/sbin目录下。这时就应该可以使用这些命令通过网卡搜索到环境中的无线网络。
最后有几条wireless命令: iwconfig ->查看目前连接到系统的wireless网卡信息;
设置essid没任何问题, 但设置key却不行! google一下, 有网友说是 iwconfig 工具不支
持PSK加密方式, 无奈只能用别的了.
#iwlist wlan0 scanning //扫描可用的网络
#iwconfig wlan0 essid “扫描到的网络名”
#iwconfig wlan0 key “密码”
现在只能做到这,不加密方式活着ape方式设密码
9
移植wpa_supplicant
13.一开始遇到些小麻烦,要有openssl库,libnl1.1这个是安全认证相关的东西,先弄这个吧
#apt-get install libnl
#apt-get source libnl//安装包文件,安装到当前目录下
#cd libnl-1.1/
#./configure
#make CC=arm-linux-gcc
将/usr/local/arm/libnl1.1/lib下所有文件拷贝至开发板的/lib目录下,确保hostapd在开发板上运行,能够正确找到libnl库的位置
#sudo apt-get install openssl
#sudo apt-get install libssl-dev
sudo apt-get install libssl0.9.8
Ubuntu 下安装 GTK+ 开发库
sudo apt-get install libgtk2.0-dev
14.然后进入到wpa_supplicant的目录,修改配置文件和Makefile
主要修改
ifndef CC
CC=arm-linux-gcc#gcc
Endif
将wpa_supplicant和配置文件wpa_supplicant.conf下载到开发板中,wpa_supplicant替换掉原本开发板/usr/sbin/目录下的wpa_supplicant,wpa_supplicant.conf放在/etc目录下,对wpa_supplicant.conf文件进行编辑:
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="idart-wlan311"
scan_ssid=1
key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
pairwise=TKIP CCMP
group=CCMP TKIP WEP104 WEP40
psk="XXXXXXXX"
}
其中的psk为无线网的密码
然后把文件末尾提供的一些example全部删除,否则在使用wpa_supplicant时会报一些类型无法识别的错误。
最后进行测试,测试之前要关闭有线网卡eth0,原因是如果不关闭的话在之后添加默认路由时会被设置为有线网卡的默认路由,这个应该有别的解决方法,不过我没有仔细去查。 ifconfig eth0 down
ifconfig ra0 up
ifconfig ra0 192.168.1.248 netmask255.255.255.0
route add default gw 192.168.1.1
wpa_supplicant -B -ira0 -c/etc/wpa_supplicant.conf –Dwext