麒麟操作系统无法驱动MT7601U芯片USB网卡的处理

MT7601U是USB网卡常见采用的方案,在4.x以下,该驱动需要手动编译,在4.0以后kernel已经集成了MT7601U的驱动,但目前已知在4.15及更高版本的内核中驱动有bug导致硬件无法识别(原文链接:https://github.com/kuba-moo/mt7601u/issues/72)
麒麟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即可

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值