跳到正文
Xtreme Light
返回

Pop!_OS 24.04 下为 MediaTek MT7902 网卡手动安装 Wi-Fi 与蓝牙驱动

编辑本文

📌 前言

在安装 Linux 系统时,硬件驱动兼容性始终是一个绕不开的话题。尤其是网卡这类外设,若未能被内核原生支持,安装完成后可能会发现 Wi-Fi 和蓝牙均无法使用。

本文记录了在一台使用 MediaTek MT7902 无线网卡的电脑上,安装 Pop!_OS 24.04 LTS 后,通过手动编译第三方驱动解决 Wi-Fi 与蓝牙问题的完整过程。本文方法同样适用于 Ubuntu 24.04 LTS 及其衍生发行版。

💻 测试环境

项目详细信息
操作系统Pop!_OS 24.04 LTS(基于 Ubuntu 24.04 Noble)
内核版本7.0.11-76070011-generic(System76 自研内核)
主板ASUS TUF GAMING A620M-PLUS WIFI
CPUAMD Ryzen 5 7600 6-Core Processor(12 线程)
显卡AMD Radeon RX 6650 XT + AMD Radeon Raphael(核显)
问题网卡MEDIATEK Corp. Device 7902 (MT7902)
PCI 地址0a:00.00000:0a:00.0

⚠️ 安装前准备

在开始任何操作之前,请务必完成以下两项准备工作。

1. 连接有线网络

由于需要下载源码和编译工具,必须保证电脑能够上网。建议使用以下任一方式:

2. 关闭 Secure Boot

重启电脑,进入 BIOS/UEFI 设置,找到 Secure Boot 选项并设为 Disable

原因:本文使用的驱动是社区开发的第三方驱动,未经官方签名。若 Secure Boot 保持开启,Linux 内核会拒绝加载此类驱动。

📡 第一部分:Wi-Fi 驱动安装

第 1 步:安装编译依赖

sudo apt update
sudo apt install build-essential dkms git linux-headers-$(uname -r)

第 2 步:屏蔽冲突驱动

这一步可以防止系统自带的驱动干扰正常工作:

# 添加到黑名单
echo "blacklist mt7902" | sudo tee /etc/modprobe.d/blacklist-mt7902.conf
echo "blacklist mt7921e" | sudo tee -a /etc/modprobe.d/blacklist-mt7902.conf

# 更新 initramfs 并重启
sudo update-initramfs -u
sudo reboot

第 3 步:克隆并编译驱动源码

重启后,再次确认网络已连接:

# 克隆驱动仓库
git clone https://github.com/hmtheboy154/gen4-mt7902.git
cd gen4-mt7902

# 使用 DKMS 注册,便于内核更新后自动重建驱动
sudo cp -r . /usr/src/mt7902-1.0
sudo dkms add -m mt7902 -v 1.0
sudo dkms build -m mt7902 -v 1.0
sudo dkms install -m mt7902 -v 1.0

# 安装固件并更新模块依赖
sudo make install_fw
sudo depmod -a

第 4 步:加载驱动并绑定设备

# 加载驱动模块
sudo modprobe cfg80211
sudo modprobe mt7902

# 清除驱动覆盖并绑定设备(请将地址替换为你自己的 PCI 地址)
echo "" | sudo tee /sys/bus/pci/devices/0000:0a:00.0/driver_override
echo "0000:0a:00.0" | sudo tee /sys/bus/pci/drivers/wlan/bind

💡 若执行第二条命令时提示 “设备或资源忙”,这通常表示驱动已成功加载。请运行 ip aiwconfig 确认无线网卡是否出现。

第 5 步:修复休眠/唤醒崩溃问题

MT7902 驱动存在一个已知问题:电脑合盖休眠或睡眠后唤醒时,可能会导致系统死机。创建以下脚本可自动规避:

sudo nano /lib/systemd/system-sleep/rmmod-mt7902

在编辑器中粘贴以下内容:

#!/bin/sh
case "$1" in
  pre)
    modprobe -r mt7902 2>/dev/null || true
    ;;
esac

保存(Ctrl+XYEnter)后,赋予执行权限:

sudo chmod +x /lib/systemd/system-sleep/rmmod-mt7902

🎧 第二部分:蓝牙驱动安装

Wi-Fi 驱动安装成功后,蓝牙仍无法使用,需要单独安装蓝牙专用驱动。

第 1 步:克隆蓝牙专用分支

git clone https://github.com/hmtheboy154/mt7902 -b bluetooth_backport btusb_mt7902

第 2 步:编译并安装

cd btusb_mt7902
make -j8
sudo make install
sudo make install_fw

第 3 步:加载蓝牙驱动

# 移除冲突驱动
sudo rmmod btusb
sudo rmmod btmtk

# 加载新驱动
sudo modprobe btusb_mt7902

第 4 步:永久屏蔽冲突驱动

如果不执行这一步,重启电脑后 btusbbtmtk 会自动加载回来,与 btusb_mt7902 产生冲突:

# 创建黑名单配置文件
echo "blacklist btusb" | sudo tee -a /etc/modprobe.d/blacklist-bluetooth.conf
echo "blacklist btmtk" | sudo tee -a /etc/modprobe.d/blacklist-bluetooth.conf

# 更新 initramfs
sudo update-initramfs -u

完成后重启电脑,蓝牙应能自动生效。

第 5 步:验证蓝牙功能

# 查看蓝牙服务状态
sudo systemctl status bluetooth

# 列出蓝牙设备
hcitool dev
# 或使用
bluetoothctl list

若输出中包含 hci0 等设备,说明蓝牙已成功加载。

🧪 验证结果

Wi-Fi 验证

# 查看无线网卡是否出现
ip a | grep -E "^[0-9]+:"
# 预期输出应包含 wlan0 或 wlp* 等无线设备

# 查看驱动加载情况
sudo lshw -C network | grep -A 5 "MEDIATEK"

蓝牙验证

# 扫描蓝牙设备(需先进入蓝牙控制台)
bluetoothctl scan on

若能在系统设置中打开蓝牙并成功配对设备,则说明一切正常。

⚠️ 已知限制与注意事项

问题说明
5GHz Wi-Fi 不稳定目前该驱动对 5GHz 频段的支持尚不完善,建议优先连接 2.4GHz 网络
休眠唤醒可能崩溃已通过 system-sleep 脚本修复,测试正常
内核更新后需重装?由于使用了 DKMS,内核更新后驱动应自动重建。若出现问题,可手动重新执行 dkms install
仅适用于 MT7902本文方法仅适用于 MediaTek MT7902 芯片,其他网卡请勿照搬

📚 参考资料


编辑本文
分享这篇文章:

上一篇
你好,世界