在 debian-7.7.0 编译 Realtek RTL8188CUS USB 无线网卡驱动

作者: JavasBoy 分类: Linux, Network 发布时间: 2014-12-21 19:03 ė13,245 views 6没有评论

前几天因FreeBSD10.0在我的笔记本上接投影无法双屏,然后新安装了 Linux mint 17 一切的完美,非常不错的一个发行版。完美支持 X61s 的多功能键,休眠,我想要的双屏也支持。唯一就是我的网件(Netgear)WNA1000M 150M迷你USB无线网卡无法驱动,通过 lsusb 命令可查看到这块网卡所用芯片为 Realtek RTL8188CUS。说明内核可以认这块网卡,Google 之发现问题是内核自带的驱动不正常,原因是内核太新了,Realtek 官方的驱动源代码 (Version 4.0.2_9000) 只支持 Linux Kernel 2.6.18~3.9,而这个系统使用的内核如下:

3.13.0-42-generic
lsusb
Bus 004 Device 004: ID 0846:9041 NetGear, Inc. WNA1000M 802.11bgn [Realtek RTL8188CUS]

按照 http://blog.chinaunix.net/uid-22883023-id-4392914.html 这篇博文的方法编译也无效,系统启动的时候报:

dmesg | grep 8192

8192cu module verification failed signature and/or required key missing - tainting kernel

折腾几个小时后,决定装个 ubuntu-14.04.1 这个内核正好是上面博文中讲到的 3.13.0-32-generic。可是当我装好正常编译后,也同样遇到上面这个问题,不过这是我这么多年再次装 Ubuntu 字体显示效果比 xfce4 好太太妈多了,都不舍得换其它发行版系统鸟。

再次想找个内核版本旧一点的系统,这次必须拿出 Debian 这个号称最稳定的版本了。下载 debian-7.7.0-amd64-xfce-CD-1.iso ,量产 U 盘一气呵成。安装的过程中最好插上网线联上网,因为我是要安装 xfce 桌面环境,这样在安装的过程中会安装最新的软件,以及字体,还有一些驱动。

安装好之后首先查看内核版本是多少(其实下载 iso 镜像的时候我就查过了在 2.6.18~3.9 之内,就是怕安装的过程中更新了内核)。

javasboy:~$ uname -a
Linux javasboy 3.2.0-4-amd64 #1 SMP Debian 3.2.63-2+deb7u2 x86_64 GNU/Linux

很好,内核版本为 3.2.0-4-amd64,这次我是到 Realtek 官网下载的RTL8188CUS源代码驱动。
下载地址如下:

http://www.realtek.com/downloads/downloadsView.aspx?Langid=1&PNid=48&PFid=48&Level=5&Conn=4&DownTypeID=3&GetDown=false&Downloads=true#2742

下载好的文件名为:
RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911.zip

解压、进入 RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911/driver 目录,再把这个目录下的 rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911.tar.gz 解压。
这份驱动默认是使能了网卡节能功能,并且打开了debug信息,我对比了关闭节能功能,传输速度从 2M/s 提升到了 2.8M/s,暂时还不清楚关掉这个节能功能对笔记本有啥影响,反正我这电池只能坚持30分钟的样子,到哪都带着电源线。

补丁如下:

diff -uNr rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/include/rtw_debug.h rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911_patch2/include/rtw_debug.h
--- rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/include/rtw_debug.h   2013-09-11 11:56:55.000000000 +0800
+++ rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911_patch2/include/rtw_debug.h    2014-12-21 17:32:12.457692312 +0800
@@ -310,6 +310,7 @@
 
 #define DBG_871X_LEVEL LOG_LEVEL
 
+#undef _dbgdump
 #if     defined (_dbgdump)
         #undef DBG_871X
 //      #define DBG_871X _dbgdump
diff -uNr rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/Makefile rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911_patch2/Makefile
--- rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/Makefile      2013-09-11 11:56:55.000000000 +0800
+++ rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911_patch2/Makefile       2014-12-21 17:30:52.749296924 +0800
@@ -29,7 +29,7 @@
 CONFIG_SDIO_HCI = n
 
 CONFIG_MP_INCLUDED = n
-CONFIG_POWER_SAVING = y
+CONFIG_POWER_SAVING = n
 CONFIG_USB_AUTOSUSPEND = n
 CONFIG_HW_PWRP_DETECTION = n
 CONFIG_WIFI_TEST = n

(1) 编译准备工作:
sudo apt-get install build-essential linux-headers-3.2.0-4-amd64

(2) 进入编译目录 driver/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911 (其实也可以使用官方提供的 install.sh 脚本)

sudo make modules
sudo make install

(3) 编译好的 8192cu.ko 文件将会自动安装到 /lib/modules/3.2.0-4-amd64/kernel/drivers/net/wireless/ 目录下。

(4) 禁止内核默认的rtl8192cu模块加载:

sudo echo "blacklist rtl8192cu" >> /etc/modprobe.d/blacklist.conf

(5) 最后重新加载 modules

sudo depmod -a 3.2.0-4-amd64

(6) 重启动系统,进入桌面后网络连接里已经可以看到无线网卡列出的可用网络,连接家里的无线,通过台式机传送了一个1G多的电影,速度达到了2.8M/s,这样的小网卡有这个速度已经不错了。就是ping 网关的延迟有6-8 ms。

(7)

  1. 测试 USB 网卡插拔也能正常工作。
  2. 系统挂起(睡眠)后 wifi 也能正常工作。
  3. 系统休眠启动后也能正常工作。
  4. 发热也不能高,在 FreeBSD 系统下巨热。

本文出自 刘荣星的博客,转载时请注明出处及相应链接。

本文永久链接: https://www.liurongxing.com/in-debian-7-7-0-compiler-realtek-rtl8188cus-usb-wireless-lan-driver.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Ɣ回顶部