FNOS 安装 MT7921U USB WiFi 6 驱动说明
这份文档整理的是本次在飞牛 OS 上实际跑通的方案,目标是给 MT7921U / MT7921AU / MT7921BU 这类 USB WiFi 6 网卡安装驱动。
参考飞牛社区帖子:https://club.fnnas.com/forum.php?mod=viewthread&tid=62368l
适用环境:
- 系统:
fnOS 1.1.3107
- 内核:
6.18.18-trim
- 架构:
x86_64
- 实测设备:
MT7921U
这次成功的关键不是“直接用论坛现成 .ko”,而是:
- 用
openwrt/mt76 源码
- 按
FNOS 6.18.18-trim 的 headers 打兼容补丁
- 在本机重新编译
先说结论
https://club.fnnas.com/forum.php?mod=viewthread&tid=62368l里论坛分享的预编译包 mt76_backup.tar.gz 在这台机器上不能直接用。
虽然它表面上也是给 6.18.18-trim,但直接安装后会报:
modprobe: ERROR: could not insert 'mt7921u': Exec format error
mt76: disagrees about version of symbol module_layout
所以正确做法是重新编译,而不是直接复制旧 .ko。
支持的 USB ID
本次编译出的 mt7921u.ko 支持这些 ID:
0e8d:7961
3574:6211
0846:9060
0846:9065
35bc:0107
插上网卡后可先检查:
lsusb
重要提醒
1. modprobe 可能不是没安装,而是不在 PATH
FNOS 上 登录 用户默认 PATH 里没有 /usr/sbin,所以你会看到:
modprobe: command not found
这不一定代表系统没装 kmod。直接用完整路径即可:
/usr/sbin/modprobe mt7921u
/usr/sbin/modinfo mt7921u
/usr/sbin/depmod -a
2. 这套方案是给 6.18.18-trim 的
如果以后飞牛 OS 升级内核,比如不是 6.18.18-trim 了,需要重新编译一遍,不能直接沿用旧模块。
先确认:
uname -r
安装前检查
uname -r
uname -m
ls /usr/src/ | grep linux-headers
docker version
预期:
uname -r 是 6.18.18-trim
uname -m 是 x86_64
- 存在
linux-headers-6.18.18-trim
- Docker 可用
本次实际成功的最小方案
和常见教程相比,这次没有去编整套 mt76 全家桶,而是只编 MT7921U 真正需要的那几个模块:
mt76.ko
mt76-usb.ko
mt76-connac-lib.ko
mt792x-lib.ko
mt792x-usb.ko
mt7921-common.ko
mt7921u.ko
这样可以避开 mt7603、mt7615、mt76x0、mt76x2 那些不相关模块的兼容性报错。
安装步骤
步骤 1:准备源码目录
cd /tmp
rm -rf mt76-build
git clone --depth 1 https://github.com/openwrt/mt76 mt76-build
cd mt76-build
步骤 2:打兼容补丁
这次实际需要的补丁点有 3 个:
- 给
mt76.h 补 linux/version.h 和 LINUX_VERSION_CODE
- 把旧路径
asm/unaligned.h 改成 linux/unaligned.h
- 把
ieee80211_txq_aql_pending() 改成旧 headers 也支持的 ieee80211_txq_get_depth()
执行:
cd /tmp/mt76-build
code
code