大家好,我是冯哥的缓存。今天来聊一个让新手容易遇到的问题:装好 Linux 之后,Wi-Fi 连不上,或者根本找不到无线网卡——怎么办?
为什么 Linux Wi-Fi 经常出问题?
Windows 驱动基本上"插上就能用",因为硬件厂商主动为 Windows 开发并维护驱动。Linux 的情况不一样:
| |
|---|
| 大部分网卡厂商不维护 Linux 驱动,只提供 Windows 驱动 |
| Linux 内核内置了主流网卡驱动,但部分型号(尤其是新款)没有收录 |
| 部分网卡(如 Realtek、Broadcom)需要额外安装固件包 |
| |
好消息:Intel 和大多数 Realtek/MediaTek 网卡在 Ubuntu 22.04+ 上开箱即用,最麻烦的是 Broadcom 系列。
第一步:确认网卡型号
不管遇到什么问题,第一步都是先查清楚是什么网卡。
用命令查询
# 查看所有网络设备(含有线+无线)
lspci -nnk | grep -A3 -i "network\|wireless\|wi-fi"
或者:lspci -nnk | grep -i "network"
# 如果是 USB 网卡
lsusb | grep -i "wireless\|wifi\|network"
# 也可以直接看内核识别到的网络接口
ip link show
lspci 输出示例:
03:00.0 Network controller [0280]: Intel Corporation Wi-Fi 6 AX200 [8086:2723] (rev 1a)
Subsystem: Intel Corporation Wi-Fi 6 AX200 [8086:0084]
Kernel driver in use: iwlwifi
Kernel modules: iwlwifi
关注两个地方:
Kernel driver in useKernel driver in use
输出解读
| |
|---|
[8086:2723] | 方括号内是 PCI ID(厂商:设备),用于精确识别 ,可以把这个 ID 复制到搜索引擎查驱动 |
Kernel driver in use: iwlwifi | |
Kernel modules: iwlwifi | |
| |
💡 提示: 记下 PCI ID(如 8086:2723)或者厂商型号,去 Google 搜索 [型号] Linux driver 可以找到对应的安装方法。
第二步:查看驱动加载状态
找到网卡型号后,确认驱动是否正常加载。
# 查看无线网卡对应的内核模块是否加载
lsmod | grep -i "iwl\|rtl\|brcm\|ath\|mt76\|r8"
# 查看系统日志里有没有驱动报错
dmesg | grep -i "firmware\|wifi\|wlan\|wireless" | tail -30
# 查看当前网络接口状态
nmcli device status
nmcli device status 输出示例:
DEVICE TYPE STATE CONNECTION
enp3s0 ethernet connected 有线连接
wlp2s0 wifi disconnected --
lo loopback unmanaged --
wifi 状态 disconnected → 驱动加载了但没连,正常wifi
主流网卡厂商驱动情况一览
| | | |
|---|
| Intel | | | |
| Realtek | | | |
| MediaTek | | | |
| Qualcomm/Atheros | | | |
| Broadcom | | 内核没有 | |
下面按厂商分别介绍安装方法。
方案一:Intel 网卡——安装固件包
Intel 网卡驱动(iwlwifi)内核自带,但固件文件需要单独安装。Ubuntu 通常在安装时自动装好,但如果出现问题,可以手动补装:
# 更新软件列表
sudo apt update
# 安装 Intel 无线网卡固件
sudo apt install linux-firmware intel-microcode
# 重新加载驱动
sudo rmmod iwlwifi && sudo modprobe iwlwifi
# 检查是否生效
dmesg | grep iwlwifi | tail -10
Intel AX200/AX210 常见报错:
iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-ty-a0-gf-a0-72.ucode failed
# 如果该文件不存在,尝试更新 linux-firmware 到最新版。
解决:
sudo apt install firmware-iwlwifi
# 或者更新整个固件包
sudo apt install linux-firmware
sudo reboot
方案二:Realtek 网卡——按型号处理
Realtek 网卡分情况:
RTL8821CE 安装方法(需要网络)
# 安装编译依赖
sudo apt update
sudo apt install dkms build-essential linux-headers-$(uname -r) git
# 克隆驱动源码
git clone https://github.com/lwfinger/rtl8821ce.git
cd rtl8821ce
# 编译安装
sudo ./dkms-install.sh
# 重启生效
sudo reboot
⚠️ 注意: DKMS 驱动会在内核升级后自动重新编译,不需要手动重装。
检查 Realtek 固件包
# 安装 Realtek 无线固件
sudo apt install firmware-realtek
# 如果 apt 里没有,说明需要启用 non-free 仓库(Debian 系)
sudo add-apt-repository non-free
sudo apt update && sudo apt install firmware-realtek
方案三:Broadcom 网卡——最麻烦的情况
Broadcom(博通)的 BCM43xx 系列是 Linux 驱动问题重灾区。好消息是 Ubuntu 提供了打包好的驱动,有网的情况下一条命令搞定。
第一步:确认是 Broadcom 网卡
lspci -nnk | grep -i broadcom
# 或者
lspci -nnk | grep -i bcm
常见输出:
02:00.0 Network controller [0280]: Broadcom Inc. BCM43602 802.11ac Wireless LAN SoC [14e4:43ba]
第二步:查 Broadcom 驱动对应表
| | |
|---|
| bcmwl-kernel-source | |
| bcmwl-kernel-source | |
| bcmwl-kernel-source | |
| bcmwl-kernel-source | |
| bcmwl-kernel-source | |
| bcmwl-kernel-source | |
💡 提示: 绝大多数情况用 bcmwl-kernel-source 都能解决,不需要纠结具体型号。部分 BCM43142 需要额外安装 broadcom-sta-common。
第三步:安装驱动
# 更新软件列表
sudo apt update
# 安装 Broadcom 驱动(一条命令)
sudo apt install bcmwl-kernel-source
# 安装过程中会自动编译内核模块,需要等几分钟
# 安装完成后重启
sudo reboot
第四步:验证安装
# 检查驱动是否加载
lsmod | grep wl
# 如果看到 wl 但没接口
sudo rfkill unblock all
# 检查网络接口
nmcli device status
# 如果看到 wlan0 或 wlp2s0 的 wifi 行,说明成功
⚠️ 注意:bcmwl-kernel-source 是闭源驱动,安装时需要禁用 Secure Boot 或者为驱动签名。如果系统开启了 Secure Boot,安装过程中会弹出设置 MOK 密码的对话框,按提示操作即可。
方案四:MediaTek/Qualcomm 网卡——升级内核固件
较新的 MediaTek(MT7921/MT7922)和 Qualcomm(QCA6390/WCN6856)网卡在 Ubuntu 22.04+ 中基本免驱,但如果出现问题:
# 更新固件包(通常能解决问题)
sudo apt update
sudo apt install linux-firmware
# 重新加载 MediaTek 驱动
sudo modprobe -r mt7921e && sudo modprobe mt7921e
# 或者重新加载 Qualcomm 驱动
sudo modprobe -r ath11k_pci && sudo modprobe ath11k_pci
sudo reboot
安装后的基本验证
安装驱动重启后,用以下命令确认一切正常:
# 1. 确认无线网卡接口存在
ip link show | grep wl
# 2. 确认 NetworkManager 识别到 Wi-Fi 设备
nmcli device status
# 3. 扫描周围 Wi-Fi 热点
nmcli device wifi list
# 如果该命令卡住或没反应,先检查 nmcli device status 看 wifi 是否 disconnected 而不是 unavailable。
# 4. 连接 Wi-Fi
nmcli device wifi connect "你的WiFi名称" password "你的密码"
# 5. 确认已连接
nmcli connection show --active
驱动加载排查流程
如果装完驱动还是不行,按这个流程一步一步排查:
| | |
|---|
| lspci -nnk | grep -i network | |
| lsmod | grep <驱动名> | |
| dmesg | grep -i firmware | |
| ip link show | |
| nmcli device status | |
| | |
常见报错速查
| | |
|---|
lspci | | 检查 BIOS 是否禁用了无线网卡(部分笔记本有 BIOS 开关) |
Kernel driver in use | | |
dmesg | | sudo apt install linux-firmware |
| | sudo rfkill unblock all |
rfkill list | | sudo rfkill unblock wifi |
rfkill list | | 检查笔记本的物理无线开关(或 Fn+F2/F3 等快捷键) |
bcmwl-kernel-source | | |
| | 重新运行 dkms-install.sh 或重装驱动包 |
各品牌网卡安装路线速查
| | |
|---|
| sudo apt install linux-firmware | |
| git clone | |
| sudo apt install bcmwl-kernel-source | |
| sudo apt install linux-firmware | |
| sudo apt install linux-firmware | |
💡 提示: 如果当前完全没有有线网络,也没法用手机共享热点,请看下篇的离线安装方法——用另一台电脑提前把驱动包下好,拷进 U 盘安装。
小结
| |
|---|
| lspci -nnk |
| lsmod |
| 通常免驱,缺固件时 apt install linux-firmware |
| Ubuntu 22.04+ 多数免驱;老型号用 DKMS |
| apt install bcmwl-kernel-source |
| |
| 先查 rfkill list,再查 nmcli device status |
📌 下篇预告: 无网络情况下如何离线安装 Wi-Fi 驱动,以及蓝牙设备的配对与常见问题处理。