☰
Ubuntu 20.04 没有Wi-Fi图标?驱动与Netplan配置修复指南
2026/10/5 7:43:28 网站建设 项目流程

简介:这份PDF文档面向刚安装Ubuntu 20.04却无法连接Wi-Fi、系统托盘缺少无线图标的用户,尤其适合Linux入门者与运维新手排查网卡驱动缺失或网络配置错误的问题。资源包共1个PDF文件,大小约27KB,内容以图文步骤形式整理,便于离线查阅与对照操作。文档围绕两条解决路径展开:一是通过有线网络更新软件源并安装Broadcom无线网卡驱动bcmwl-kernel-source,重启后恢复Wi-Fi识别;二是借助ip a查看网卡状态,编辑/etc/netplan下的YAML配置文件,补充wifis、access-points与dhcp4等字段,再用netplan try与netplan apply使配置生效。读者可据此掌握驱动安装与Netplan配置两类排错思路,快速定位无Wi-Fi图标、无法搜索热点等常见故障。目前已有33077人学习下载,适合需要系统化解决Ubuntu无线网络问题的读者参考。

1. 装完 Ubuntu 20.04 没有 Wi-Fi 图标,先别急着重装

刚装完 Ubuntu 20.04,右上角网络菜单里只有有线选项,Wi-Fi 图标压根不出现,设置面板里也找不到无线网卡——这个场景我见过太多次。多数情况下不是硬件坏了,而是系统没加载对应的无线驱动,或者 Netplan 的 YAML 配置里根本没声明wifis段。Ubuntu 20.04 默认用 Netplan 做网络抽象层,桌面环境再通过 NetworkManager 接管,两层之间任何一层缺了无线配置,图标就不会冒出来。

这篇笔记拆的是两种能落地的修法:一种走驱动安装路线,适合 Broadcom 这类需要额外固件的网卡;另一种走 Netplan 配置路线,适合驱动已就位但配置没写对的情况。两条路我都实际跑过,下面把命令、参数、判断依据和翻车点逐条摊开。如果你正在搜「ubuntu20.04没有wifi选项」或者「ubuntu20.04连接wifi的方法」,这篇可以直接照着复现。

2. 先判断是驱动缺失还是配置缺失:三条命令定位问题

动手之前得先分清病因。驱动没装和配置没写,表现都是「没有 Wi-Fi 图标」,但处理路径完全不同。我一般按下面三步走,基本五分钟内能定性。

2.1 用 ip a 和 lspci 确认无线网卡是否存在

第一步看内核有没有识别到无线网卡。打开终端,执行:

# 列出所有网络接口,看有没有 wlan0 或 wlp 开头的接口 ip a # 列出 PCI 设备,过滤出网络控制器,确认无线网卡型号 lspci | grep -i network

ip a的输出里如果只有lo和eth0(或有线接口),没有wlan0、wlp2s0这类无线接口,说明内核层面就没把无线网卡驱动起来。这时候lspci通常会显示一个 Network controller,比如Broadcom Inc. ... BCM4360之类。记住这个型号,它决定了你该装哪个驱动包。

如果ip a里能看到wlan0,但图标还是不出现,那问题多半在 Netplan 配置或 NetworkManager 没接管,直接跳到第 4 章。

2.2 用 rfkill 和 dmesg 排查软阻塞与固件加载失败

有些机器无线网卡被 rfkill 软阻塞了,表现和没驱动一样。执行:

# 查看无线设备是否被软/硬阻塞 rfkill list # 查看内核日志里无线网卡相关的报错 dmesg | grep -i -E "iwlwifi|brcm|ath|firmware"

rfkill list如果显示Soft blocked: yes,用sudo rfkill unblock wifi解掉即可。dmesg里如果出现firmware: failed to load或no suitable firmware found,那就是固件缺失,走第 3 章的驱动安装路线。如果dmesg里网卡已经正常 probe,没有报错,那驱动没问题,走第 4 章的 Netplan 配置路线。

