磊科336及v2使用rtl8188cus芯片。在给定的document(随光盘附带)里面说支持的内核是2.6.18-2.6.33,opensuse11.4的内核版本已经是2.6.37。
openSUSE:/usr/src/linux # lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 002: ID 1c4f:0002 SiGma Micro Bus 004 Device 003: ID 0e8f:0016 GreenAsia Inc. 4 port USB 1.1 hub UH-174 Bus 004 Device 004: ID 192f:0416 Avago Technologies, Pte. Bus 004 Device 005: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN openSUSE:/usr/src/linux # uname -a Linux openSUSE.me 2.6.37.1-1.2-desktop #1 SMP PREEMPT 2011-02-21 10:34:10 +0100 i686 i686 i386 GNU/Linux
首先得安装内核源码和内核头文件(这个很多发行版都没自动安装):
zypper in kernel-source kernel-devel kernel-firmware kernel-desktop kernel-desktop-devel kernel-devel
现在在/usr/src目录下面应该又了2.6.37的内核源码:
openSUSE:/usr/src/linux # ls /usr/src linux linux-2.6.37.1-1.2 linux-2.6.37.1-1.2-obj linux-obj packages
然后进入到336的驱动目录下面把config文件拷贝到/usr/src/linux(linux是linux-2.6.37.1-1.2的软连接),
这样在编译的时候就不会出现找不到config的错误了。
如果用的芯片是8192(336v2)的话,现在切换到336v2的目录下,开始操作:
下面在编译的时候还是会出现问题,问题是什么呢?
/home/wolf/temp/NW336v2/Linux/RTL8192CU_8188CUS_8188CE-VAU_linux_v2.0.974.20100803/driver/rtl8192CU_linux_v2.0.974.20100803/os_dep/osdep_service.c:291:2: error: implicit declaration of function ‘init_MUTEX’
这个是由于:新内核使用了sema_init() 代替了 init_MUTEX(),于是修改os_dep/osdep_service.c中的init_MUTEX(prwlock)为sema_init(prwlock,1)。
做完这些工作以后再make吧。
#make
如果迫不及待的想体验以下,就
#insmod 8192cu.ko
当然,如果长期使用可以安装一下模块
#make install
也可以通过
#modprobe 8192cu.ko
开加载模块。
******************************************************************************************************************
openSUSE下面本来我是通过命令行方式上网的,但是后来觉得使用networkmanager也不错,就改用networkmanager来上网
(可以通过yast来设定,不要两种方式混着使用,很容易冲突)
参考:
http://www.nerdlinux.com/post/124/
***********************************************************************************************************************************
Debian Squeeze(stable) 和Debian Wheezy的内核都是2.6.32,但是在安装的时候可能需要自己注意一下.
Debian Wheezy安装完内核源码和头文件后(其实只是需要头文件),会自动创建/lib/modules/2.6.32-5-686/build到/usr/src/linux-headers-2.6.32-5-686的软连接:
wolf@wheezy:~$ ls -l /lib/modules/2.6.32-5-686/build lrwxrwxrwx 1 root root 35 3月 23 13:02 /lib/modules/2.6.32-5-686/build -> /usr/src/linux-headers-2.6.32-5-686
所以在编译的时候能够省一步(也就没有那么莫名其妙的错误了),安装
内核头文件和源代码:
#aptitude install linux-source-2.6.32 linux-headers-2.6.32-5-686
接着在make的时候还会出现错误,说没有/usr/src/linux-headers-2.6.32-5-common/autoconf_rtl8192c_usb_linux.h,
需要把autoconf_rtl8192c_usb_linux.h服知道/usr/src/linux/headers-2.6.32-5-common里面.(很奇怪为什么会用到common头文件)。
不需要复制config文件,但是init_MUTEX(prwlock)还是要改为sema_init(prwlock,1)(因为这是内核里面)
Debian Sid和Wheezy很类似。
在Debian Squeeze中,虽然也是使用的2.6.32的内核,但是没有为我们自动添加上面提到的软连接,所以在make的时候,会有没有
/lib/modules/2.6.32-5-686/build的错误出现,这时只需要创建一个连接就可以了(在上面的步骤的基础上)
#ln -s /lib/modules/2.6.32-5-686/build /usr/src/linux-headers-2.6.32-5-686/
剩下的就和Debian Wheezy 和Sid一样了。
*************************************************************************************************************
Mandriva 2010.2中,似乎还要简单一些,只需要把 init_MUTEX(prwlock)改为sema_init(prwlock,1),
然后安装内核都文件和内核源码
[root@localhost src]# uprmi kernel-desktop586-2.6.33.7-2mnb kernel-desktop586-devel-2.6.33.7-2mnb [root@localhost src]# pwd /usr/src [root@localhost src]# ls linux-2.6.33.7-desktop-2mnb/
然后make编译。
******************************************************************************************************************
最新的内核2.6.39已经有了这个网卡的固件,所以无须手动安装,下载固件即可,在Debian Sid中为
firmware-realtek
****************************************************************************************************************************************
在最新的Mageia 1(内核2.6.38)中编译好内核模块时8192cu.ko,发现insmode 不成功,出现
1 Invalid module format
这是由于正在运行的内核版本和编译时链接的内核版本(头文件)不一致造成的,原来,我安装的内核头文件是:
kernel-tmb-desktop-devel-2.6.38.7-1.mga
而不是我PC上正在运行的内核的头文件,运行的内核的头文件应该是:
kernel-desktop-devel-2.6.38.7-1.mga
于是安装之,编译加载成功!