LinuxMint编译内核驱动无线网卡
感谢薄荷开源网资深网友 @离枝 投稿。
作为一个爱折腾的人,LZ讲一讲自己的笔记本配置外接 USB迷你无线网卡的经历吧,希望给大家做个参考,去探索Linux中更有意思的东西。
其实LZ的笔记本自带无线网卡(这不废话嘛~),不过在Linux下效果实在不太理想,从内核3.13开始免驱,使用起来却是另一回事,信号不好可以忍受,让人哭笑不得的是经常掉线,一遇下载必然掉线,这让浏览器下载困难重重。
某天好友送了一个杂牌USB无线网卡,好吧,它确实连商标之类的文字图案也没有。插在刚升级的 mint 17.3 上试了试,无法显示。也就是说,它需要安装驱动才可使用。好吧,我们就开始吧。
- 先确定外接网卡对应的信息。在终端里 输入 lsusb 显示。为了识别,我们可以使用一个小技巧,比如在插入前后分别用lsusb查看,多出来的信息,就是无线网卡的。如下图,白色条状标出的即是。
如上图,无线网卡的 USB ID 为148f 7601,这个ID可以简单理解为芯片的身份,每种芯片身份都是独一无二的。关于芯片的更多信息,可以在下面这个网站查到,https://wikidevi.com/wiki/List_of_Wi-Fi_Device_IDs_in_Linux
当然,为了方便大家,我做了一个表格,大家可以在表格里看到:
USB ID | 内核开始支持 | 芯片 |
USB_cdab_8010 | v4.4 | rtl8xxxu |
USB_0789_016d | v4.4 | rtl8xxxu |
USB_7392_7710 | v4.2 | mt7601u |
USB_2a5f_1000 | v4.2 | mt7601u |
USB_2955_1001 | v4.2 | mt7601u |
USB_2955_0001 | v4.2 | mt7601u |
USB_2717_4106 | v4.2 | mt7601u |
USB_2001_3d04 | v4.2 | mt7601u |
USB_2001_3c25 | v4.1 | rt2800usb |
USB_2001_330d | v4.1 | rtl8192cu |
USB_2001_330b | v4.4 | rtl8xxxu |
USB_1b75_3070 | v4.3 | rt2800usb |
USB_148f_760d | v4.2 | mt7601u |
USB_148f_760c | v4.2 | mt7601u |
USB_148f_760b | v4.2 | mt7601u |
USB_1286_204e | v4.3 | mwifiex_usb |
USB_1286_204d | v4.3 | |
USB_1286_204a | v4.0 | mwifiex_usb |
USB_1286_2049 | v4.0 | mwifiex_usb |
USB_1058_0631 | v4.4 | rtl8xxxu |
USB_0e8d_760b | v4.2 | mt7601u |
USB_0bda_8724 | v4.4 | rtl8xxxu |
USB_0bda_2e2e | v4.4 | rtl8xxxu |
USB_0bda_1e1e | v4.4 | rtl8xxxu |
USB_0bda_1724 | v4.4 | rtl8xxxu |
USB_0bda_0724 | v4.4 | rtl8xxxu |
USB_0b05_17d3 | v4.2 | mt7601u |
USB_0b05_17ba | v4.1 | rtl8xxxu,rtl8192cu |
USB_0846_9043 | v4.3 | rtl8192cu |
USB_06f8_e035 | v4.4 | rtl8xxxu |
USB_04bb_094c | v4.4 | rtl8xxxu |
USB_04bb_0950 | v4.4 | rtl8xxxu |
USB_0471_209e | v4.1 | ath9k_htc |
USB_043e_3101 | v4.5-rc1 | |
USB_148f_760a | v4.2 | mt7601u |
USB_148f_7601 | v4.2 | mt7601u |
USB_13d3_3434 | v4.2 | mt7601u |
USB_13d3_3431 | v4.2 | mt7601u |
如上面表格所示,usb ID 148f 7601, 为mt7601u的芯片,他在内核4.2开始支持。也就是说,要想让这个芯片工作,可以靠升级内核解决。而很可惜,貌似我安装的mint 17.3 不支持4.2及以上的内核,我们就来编译吧。
2、找到芯片的驱动,由于官方默认驱动有bug,好多热心的大神已经在原有驱动上重新编译了一遍,比如下面两个:
https://github.com/porjo/mt7601 (有相关的ZIP压缩包)。
https://github.com/kuba-moo/mt7601u(里面有作者本人的详细教程)
我们可以下载 porjo 的压缩包,并用 kuba-moo 给出的方法安装。
- 下载 mt7601-master.zip,并解压。我们可以在 ./src/common/rtusb_dev_id.c里看到里面有关于148f 7601 的信息,没有的话,就添加一行
{USB_DEVICE(0x148f,0x7601)}, /* MT 6370 */
4、使用终端打开文件夹 (下载的目录)/mt7601-master/src ,如下图
依次执行 $ make
# modprobe mac80211
# insmod ./mt7601Usta.ko (解释一下,mt7601Usta.ko这个文件可能在 你下载的文件夹/mt7601-master/src/os/linux 里找到)
而后网卡成功识别。
==============我是分割线========================
不过同类资源有好多,而我在这里另找了一个资源,如下:
http://bazaar.launchpad.net/~victored/+junk/mt7601U-linux-driver-64bit/tarball/2
点击链接下载后,得到一个*.tgz 的压缩包,解压后得到一个文件夹,使用终端打开 ~/mt7601U-linux-drive-64bit 文件夹 (在文件夹上右击,出现相关选项)。
依次执行 $ sudo make
$ sudo make install
$ sudo modprobe mt7601Usta
成功识别。
==============我是分割线========================
可能有朋友会说,我按同样的方法安装好了,网卡也识别了,可是有时会出现死机,或是重启显示黑屏。我们继续研究,打开 /var/lib/usbutils/usb.ids 这个文件,可以看到,在mint 17.3 里, usb.ids的版本日期是2013年5月,许多新的usb ID它就不认识啦。别担心,我们可以去 http://www.linux-usb.org/usb.ids 里下载最新的版本。(打开网页,鼠标右击,选择“将页面另存为(P)”即可下载。)然后将旧文件 usb.ids 替换掉就可以了,这里可能需要root权限。
OK,开始愉快地网上冲浪吧~
P.S : mt7601u 在内核4.6里正式支持,无需安装驱动~~
记得之前外接某些无线网卡是需要手工安装
学习了,继续支持!