mt7921 debian系统 如何安装驱动

Debian 上使用搭载 MT7921 芯片的无线网卡------无论是笔记本内置的 PCIe 版本(mt7921e),还是 ALFA AWUS036AXML 等 USB 网卡(mt7921u)------大概率会遇到一个尴尬的局面:系统识别到了硬件,但 WiFi 界面空空如也。这不是硬件坏了,而是 Debian 默认没有附带 MediaTek 的闭源固件。

MT7921 的驱动早已并入 Linux 内核主线(5.18 及以上),你不需要编译任何东西,只需要把固件文件放到正确的位置,然后重启。下面从确认硬件开始,一步步走完整个流程。

先确认你的硬件到底被识别了没有

安装任何东西之前,先搞清楚系统是否"看得到"这块网卡。

如果是 PCIe 内置网卡 ,用 lspci

bash 复制代码
lspci -nn | grep -i mediatek

你应该看到类似输出:

复制代码
01:00.0 Network controller [0280]: MEDIATEK Corp. MT7921 802.11ax PCIe Wireless Network Adapter [14c3:7961]

如果是 USB 网卡 ,用 lsusb

bash 复制代码
lsusb | grep -i mediatek

输出中应包含 ID 0e8d:7961 MediaTek Inc.。看到这些 ID,说明硬件本身没问题,问题只出在固件和驱动加载环节。

驱动是内置的,但固件必须手动装

MT7921 的驱动从 Linux 内核 5.18 起就已内置。Debian 12(Bookworm)默认搭载 6.1 内核,Debian 13(Trixie)搭载 6.12 内核,驱动模块本身都是现成的。但你还需要确认模块是否已经加载:

bash 复制代码
lsmod | grep mt7921

如果没有任何输出,先尝试手动加载看看报什么错:

bash 复制代码
sudo modprobe mt7921e    # PCIe 版本
# 或
sudo modprobe mt7921u    # USB 版本

如果 dmesg 中出现了类似 Direct firmware load for mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin failed 的报错,那就说明问题出在固件------驱动在找固件文件,但系统里没有。

Debian 12 与 Debian 13:两条安装路径

Debian 13(Trixie)用户

Trixie 的内核(6.12)远高于 MT7921 的最低要求,你只需要安装固件包:

bash 复制代码
sudo apt update
sudo apt install firmware-mediatek
sudo reboot

如果 firmware-mediatek 在默认源中不可用,改用 firmware-misc-nonfree

bash 复制代码
sudo apt install firmware-misc-nonfree

Debian 12(Bookworm)用户

Bookworm 的 6.1 内核对于大多数 MT7921 型号已经够用,固件同样通过 firmware-misc-nonfree 提供:

bash 复制代码
sudo apt update
sudo apt install firmware-misc-nonfree
sudo reboot

如果你的网卡在重启后仍然无法工作,或者出现连接不稳定、频繁断流的情况,可能是内核版本与固件之间存在兼容性问题。此时可以从 backports 安装更新的内核:

bash 复制代码
# 确认 sources.list 中已启用 bookworm-backports
sudo apt install -t bookworm-backports linux-image-amd64 firmware-mediatek
sudo reboot

Debian 论坛中有用户通过这一方式成功驱动了 MT7921 网卡。注意:如果你的 sources.list 中没有 backports 行,需要先添加:

复制代码
deb http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware

如果 apt 装不上:手动放置固件文件

某些情况下,Debian 仓库中的固件版本可能滞后于网卡实际需要的版本,或者你处于无法联网的状态。这时可以从 linux-firmware 上游仓库手动获取固件文件。

MT7921 需要以下文件(注意:虽然芯片叫 7921,但固件文件名是 MT7961):

复制代码
WIFI_MT7961_patch_mcu_1_2_hdr.bin
WIFI_RAM_CODE_MT7961_1.bin
BT_RAM_CODE_MT7961_1_2_hdr.bin    # 仅蓝牙需要

从内核源码仓库的 linux-firmware/mediatek 目录下载这些文件,然后放入系统的固件目录:

bash 复制代码
sudo mkdir -p /lib/firmware/mediatek
sudo cp WIFI_MT7961_patch_mcu_1_2_hdr.bin /lib/firmware/mediatek/
sudo cp WIFI_RAM_CODE_MT7961_1.bin /lib/firmware/mediatek/
sudo cp BT_RAM_CODE_MT7961_1_2_hdr.bin /lib/firmware/mediatek/
sudo reboot

这一方法来源于 Mediatek USB WiFi 适配器固件安装指南,对 PCIe 和 USB 版本同样适用。

重启后的验证

重启后依次执行以下命令确认状态:

bash 复制代码
lsmod | grep mt7921          # 应看到 mt7921e 或 mt7921u 模块
ip link | grep wlan          # 应看到 wlan0 或 wlan1 接口
dmesg | grep mt7921          # 检查是否有固件加载失败的报错

如果 ip link 中出现了 wlan 接口,WiFi 列表也正常出现,就说明驱动和固件都到位了。

几个常见的坑

低发射功率问题。 部分 MT7921/MT7922 用户在 Debian 上遇到发射功率被锁定在极低值(约 3dB)的情况,表现为信号极弱、连接不稳定。一个临时解决方案是卸载 mt76 相关模块后,以 disable_clc=1 参数重新加载驱动:

bash 复制代码
sudo modprobe -r mt7921e mt76
sudo modprobe mt7921e disable_clc=1

这个问题在 Debian Bug #1105211 中有详细记录。

固件回归问题。 有用户反馈升级到 firmware-mediatek 20250917-1 后,原本正常的 mt7921e 反而停止工作。如果更新固件后网卡消失,可以尝试降级固件版本,或在 backports 中寻找更稳定的版本。

蓝牙与 WiFi 的微妙关系。 在部分 USB 网卡上,存在蓝牙固件与 WiFi 固件互相干扰的情况。有开发者发现删除 BT_RAM_CODE_MT7961_1_2_hdr.bin 后 WiFi 反而恢复正常,代价是失去蓝牙功能。如果你不依赖蓝牙,这可以作为一个极端排查手段。

长时间运行后网卡消失。 部分用户在 Debian 12 上运行数小时后,MT7921K 网卡会突然从系统中消失,重启后恢复。这可能与电源管理或 PCIe ASPM 有关,可以尝试在内核启动参数中加入 pcie_aspm=off 来测试。


MT7921网卡

相关推荐
m0_459872921 小时前
Linux 系统基础
linux·运维·服务器
fb_123451 小时前
Docker入门-第3章-容器镜像深度解析
运维·docker·容器
吴声子夜歌1 小时前
Shell编程——数组
linux·运维·shell
qq_508576092 小时前
机器人通讯协议
网络·机器人
2401_891957312 小时前
简单了解多路转接select
运维·服务器
2302_1112 小时前
java依赖小结
java·运维·数据库
qetfw2 小时前
Debian 10 部署 Roundcube Webmail:Bind9、Postfix、Dovecot、SMTPS、IMAPS 与 HTTPS
debian·roundcube
程序员-Benothing2 小时前
Shell 脚本条件判断与流程控制:if for while case 详解
linux·运维·服务器
captain3762 小时前
网络原理(3)-TCP核心机制连接管理▲▲▲
java·服务器·网络·ide·网络协议·tcp/ip·java-ee