2.3 判断该走驱动路线还是配置路线

把上面两条的结论对一下,决策表如下:

现象ip a 有无 wlan0dmesg 报错走哪条路
无 Wi-Fi 图标,无无线接口无固件加载失败第 3 章装驱动
无 Wi-Fi 图标,无无线接口无无报错但 lspci 有网卡第 3 章装驱动
无 Wi-Fi 图标,有 wlan0有无第 4 章改 Netplan
有 wlan0 但连不上有无第 4 章改 Netplan

提示:lspci里如果压根没有 Network controller,那可能是硬件没插好或者被 BIOS 禁用了,先查硬件再折腾系统。

这一步做完,你手里应该有一个明确结论:是驱动问题还是配置问题。下面两章分别展开。

3. 方法一:装 bcmwl-kernel-source 驱动,解决 Broadcom 网卡不识别

Broadcom 的无线网卡在 Ubuntu 20.04 上是最常见的「没驱动」案例。BCM43142、BCM4360、BCM4352 这些芯片,开源驱动b43或brcmfmac往往带不动,需要装闭源的bcmwl-kernel-source。这个包会编译一个wl.ko内核模块,专门驱动这些芯片。

3.1 先用有线网络更新源并安装驱动包

因为无线不能用,第一步必须用网线把机器接入互联网。确认eth0能拿到 IP 后,依次执行:

# 更新软件源列表,确保能拉到最新的驱动包 sudo apt update # 安装 Broadcom 无线网卡闭源驱动 sudo apt-get install bcmwl-kernel-source # 安装完成后重启系统,让内核加载新模块 sudo reboot

apt update的作用是刷新/etc/apt/sources.list里配置的软件源索引,不更新的话可能找不到bcmwl-kernel-source这个包。bcmwl-kernel-source安装过程中会调用dkms编译内核模块,所以终端里会看到编译输出,正常现象。重启后内核会自动加载wl模块,ip a里应该就能看到wlan0了。

3.2 验证驱动是否加载成功

重启后别急着点图标,先确认模块加载状态:

# 查看 wl 模块是否已加载 lsmod | grep wl # 再次列出网络接口,确认 wlan0 出现 ip a # 查看无线网卡是否被 rfkill 阻塞 rfkill list

lsmod | grep wl如果输出里有wl且被其他模块引用,说明驱动加载成功。ip a里出现wlan0后,右上角 Wi-Fi 图标通常几秒内就会冒出来。如果rfkill list显示Soft blocked: yes,执行sudo rfkill unblock wifi解掉。

3.3 驱动装完仍无图标时的排查顺序

有时候驱动装了、模块也加载了,图标还是不出现。按这个顺序查:

第一,确认NetworkManager在运行:systemctl status NetworkManager,如果没跑就sudo systemctl start NetworkManager。第二,检查/etc/NetworkManager/NetworkManager.conf里[ifupdown]段的managed是不是false,如果是false,NetworkManager 不会接管wlan0,改成true后重启服务。第三,看dmesg | grep wl有没有报错,如果提示module verification failed或unknown symbol,多半是内核版本和驱动不匹配,需要装linux-headers-$(uname -r)后重新sudo dpkg-reconfigure bcmwl-kernel-source。

注意:bcmwl-kernel-source只对 Broadcom 部分型号有效。如果你的网卡是 Intel 或 Realtek,装这个包没用,得换对应的iwlwifi固件或rtl驱动。

4. 方法二:改 Netplan YAML 配置,让 wlan0 正确接入

驱动没问题、ip a里能看到wlan0,但 Wi-Fi 图标不出现或者连不上,问题就在 Netplan 配置。Ubuntu 20.04 服务端和部分桌面安装默认用 Netplan 生成网络配置,配置文件放在/etc/netplan/下,通常是50-cloud-init.yaml或01-network-manager-all.yaml。

4.1 查看并理解现有 Netplan 配置文件

先看当前配置长什么样:

