麒麟操作系统无法驱动MT7601U芯片USB网卡的处理"/>
麒麟操作系统无法驱动MT7601U芯片USB网卡的处理
MT7601U是USB网卡常见采用的方案,在4.x以下,该驱动需要手动编译,在4.0以后kernel已经集成了MT7601U的驱动,但目前已知在4.15及更高版本的内核中驱动有bug导致硬件无法识别(原文链接:)
麒麟V10 SP1桌面内核5.x,插入网卡dmesg报错如下:
[ 693.151175] mt7601u 1-2:1.0: ASIC revision: 76010001 MAC revision: 76010500
[ 693.193318] mt7601u 1-2:1.0: Firmware Version: 0.1.00 Build: 7640 Build time: 201302052146____
[ 696.700844] mt7601u 1-2:1.0: Vendor request req:02 off:0a44 failed:-110
[ 700.576649] mt7601u 1-2:1.0: Vendor request req:07 off:09a8 failed:-110
[ 704.067687] mt7601u 1-2:1.0: Vendor request req:02 off:09a8 failed:-110
[ 707.554951] mt7601u 1-2:1.0: Vendor request req:07 off:0734 failed:-110
[ 711.072891] mt7601u 1-2:1.0: Vendor request req:42 off:0230 failed:-110
[ 714.595344] mt7601u 1-2:1.0: Vendor request req:07 off:0080 failed:-110
[ 718.113453] mt7601u 1-2:1.0: Vendor request req:02 off:0080 failed:-110
[ 721.633104] mt7601u 1-2:1.0: Vendor request req:02 off:0080 failed:-110
[ 721.633156] mt7601u: probe of 1-2:1.0 failed with error -110
[ 721.633206] usbcore: registered new interface driver mt7601u
处理办法,修改驱动源码包中的mcu.c,注释L450,重新编译内核模块,将原模块加入blacklist并设置新模块的开机加载
1.下载源码包,麒麟源中不提供linux-source包,从社区拉一个同版本的即可
解压到/usr/src
root@localhost:~# tar -xvzf /home/kylin/linux-5.10.1.tar.gz -C /usr/src
2.修改源文件
root@localhost:~# cd /usr/src/linux-5.10.1/drivers/net/wireless/mediatek/mt7601u/
root@localhost:/usr/src/linux-5.10.1/drivers/net/wireless/mediatek/mt7601u# vim mcu.c
449 //mt7601u_vendor_reset(dev);
3.编译内核模块
root@localhost:/usr/src/linux-5.10.1/drivers/net/wireless/mediatek/mt7601u# make -C /lib/modules/$(uname -r)/build/ M=$(pwd) modules
4.修改权限,复制到modules目录
root@localhost:/usr/src/linux-5.10.1/drivers/net/wireless/mediatek/mt7601u# chmod +x mt7601u.ko
root@localhost:/usr/src/linux-5.10.1/drivers/net/wireless/mediatek/mt7601u# cp mt7601u.ko /lib/modules/5.10.0-5-generic/mt7601ufix.ko
5.重建依赖关系,手动加载模块
root@localhost:/usr/src/linux-5.10.1/drivers/net/wireless/mediatek/mt7601u# depmod -a
root@localhost:/usr/src/linux-5.10.1/drivers/net/wireless/mediatek/mt7601u# modprobe mt7601ufix
modprobe: ERROR: could not insert 'mt7601ufix': Permission denied
执行过程中可能会出现无法访问的报错,因为在麒麟桌面系统提供了类似selinux的文件标记安全机制,在图形化界面-安全中心把所有控制选项关闭掉
root@localhost:/usr/src/linux-5.10.1/drivers/net/wireless/mediatek/mt7601u# modprobe mt7601ufix
root@localhost:/usr/src/linux-5.10.1/drivers/net/wireless/mediatek/mt7601u# lsmod | grep "7601"
mt7601u 118784 0
mac80211 962560 1 mt7601u
cfg80211 843776 2 mt7601u,mac80211
重新插拔网卡,应该可以看到硬件识别,环缓冲区没有报错
后续如果需要替换原驱动,需要在驱动的配置文件加入blacklist,新驱动的开机自启,将配置文件添加到/etc/modules-load.d即可
更多推荐
麒麟操作系统无法驱动MT7601U芯片USB网卡的处理
发布评论