先说结论,省得你浪费时间:MT7922 在 Ubuntu 20.04 下蓝牙打不开,90% 是三个原因——内核版本太旧、linux-firmware 里缺固件、蓝牙服务被 rfkill 锁死。这篇文章把排查思路、命令、以及我踩过的坑完整写出来,按步骤走基本能解决。
先说下我的环境,笔记本是 AMD 平台,网卡是联发科 MT7922(也就是很多机器上显示的 RZ616),系统 Ubuntu 20.04.5 LTS。症状很典型:设置里蓝牙开关是灰的,点不动;rfkill list能看到蓝牙被 hard block;dmesg里报 firmware 加载失败。这个问题的根源在于 MT7922 这个网卡太新,而 Ubuntu 20.04 默认的内核版本是 5.4/5.8,对它的支持几乎为零。所以整个修复思路就是两件事:升级内核,让内核能识别并驱动这个设备;更新固件,让驱动能真正把蓝牙模块跑起来。
这篇文章适合谁看?刚在笔记本上装完 Ubuntu 20.04、蓝牙怎么都打不开的朋友,以及被 MT7922/MT7921/MT7920 这些联发科网卡折腾过的人。我不会只丢一堆命令让你复制粘贴,而是把每一条命令的作用、每一步操作背后的原因都讲明白,这样你遇到类似问题也能自己排查。
1. 先搞清楚 MT7922 在 Ubuntu 20.04 里到底卡在哪
1.1 症状全览:这些表现你都遇见过哪种
MT7922 蓝牙出问题,不同机器、不同内核版本表现还不太一样。我把最常见的几种症状列出来,你对照一下自己属于哪种,方便后面精准定位。
第一种:蓝牙设置里开关是灰色,完全点不了。这是最常见的表现,打开系统设置里的蓝牙选项,开关是灰的或者干脆没有。这时候你用rfkill list看,大概率能看到蓝牙设备处在 hard blocked 或 soft blocked 状态。
第二种:输入dmesg | grep -i bluetooth能看到一堆报错,常见的包括Direct firmware load for mediatek/mt7922_dual_bl.bin failed with error -2或者mt7921e: probe failed with error -110。这里最典型的就是 firmware 加载失败,说明系统里根本没有对应的固件文件。
第三种:蓝牙模块能被识别,lsusb或者lspci里能看到设备,hciconfig -a也能看到 hci0 接口,但用它连接任何设备都会失败,或者连接上了过几秒就断开。
第四种:奇葩一点的,蓝牙和设备都正常,但每次重启之后就间歇性失效,这次能用下次不能用,找不出规律。
这四种我都实际遇到过,而且往往不是单一原因,是内核太旧和固件缺失叠加在一起导致的。所以接下来的排查思路,不是只解决某一种症状,而是把所有可能出问题的环节都过一遍。
1.2 为什么偏偏是 Ubuntu 20.04 出问题
这事得从 MT7922 这个芯片的出身说起。MT7922 是联发科的 Wi-Fi 6E 网卡,很多笔记本厂商采购回去之后重新贴牌,叫 RZ616 或 RZ608。它刚量产是 2021 年前后,真正大规模铺货是 2022 年。而 Ubuntu 20.04 是 2020 年发布的,默认内核是 5.4 或者升级后的 5.8。你想想,一个 2020 年的内核,怎么可能对 2022 年才大量出现的芯片有完善支持?
说白了,Ubuntu 20.04 的内核里虽然已经有了 mt76 驱动框架和 mt7921e/mt7922e 驱动模块的身影,但那时候还是早期版本,bug 多、功能不全,对 mt7922 的支持更是半成品状态。而且 Linux 驱动这个东西,很多时候不是内核里有了驱动模块就能用,还得有配套的 firmware 固件文件。内核驱动只是个"翻译官",真正让硬件跑起来的是固件这个"干活的手"。Ubuntu 20.04 自带的 linux-firmware 包版本太老,里面根本没有 mt7922 需要的固件文件。
所以问题的根源很清晰:内核太旧 + 固件缺失。两个问题叠加,蓝牙自然打不开。相比之下,Ubuntu 22.04 甚至 23.04 就很少遇到这个问题,因为新系统默认内核版本高,linux-firmware 包也新。但有些人可能因为工作环境、软件兼容性必须留在 20.04,那这篇文章就是给你准备的。
2. 一句话看懂蓝牙驱动链路:内核、固件、蓝牙栈各管什么
2.1 驱动加载链路到底是怎么回事
很多人在网上搜"MT7922 驱动下载",以为像 Windows 一样下载个 exe 装一下就行。Linux 完全不是这个思路。在 Linux 里,驱动模块、固件、蓝牙协议栈是三层各干各的活,任何一层出问题都会导致最终蓝牙不可用。
第一层是内核驱动模块。MT7922 对应的是mt7921e(PCIe 接口)这个模块,它负责和硬件通信,告诉内核"我这个设备支持哪些能力"。你可以用modinfo mt7921e查看这个模块的信息,能看到它的版本、依赖项、参数等。内核版本越新,这个模块对 mt7922 的支持越完善。
第二层是固件文件。驱动模块本身不做具体计算,它需要把一段微程序加载到蓝牙芯片里,这段微程序就是固件。MT7922 的蓝牙固件文件放在/lib/firmware/mediatek/目录下,关键文件叫mt7922_dual_bl.bin。这个文件不在,驱动模块就算加载成功了,蓝牙芯片也跑不起来。
第三层是蓝牙协议栈。Ubuntu 用的是 BlueZ,它是 Linux 的官方蓝牙协议栈。它负责处理 HCI 接口、配对、音频传输等上层逻辑。你运行bluetoothctl、hciconfig这些命令,实际上都是和 BlueZ 打交道。如果前两层没问题,BlueZ 一般也能正常工作。
这三层的关系可以用一个生活化类比来理解:驱动模块是快递员,固件是货品本身,蓝牙协议栈是收货签收的仓库管理员。快递员来了发现货品没到(固件缺失),仓库管理员自然签不了收,最终你的蓝牙就用不了。
2.2 固件文件才是大头:没有它驱动等于空壳
为什么说固件才是大头?因为很多人在排查这个问题时,看到内核模块已经加载了,就以为驱动没问题,转向排查蓝牙服务、设置项这些表面因素。但实际上,MT7922 的驱动模块mt7921e在非常老的内核里也存在,它并不是完全不支持这个芯片,问题出在固件加载这一步。
你可以在终端里执行:
sudo dmesg | grep -i mt7921 | grep -i firmware如果看到类似Direct firmware load for mediatek/mt7922_dual_bl.bin failed with error -2的提示,那就说明内核模块已经尝试加载固件,但系统里根本找不到这个文件。固件文件缺失的情况下,蓝牙芯片得不到执行指令,整个设备就像一块没有软件的硬件——空有电路板,干不了活。
MT7922 需要用到的固件文件不止一个。通常在/lib/firmware/mediatek/目录下需要存在这些文件:
mt7922_dual_bl.bin mt7922_wo.bin mt7922_a.bin mt7922_all_in_one.bin mt7922.bin不同内核版本对应的固件文件路径可能略有不同。比如有些版本会在mediatek/mt7922/子目录下找固件,有些直接在mediatek/下找。这就涉及到内核版本和固件版本的匹配问题,后面细说。
3. 逐步实测:从确认硬件到蓝牙恢复的完整流程
3.1 动手前先确认:你的网卡真的是 MT7922 吗
这个问题听起来蠢,但真的坑过不少人。很多笔记本的网卡型号在系统里显示的不是 MT7922,而是 RZ616、RZ608 这些 OEM 贴牌型号。甚至有人的机器是 Intel 网卡,因为硬件故障被卖家换成了联发科,自己不不知道。
在终端里执行下面的命令,确认你的网卡到底是谁家产的:
lspci -nn | grep -Ei "network|wireless|bluetooth"输出结果类似这样:
02:00.0 Network controller [0280]: MEDIATEK Corp. MT7922 802.11ax PCI Express Wireless Network Adapter [14c3:0616]或者有的机器显示:
02:00.0 Network controller [0280]: Device [14c3:0616]看到14c3:0616这个 ID 基本就是 MT7922 了。14c3是联发科的 PCI Vendor ID,0616是 MT7922 的设备 ID。如果显示14c3:7961,那是 MT7921,解题思路类似,固件文件略有不同。
另外一个更直观的方法是看蓝牙接口:
lsusbMT7922 的蓝牙走的是 USB 接口,你会在输出里看到一个 MediaTek 的无线网卡,通常显示为:
Bus 001 Device 002: ID 0e8d:0616 MediaTek, Inc. Wireless_Device如果看到ID 0e8d:0616或0e8d:7922,那基本实锤了。这里有个容易迷惑的地方,蓝牙设备往往在一个单独的 USB Bus 上面,而 Wi-Fi 走 PCIe,这正好体现了 MT7922 这个芯片的混合架构——Wi-Fi 走 PCIe,蓝牙走 USB。这也解释了为什么蓝牙出了问题但 Wi-Fi 一切正常,因为两者虽然共用同一个芯片,但连接主机的通道和驱动程序是分开的。
3.2 三步走方案:升级内核、更新固件、加载模块
确认了设备是 MT7922 之后,接下来就是正式动手解决。我推荐按照这个顺序来:升级内核 → 更新固件 → 重启加载。不要反过来。
先说为什么要先升级内核。MT7922 的内核驱动模块mt7921e在后期的内核版本里才逐渐成熟,特别是对蓝牙的支持。Ubuntu 20.04 默认的 5.4 内核里连mt7921e模块都找不到,或者即使有也是旧版,根本无法正确初始化设备。升级内核能确保驱动模块本身是新的,能正确处理 mt7922 的硬件特性。
再说为什么更新固件。仅升级内核还不行,内核版本高不代表固件就新。Ubuntu 的 linux-firmware 包更新节奏比较保守,即使你的系统已经升级到了 5.15 内核,自带的 linux-firmware 版本还是可能缺少 mt7922 固件。所以必须单独从 linux-firmware 仓库拉取最新固件文件。
最后是加载模块和重启。升级内核和更新固件之后,最好重启一次系统,让内核、驱动、固件在干净的启动流程里完成加载。有些人懒得重启,用modprobe -r mt7921e && modprobe mt7921e重载模块,但实测下来不如重启干净,因为蓝牙还有一堆服务依赖和 USB 设备重新枚举。
3.3 实操:完整命令走一遍
第一步:升级内核到 5.15 LTS
Ubuntu 20.04 可以通过 HWE(Hardware Enablement)仓库直接升级到 5.15 内核,这样所有驱动模块都跟着升级,而且不会像用主线内核那样搞乱系统依赖。执行:
sudo apt update sudo apt install --install-recommends linux-generic-hwe-20.04装完之后确认一下内核版本:
uname -r正常情况下你会看到5.15.0-xx-generic。如果你的机器比较新,也可以考虑安装 5.19 HWE 内核,不过 5.15 是 LTS 长期支持版本,稳定性和兼容性更好,我推荐先用 5.15,不够再升级 5.19。
这里有个细节值得说下,HWE 内核包是批量安装的,它会自动处理依赖关系,比如linux-image-generic-hwe-20.04、linux-headers-generic-hwe-20.04等。它会和系统原本的 5.4 内核共存,启动时你可以在 GRUB 里选择用哪个。这是 Ubuntu 官方设计好的升级路径,比你自己去 kernel.ubuntu.com 下载 deb 包要安全得多。
第二步:更新 linux-firmware
这一步踩坑的人最多。直接apt install linux-firmware在 20.04 上经常得不到最新固件。最可靠的方式是从官方仓库拉取:
git clone --depth 1 https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git cd linux-firmware sudo cp -r mediatek /lib/firmware/如果你那边访问 git.kernel.org 比较慢,也可以用 GitHub 的镜像仓库:
git clone --depth 1 https://github.com/wkennington/linux-firmware.git不过这个镜像更新可能不及时,我更推荐直接用 Linux 内核官方的 linux-firmware 仓库。复制mediatek目录过去之后,最好再确认一下关键固件文件是否到位:
ls -lh /lib/firmware/mediatek/mt7922*正常情况下你应该看到:
-rw-r--r-- 1 root root 1.7M ... mt7922_dual_bl.bin -rw-r--r-- 1 root root 1.4M ... mt7922_wo.bin -rw-r--r-- 1 root root 2.0M ... mt7922_a.bin -rw-r--r-- 1 root root 2.3M ... mt7922_all_in_one.bin -rw-r--r-- 1 root root 2.3M ... mt7922.bin注意,不同版本的固件仓库文件列表会有差异,有些版本只有mt7922_dual_bl.bin和mt7922_wo.bin,这也没关系,关键是mt7922_dual_bl.bin必须在。它是 MT7922 蓝牙启动时第一个要加载的固件。
这里我想强调一个很多人容易忽略的点:不要直接删除原来的 mediatek 固件目录再拷贝,最好是先备份再覆盖:
sudo cp -r /lib/firmware/mediatek /lib/firmware/mediatek.bak sudo cp -r mediatek /lib/firmware/这样万一新固件有兼容性问题,可以快速回滚。而且新固件文件里有些配置文件格式变了,旧的内核可能不认,覆盖安装后如果有问题,回滚方案就能派上用场。
第三步:清理蓝牙相关模块缓存并重启
在重启之前,先把内核模块的依赖关系缓存刷新一下:
sudo depmod -a sudo update-initramfs -udepmod -a会重新生成模块依赖关系,让新内核和固件文件的对应关系正确。update-initramfs -u会更新 initramfs 镜像,确保启动时能加载到需要的模块和固件。
然后执行:
sudo reboot第四步:重启后验证 Bluetooth 是否恢复
重启之后,不要急着开系统设置里的蓝牙开关,先去终端确认底层是否正常:
rfkill list如果蓝牙设备状态不再是 hard blocked,说明硬件层面已经正常了。然后:
systemctl status bluetooth如果蓝牙服务正在运行,再测试 HCI 接口是否注册成功:
hciconfig -a能看到 hci0 信息说明驱动加载成功了。最后可以用bluetoothctl做一些简单的配对测试:
bluetoothctl power on scan on如果能看到周围的蓝牙设备并及时响应,说明问题已经解决。
3.4 验证:蓝牙彻底可用后再做这几件事
到这一步你的蓝牙应该能用了,但我建议你再做几件事确保长期稳定。
第一件事,确认稳定重启后的自启状态。连续重启两三次,每次开机都检查一次蓝牙是否正常工作。因为有些机器的蓝牙控制器和 Wi-Fi 共用射频前端,存在互相抢占的问题,偶尔会出现某一次开机蓝牙设备随机掉线,需要重新加载模块。这个我有一次折腾了整整半天才确定是硬件冲突不是软件问题。
第二件事,升级内核后验证 Wi-Fi 是否依然正常。升级 HWE 内核后,Wi-Fi 驱动模块也会换新版本,大部分情况下没问题,但也有小概率出现 Wi-Fi 慢、丢包的情况。如果真遇到了,多半是新的 mt7921e 驱动默认开启了某些省电特性导致的,可以用以下命令关闭:
sudo modprobe -r mt7921e sudo modprobe mt7921e disable_aspm=1如果有效,就把它写入/etc/modprobe.d/mt7921e.conf永久生效:
echo "options mt7921e disable_aspm=1" | sudo tee /etc/modprobe.d/mt7921e.conf当然,如果你的 Wi-Fi 正常就别动它,ASPM 的disable_aspm=1参数会略微增加功耗,没必要为了用不上的特性牺牲续航。
第三件事,测试耳机和音频文件传输。蓝牙能连上不等于体验没问题。建议你连一下蓝牙耳机,播放几分钟音频,确认 A2DP 音频协议工作正常。再用蓝牙传几个大文件,毕竟蓝牙音频和文件传输走的是不同 profile,问题往往藏在这种边角场景里。
4. 升级内核和更新固件这件事,不能瞎搞
4.1 内核版本怎么选:不是越新越好
MT7922 在 Linux 内核里的驱动支持有一个演进过程,我可以给你梳理一下不同版本的情况:
| 内核版本 | 蓝牙驱动支持情况 | 推荐度 |
|---|---|---|
| 5.4 | 几乎没有 mt7921e 完整支持,需要手动补丁 | 不推荐 |
| 5.8 | 开始有 mt7921e 模块,但固件缺失且 bug 多 | 谨慎使用 |
| 5.11 | 支持有所改善,但蓝牙功能仍不完善 | 不推荐主力使用 |
| 5.15 | 驱动成熟,配合新固件基本完美 | 首选 |
| 5.19 | 最稳,新特性完整,但非 LTS | 推荐但有取舍 |
| 6.x | 主线内核,支持非常好 | 依赖具体发行版支持 |
所以对你来说,5.15 HWE 内核是性价比最高的选择。它是 LTS 版本,长期维护,Ubuntu 官方会持续提供安全补丁;同时它对 MT7922 的支持已经足够成熟。
有些教程建议直接上 6.x 主线内核,我不建议这么干。原因有三点:第一,6.x 主线内核不在 Ubuntu 官方仓库里,你需要从 kernel.ubuntu.com 手动下载 deb 包,这意味着你失去了系统的自动安全更新;第二,6.x 内核发布节奏快,个别版本对某些网卡有回归 bug,你需要赌运气;第三,升级主线内核后,如果有第三方模块(比如 DKMS 驱动的 VirtualBox、NVIDIA 驱动)和新内核不兼容,你会非常痛苦。
4.2 固件不是"装一次就完事"的东西
很多人以为更新一次固件就万事大吉了,其实不是。linux-firmware 仓库更新很勤快,联发科也会根据实测反馈不断调整 mt7922 的固件版本。如果你的机器在使用过程中出现蓝牙断连、音质卡顿等问题,先别急着怀疑硬件故障,去 linux-firmware 仓库看看有没有新固件发布。
一个可行的操作是,每隔一两个月重新同步一次 linux-firmware 仓库,然后覆盖拷贝mediatek目录到/lib/firmware/。覆盖之后不用立刻重启,基础固件更新会在下次重启时生效:
cd linux-firmware git pull sudo cp -r mediatek /lib/firmware/但是这里有个坑我必须提醒你:不要随随便便把整个 linux-firmware 仓库目录全量覆盖到/lib/firmware/。因为 linux-firmware 仓库里有大量其他厂商的固件文件,某些文件可能和 Ubuntu 当前内核版本存在兼容性差异,全量覆盖容易引入新的问题。我一般只拷贝mediatek这个子目录,这样就只更新了目标芯片的固件,风险最小。
另外一个容易踩的坑是权限问题。拷贝固件文件过去之后,最好确认一下文件属主和权限:
sudo chown root:root /lib/firmware/mediatek/* sudo chmod 644 /lib/firmware/mediatek/*如果权限不对,比如出现了-rw-r--r-- 1 user user的情况,内核在加载固件时会因为无法读取文件而失败。这个问题在从 Git 仓库手动拷贝文件时特别容易遇到。
4.3 升级内核前别忘备份,这不是吓唬你
升级内核听起来简单,但如果你这台 Ubuntu 上有重要的开发环境、数据库或其他服务,升级内核之前最好做一次系统快照或者备份关键数据。特别是如果你用的是 LVM 文件系统,可以在升级前做一个 LVM 快照,万一新内核启动不了,还能快速回退到旧内核。
GRUB 里内核是共存的,所以如果升级后出现问题,手动重启在 GRUB 菜单里选"Advanced options for Ubuntu",就能看到旧内核的启动项,切回去就行。所以实际风险没有想象中那么大,但备份一份总归安心。
5. 常见问题与排查技巧实录
5.1 问题速查表
这一部分我把自己折腾过程中遇到的问题整理成了表格,方便你直接对照。
| 现象 | 可能原因 | 解决方向 |
|---|---|---|
rfkill list显示蓝牙 hard blocked | 笔记本物理开关或 BIOS 设置 | 检查键盘上的飞行模式快捷键、BIOS 里 Wireless 开关 |
dmesg报Direct firmware load for mediatek/mt7922_dual_bl.bin failed | 固件文件缺失或路径不对 | 更新 linux-firmware,确认/lib/firmware/mediatek/mt7922_dual_bl.bin存在 |
| 蓝牙能开启,但扫描不到任何设备 | 蓝牙模块没进入可发现模式,或射频被电源管理关闭 | 执行bluetoothctl power on,bluetoothctl scan on,必要时调整电源管理策略 |
| 能配对成功,但连接失败 | BlueZ 版本太旧,或 profile 不匹配 | 更新 BlueZ,或检查设备支持的蓝牙协议版本 |
| 开机蓝牙随机失效,重启后恢复 | 硬件初始化时序问题或 RF 冲突 | 更新内核和固件,或尝试关闭 Wi-Fi 的 ASPM 功能 |
| 蓝牙连接后声音卡顿断断续续 | 蓝牙模式下 Wi-Fi 干扰或者电源管理频繁切换 | 关闭 Wi-Fi 的省电模式,或更换蓝牙音频传输模式 |
这张表是个抛砖引玉,实际遇到问题还得结合自己的dmesg日志和journalctl -u bluetooth日志判断。
5.2 几个隐藏很深的坑
这里分享几个我实际踩过、网上也不太好搜到的坑,希望你能避开。
第一个坑是mt7922_dual_bl.bin存在但仍然报加载失败。这种问题通常发生在新旧固件混装的场景,比如你的系统里mediatek目录是新的,但内核模块是旧的,两者版本不匹配。旧内核驱动加载固件的路径可能是mediatek/mt7922/mt7922_dual_bl.bin而不是mediatek/mt7922_dual_bl.bin。解决方案是确认内核版本,然后让固件文件同时存在于两个路径下,或者干脆升级内核到 5.15 以上保持一致性。
第二个坑是升级完内核后蓝牙好了,但 Wi-Fi 的 5GHz 频段连不上了。MT7922 是 Wi-Fi 6E 芯片,蓝牙和 Wi-Fi 共用天线和射频,在某种模式下会有频段协调问题,特别是蓝牙开启时占用 2.4GHz 频段,会影响 Wi-Fi 的 2.4G 连接。正常来说驱动会自动协调,但新内核 + 新固件配老环境的组合下,偶尔会出问题。遇到这个情况,试试把蓝牙的省电模式关掉:
sudo hciconfig hci0 lp none sudo hciconfig hci0 lm master这条命令把蓝牙的链路策略改成 master,能缓解一部分 Wi-Fi 和蓝牙共存干扰的问题。实测下来对联想小新、华硕无畏系列的机器效果明显。
第三个坑是 BIOS 里有一个 Wireless LAN 的开关,有些厂商默认会把蓝牙和 Wi-Fi 分开控制,但有的则是合在一起。如果你的rfkill list显示蓝牙硬件被 blocked,但你的电脑又没有物理的无线开关,那十有八九是 BIOS 里把蓝牙单独禁用了。进 BIOS 看看 Wireless、Bluetooth 相关选项,改成 Enabled,这一步能解决一大批"硬件没问题但硬锁"的情况。
第四个坑比较隐蔽,部分机器在系统挂起再唤醒之后蓝牙会彻底消失,lsusb里也看不到设备。这是 USB 设备掉线的问题,因为 MT7922 的蓝牙走 USB 通道,挂起时 USB 控制器可能会把它断开。解决办法是把蓝牙设备从系统挂起时自动断电的名单里剔除。可以创建一个 systemd 服务来处理这个问题,但这个操作较复杂,如果你遇到再具体研究。大部分情况下,升级到 5.15 内核后这个问题会自动解决,因为新内核的 USB 电源管理对这类问题有明显改善。
5.3 一句忠告:先看日志再动手,别瞎试
我在网上看到很多人遇到蓝牙问题,第一反应就是重装驱动、装第三方工具、改一堆配置。其实遇见 Linux 硬件问题,最忌讳的就是盲目操作。Linux 的优势在于几乎所有问题都会在日志里留下线索,dmesg、journalctl就是你的排查利器。
遇到问题第一件事就是执行:
sudo dmesg -T | grep -Ei "bluetooth|mt7921|mt7922|firmware" sudo journalctl -u bluetooth --since "5 minutes ago"看输出再判断下一步。固件文件缺失就更新固件,模块加载失败就换内核,硬件被锁就去查 BIOS。这样能少走很多弯路。
我在实际解决过的类似问题里,有一半以上都是固件缺失或者路径不对,剩下的要么是 BIOS 设置,要么是内核版本过旧。只要路径正确、版本匹配,MT7922 的蓝牙在 Ubuntu 20.04 上完全可以正常工作,而且稳定性并不差。
6. 一些零散的实操心得
最后分享几个零散但实用的心得,给准备动手折腾的朋友做个参考。
第一,升级 HWE 内核之后,如果蓝牙问题解决了但你对系统稳定性有顾虑,可以观察一段时间再决定是否保留。HWE 内核会跟着 Ubuntu 20.04 的硬件支持更新持续获取补丁,稳定性通常是有保障的。
第二,MT7922 这个网卡在 Linux 下的社区支持其实已经很不错了,驱动和固件更新都很及时。不像某些小众芯片,几年都没人维护。所以遇到问题不用慌,大概率是配置层面的问题,而不是硬件问题。
第三,如果你手上正好有支持蓝牙的 USB 设备(比如蓝牙耳机、蓝牙鼠标),修好之后务必挨个测试一遍。蓝牙耳机主要看 A2DP 音频是否流畅,蓝牙鼠标要注意会不会休眠后断连。每个设备走的是不同 profile,有的问题要用了才知道。
第四,如果你以后升级到 Ubuntu 22.04,会发现 MT7922 的支持几乎是开箱即用的,因为新系统自带的 5.15 内核和新版 linux-firmware 已覆盖这个芯片。如果你不是必须在 20.04,完全可以直接装新系统,少折腾很多。
最后再说一个我的习惯:每次调整完内核或固件,我都会在终端里敲一遍sudo dmesg把关键信息存一份,留着以后对比。这个习惯帮我在后续几次驱动更新后快速定位了回归问题。Linux 排障这种事,经验和日志积累得越多,处理起来越快。希望这篇文档能让你少走点弯路,少熬几个夜。