# 列出 netplan 目录下的配置文件 ls /etc/netplan/ # 查看具体配置内容 cat /etc/netplan/50-cloud-init.yaml

一个典型的、没有无线配置的文件长这样:

network: ethernets: eth0: dhcp4: true optional: true version: 2

这里只有ethernets段,没有wifis段,所以系统根本不知道要去连 Wi-Fi。version: 2是 Netplan 的配置版本,20.04 固定用 2。dhcp4: true表示 IPv4 走 DHCP 自动获取。optional: true表示这个接口不是必须的,启动时拿不到 IP 也不会阻塞启动流程。

4.2 写入 wifis 段并配置 SSID 与密码

在原有文件基础上补wifis段。用sudo nano /etc/netplan/50-cloud-init.yaml编辑,改成:

network: ethernets: eth0: dhcp4: true optional: true version: 2 wifis: wlan0: dhcp4: true access-points: "你的Wi-Fi名称": password: "你的Wi-Fi密码"

几个参数必须说清楚。wlan0是无线接口名,用ip a确认你的实际名字,有的机器是wlp2s0,写错就不生效。access-points下面的 SSID 要用双引号包起来,如果 SSID 里有空格或特殊字符,不加引号会解析失败。password同理,明文写在 YAML 里,注意文件权限,建议sudo chmod 600 /etc/netplan/50-cloud-init.yaml。

提示:YAML 对缩进极其敏感,必须用空格,不能用 Tab。缩进错一格,netplan try就会报错。

4.3 netplan try 与 netplan apply 的正确用法

改完配置不要直接apply,先用try:

# 测试配置,120 秒内无确认会自动回滚 sudo netplan try # 确认无误后应用配置 sudo netplan apply # 如果 NetworkManager 没接管,重启它 sudo systemctl restart NetworkManager

netplan try会临时应用配置并启动一个 120 秒倒计时,期间网络如果断了你没按回车确认,它会自动回滚到之前的配置。这个机制是后悔药,防止你写错配置把自己 SSH 断掉。确认网络正常后按回车,再执行netplan apply永久生效。netplan apply之后如果图标还没出现,重启NetworkManager服务,它会重新扫描无线接口并接管。

4.4 配置生效后验证连接状态

应用配置后,用下面几条命令确认:

# 查看 wlan0 是否拿到 IP ip a show wlan0 # 查看当前连接的 Wi-Fi 信息 nmcli device wifi list # 查看 NetworkManager 的连接状态 nmcli connection show

ip a show wlan0里如果有inet地址,说明 DHCP 成功。nmcli device wifi list能列出周围热点,说明无线接口工作正常。如果nmcli提示Device 'wlan0' not managed,回到 3.3 节检查NetworkManager.conf的managed设置。

5. 避坑与排查:五条血泪经验

这一章是我自己踩过的坑,每条按「现象 → 原因 → 解决」写,遇到对应情况直接对号入座。

5.1 现象:netplan apply 后 SSH 直接断连,再也连不上

原因:配置文件里把有线eth0的dhcp4改错或者删掉了optional: true,apply瞬间有线接口被重置,SSH 会话断开。解决:如果还能物理接触机器,本地登录后把配置改回去;如果只能远程,用netplan try而不是apply,它会在断连后自动回滚。我现在的习惯是改 Netplan 之前先sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak,留个后悔药。

5.2 现象:YAML 里 SSID 带空格,netplan try 报 invalid YAML

原因:SSID 或密码里有空格、冒号、特殊字符,没加引号,YAML 解析器把它当成了键值分隔符。解决:所有 SSID 和密码统一用双引号包起来,例如"My Home WiFi"。如果密码里有双引号本身,用单引号包外层。

5.3 现象:装了 bcmwl-kernel-source 后重启,wlan0 还是不出来

