1 查看无线网卡的USB ID号 终端下输入lsusb:thinki@G31T-M2:~$ lsusbBus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hubBus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hubBus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hubBus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hubBus 001 Device 004: ID 0bda:8178 Realtek Semiconductor Corp. Bus 002 Device 002: ID 0e8f:0022 GreenAsia Inc. Bus 004 Device 002: ID 046d:c52f Logitech, Inc. Wireless Mouse M305红色粗体字即为USB网卡的ID号 2 根据USB ID号查找芯片组驱动 在google上搜索0bda 8178ID号,即可以发现该序列号对应的是Realtek的RTL8192CU芯片组,最后一个“U”指的即是USB接口。在Realtek官网上找到rtl8192cu驱动: http://152.104.125.41/downloads/downloadsView.aspx?Langid=1&PNid=48&PFid=48&Level=5&Conn=4&DownTypeID=3&GetDown=false&Downloads=true#RTL8192CU,不过悲剧的是realtek的网站貌似出了问题,怎么都下载不了,后来终于在一个第三方网站找到了驱动,链接送上: http://www.strapp.co.uk/downloads/RTL819xCU_USB_linux_v3.4.3_4369.20120622.zip,还有一个稍旧一点的驱动,也送上链接: http://www.gallot.be/resources/RTL819xCU_USB_linux_v3.4.2_3727.20120404.zip,这两个都可以。
3 安装驱动
realtek rtl8192cu的驱动包里面包含了很多安装说明,这一点还是很人性化的:
document
├── HowTo_enable_driver_to_support_WIFI_certification_test.pdf
├── HowTo_enable_the_power_saving_functionality.pdf
├── HowTo_support_more_VidPids.pdf
├── linux_dhcp_server_notes.txt
├── Quick_Start_Guide_for_Bridge.pdf
├── Quick_Start_Guide_for_SoftAP.pdf
├── Quick_Start_Guide_for_Station_Mode.pdf
├── RTK_Wi-Fi_Direct_Programming_guide.pdf
├── SoftAP_Mode_features.pdf
├── Wireless_tools_porting_guide.pdf
└── wpa_cli_with_wpa_supplicant.pdf
现在解压安装包:
tar xvf RTL819xCU_USB_linux_v3.4.3_4369.20120622.zip
cd driver
tar xvf rtl8188C_8192C_usb_linux_v3.4.3_4369.20120622
这里有一点需要注意的是,当你的USB插入电脑的USB接口时,对应驱动的加载与否取决于你的USB ID号,因此,对于没有在驱动中注册过相应USB ID号的网卡,我们需要人为添加USB ID号,可以参考document下的HowTo_support_more_VidPids.pdf。具体的做法是修改driver/rtl8188C_8192C_usb_linux_v3.4.3_4369.20120622/os_dep/linux/usb_intf.c,找到rtw_usb_id_tbl数组,添加对应的PID,(VID已经定为0BDA,即代表realtek),我们可以找到如下几行:
/****** 8192CUS ********/{USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8177)},//8191cu 1*2{USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8178)},//8192cu 2*2{USB_DEVICE(USB_VENDER_ID_REALTEK, 0x817C)},//8192CE-VAU USB minCard
由于在驱动中已经添加了TL-WN727N网卡的PID号,因此我们不需要修改,如果是新设备的话则需要在这里添加,否则USB设备将无法被linux识别! 进入驱动目录,即driver/rtl8188C_8192C_usb_linux_v3.4.3_4369.20120622/,在终端下直接:makesudo make install
这里在make的过程中会出现一个error:
thinki@G31T-M2:~/rtl8188eu$ make
make ARCH=i386 CROSS_COMPILE=arm-xilinx-linux-gnueabi- -C /lib/modules/3.2.0-37-generic-pae/build M=/home/thinki/rtl8188eu modules
make[1]: 正在进入目录 `/usr/src/linux-headers-3.2.0-37-generic-pae'
/usr/src/linux-headers-3.2.0-37-generic-pae/arch/x86/Makefile:81: stack protector enabled but no compiler support
CC [M] /home/thinki/rtl8188eu/core/rtw_cmd.o
Assembler messages:
Error: unknown architecture `i686'
Error: unrecognized option -march=i686
cc1: error: unrecognized command line option '-mregparm=3'
cc1: error: bad value (i686) for -march switch
make[2]: *** [/home/thinki/rtl8188eu/core/rtw_cmd.o] 错误 1
make[1]: *** [_module_/home/thinki/rtl8188eu] 错误 2
make[1]:正在离开目录 `/usr/src/linux-headers-3.2.0-37-generic-pae'
make: *** [modules] 错误 2
在网上google了好一会也没找到是什么问题,后来在国外的网站上发现了问题,原来是 我之前安装了Xilinx zynq的交叉编译工具链,在/etc/profile定义了CROSS_COMPILE宏,然后在make的时候被作为了gcc的前缀,也就是我在用交叉编译工具链编译x86的驱动,自然会报-march=i686是未识别的选项了!
把 make改成 make CROSS_COMPILE= 即可!
即编译安装,然后使用modprobe加载驱动:
sudo modprobe 8192cu
即可在面板上看到无线网卡被识别出来,并且能够通过Network Manager配置无线网络,如下图:
接下来将驱动模块添加到开机启动列表即可,注意这一步需要在root用户下操作sudo -iecho 8192cu >> /etc/modules不过经我个人验证,即使不加入开机启动列表,网卡在重启后也能正常工作。