终于用上了 mt7601u 无线网卡
两年前差不多这个时候, 当时遇到了一个诡异的问题, 安装 Arch Linux 的时候, 刚买的 MT7601U 无线网卡还能够正常使用, 装好之后却怎么也找不到它的 wireless interface. 查看 dmesg, 一直在报错
dmesg
[ 6.781661] usb 1-9: device descriptor read/64, error -110
[ 22.354966] usb 1-9: device descriptor read/64, error -110
[ 22.574846] usb 1-9: new high-speed USB device number 5 using xhci_hcd
[ 27.901660] usb 1-9: device descriptor read/64, error -110
[ 43.474987] usb 1-9: device descriptor read/64, error -110
[ 43.694866] usb 1-9: new high-speed USB device number 6 using xhci_hcd
[ 48.908324] usb 1-9: device descriptor read/8, error -110
[ 54.241655] usb 1-9: device descriptor read/8, error -110
[ 54.461449] usb 1-9: new high-speed USB device number 7 using xhci_hcd
[ 59.574988] usb 1-9: device descriptor read/8, error -110
[ 64.908321] usb 1-9: device descriptor read/8, error -110
[ 65.014753] usb usb1-port9: unable to enumerate USB device
于是到 Arch Linux 的论坛 上发了求助, 不过也没什么结果.
前几日想起来, 恰好在 https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1716301 找到了解 决方法, 果然是驱动的问题. 虽然对我来说仍然是玄学, 不过打了补丁重新编译 驱动之后确实能用了. 第一次编译 Linux 的代码(驱动也算吧, 捂脸), 简要记录如下.
-
从 https://kernel.org 上下载对应 Linux 版本的源代码(其实只要 MT7601U 的驱动部分代码就好).
-
利用 Comment #53 提供的 mcu.patch 重新编译 MT7601U 无线网卡的驱动:
cd drivers/net/wireless/mediatek/mt7601u
patch -p0 < mcu.patch
make -C /lib/modules/$(uname -r)/build/ M=$(pwd) modules
- 插入设备以加载依赖的 module. 当然也可以手动查看并加载:
modinfo mt7601u | grep depends
# Output: depends: mac80211,cfg80211
- 拔下设备, 移除已加载的驱动并加载编译好的驱动:
sudo rmmod mt7601u
sudo insmod ./mt7601u.ko vnd_reset=0
- 重新插入设备.
现在设备已经可以正常使用了. 可以替换原有的驱动(请先做好备份):
xz -z mt7601u.ko
sudo cp ./mt7601u.ko.xz /lib/modules/$(uname -r)/kernel/drivers/net/wireless/mediatek/mt7601u
这样在系统更新前都会使用编译的驱动.