原因:DKMS 编译失败,模块没生成。常见于内核头文件缺失或 Secure Boot 开启导致模块签名不通过。解决:先sudo apt install linux-headers-$(uname -r),再sudo dpkg-reconfigure bcmwl-kernel-source重新编译。如果 Secure Boot 开着,进 BIOS 关掉,或者用mokutil签名模块。dmesg | grep wl会告诉你具体是编译失败还是签名失败。

5.4 现象:Wi-Fi 图标出现但搜不到任何网络

原因:无线网卡被 rfkill 硬阻塞,或者 regulatory domain 限制。解决:rfkill list看Hard blocked是不是yes,如果是,检查笔记本的无线开关或 BIOS 设置。Hard blocked是物理开关控制的,软件解不掉。如果是Soft blocked,sudo rfkill unblock wifi即可。另外iw reg set CN可以设置正确的 regulatory domain,避免信道被限制。

5.5 现象:netplan 配置正确,但每次重启后 Wi-Fi 不自动连

原因:access-points里只写了 SSID 和密码,但没设dhcp4: true,或者 NetworkManager 和 systemd-networkd 两个渲染器冲突。解决:确认wlan0段下有dhcp4: true。如果同时装了 NetworkManager 和 systemd-networkd,在 YAML 里加renderer: NetworkManager明确指定渲染器,避免两个服务抢管理权。

6. 进阶:用 nmcli 接管无线连接与多 SSID 优先级

Netplan 适合把配置固化到文件里,但日常切换 Wi-Fi、调整优先级,用nmcli更顺手。这一章说几个我常用的进阶操作。

6.1 用 nmcli 直接连接并保存多个 SSID

如果不想改 YAML,可以直接用命令行连:

# 扫描周围 Wi-Fi nmcli device wifi list # 连接指定 SSID 并保存密码 nmcli device wifi connect "SSID名称" password "密码" # 查看已保存的连接 nmcli connection show

nmcli device wifi connect会自动在 NetworkManager 里创建一条连接配置,重启后自动重连。相比 Netplan 写 YAML,这种方式更适合桌面环境频繁切换网络的场景。已保存的连接可以用nmcli connection modify "SSID名称" connection.autoconnect yes确保开机自动连。

6.2 设置多 SSID 优先级与自动切换

家里和办公室有多个 Wi-Fi 时,可以设优先级:

# 查看当前连接的优先级 nmcli -f NAME,AUTOCONNECT,AUTOCONNECT-PRIORITY connection show # 设置某个 SSID 的优先级,数字越大越优先 sudo nmcli connection modify "办公室WiFi" connection.autoconnect-priority 10 sudo nmcli connection modify "家里WiFi" connection.autoconnect-priority 5

autoconnect-priority默认是 0,数值越大优先级越高。当多个已知 SSID 同时可用时,NetworkManager 会优先连优先级高的那个。这个参数在 Netplan 里没有直接对应项,所以多 SSID 场景我一般直接用 nmcli 管理,Netplan 只负责把wlan0交给 NetworkManager 接管。

6.3 验证无线链路质量的几个命令

连上之后想确认信号和速率:

# 查看当前连接详情,包括信号强度和速率 nmcli device wifi show # 查看无线接口的链路统计 iw dev wlan0 link # 查看无线接口支持的频段和速率 iw phy phy0 info | grep -A 5 "Band"

nmcli device wifi show会输出当前 SSID、信号强度百分比、速率和安全性。iw dev wlan0 link给出更底层的链路信息,包括信号 dBm 值和收发速率。信号低于 -70 dBm 时连接会不稳定,考虑换个位置或换 5GHz 频段。

6.4 一个我常用的排查习惯

从那以后我每次装完 Ubuntu 20.04,第一件事就是ip a和lspci | grep -i network各跑一遍,把网卡型号和接口名记下来,再决定走驱动路线还是配置路线。这个习惯帮我省掉了至少三次「重装系统才发现是驱动没装」的冤枉路。改 Netplan 之前先备份,改完先netplan try再apply,这两步强制走一遍,基本不会再把自己网络搞断。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询