
简介这份PDF文档面向Ubuntu 20.04用户专门解决无线网络无法连接、系统无WiFi图标等常见问题适合刚接触Ubuntu的新手以及遇到驱动或配置兼容性故障的进阶用户。方法一针对Broadcom博通无线网卡详细展示sudo apt update、安装bcmwl-kernel-source并重启生效的完整过程方法二则从Netplan配置文件入手演示如何查看网卡名称、编辑YAML、填写SSID与密码并通过netplan try/apply验证配置避免因修改错误导致断网。文档还强调有线联网、备份配置、检查错误信息等关键排错意识。资源含1个PDF文件整个压缩包约36KB轻量便携可随时查阅。目前已有20710人浏览学习对于急需解决Ubuntu 20.04 WiFi连接问题的用户来说是一份高效直接的参考手册。1. 为什么 Ubuntu 20.04 连接 Wi-Fi 之前先想清楚走哪条路Ubuntu 20.04 连接 Wi-Fi 这件事真正让人头疼的通常不是「不会连」而是「明明连上了却没有网」或者干脆「系统里根本没有 Wi-Fi 图标」。这和 20.04 所处的软件栈过渡期有关网络管理从 ifupdown 换到了 Netplan图形控制中心调整过几轮内核停在 5.4 但对新出的无线网卡支持不完整。于是同一个问题在不同机器上会有完全不同的答案。这篇文章把连接路径收敛成两条一条是桌面环境里依赖 NetworkManager 的图形连接适合刚装完系统、双系统切换或者 VMware 里跑 Ubuntu 20.04 的人另一条是绕开桌面直接用 wpa_supplicant 命令行连适合树莓派这类无显示环境也适合桌面图标消失、只能远程进场救火的场景。两条路的本质区别只在一件事——由谁去跟无线网卡对话。2. 在 Ubuntu 20.04 里先分清无线网络栈再选 GUI 还是命令行2.1 无线链路的分工驱动、wpa_supplicant、NetworkManager、桌面Ubuntu 20.04 的无线连接不是一层东西从上到下大致是桌面环境GNOME 的状态栏图标→ NetworkManager负责扫描结果、连接配置、IP 分配→ wpa_supplicant负责 WPA/WPA2 握手→ cfg80211/mac80211 内核模块 → 无线网卡驱动。图形界面点一下「连接」背后其实被这四个环节依次处理了一遍。「方法一」用的是默认的完整链路NetworkManager 同时承担了扫描、配置和 IP 管理wpa_supplicant 由它在后台通过 D-Bus 拉起。「方法二」是砍掉桌面和 NetworkManager让 wpa_supplicant 单独干活这时 IP 分配也要自己解决。理解这条链路才能解释一个常见现象为什么手动启动 wpa_supplicant 之后iw dev显示已关联但ping网关依然不通——因为还没人帮你拿 IP。很多人卡在这一步其实不是 Wi-Fi 没连上而是 DHCP 没跑。2.2 动手前用三个命令查网卡和开关状态2.2.1 确认网卡型号和驱动是否被内核识别先跑下面三条命令把无线网卡的底细摸清楚lspci -nnk | grep -iA2 wireless # 查看 PCIe 无线网卡及内核驱动 lsusb # 查看 USB 无线网卡如 RTL8811CU dmesg | grep -iE wifi|wlan|firmware | tail -20 # 看驱动加载和固件报错lspci -nnk里-nnk的含义是同时显示设备编号-nn和内核驱动-k。重点看Network controller那一行下面有没有Kernel driver in use。如果显示的是UNCLAIMED说明内核已经识别到硬件但驱动或固件没有加载成功如果这一行直接消失则可能是网卡被 BIOS 或虚拟机设置屏蔽了。dmesg里最常见的报错是Failed to load firmware这种问题在 Intel 和 Realtek 网卡上各有不同的解决办法。2.2.2 确认无线开关没有被 rfkill 软禁用接着看系统软件开关rfkill list nmcli radio wifirfkill 是 Linux 的无线开关总闸分硬开关笔记本机身按键和软开关系统设置。rfkill list里如果 wlan 显示soft blocked: yes直接执行sudo rfkill unblock wifi再配合nmcli radio wifi on把它彻底打开。Ubuntu 20.04 上有一类很典型的故障笔记本的 Fn 组合键关过 Wi-Fi重启后系统误判为软禁用图形界面里 Wi-Fi 图标整体消失rfkill list一看全被 block。这种情况盲目重启没用解掉 rfkill 再等两秒就好。2.3 常见无线网卡驱动的识别表和故障预判芯片/驱动常见设备20.04 内核对它的态度典型故障iwlwifiIntel 3160/8260/9560/AX200/AX2105.4 内核支持到 AX200AX210 可能要开 HWE 内核频繁掉线、Microcode SW errorath10k_pciQualcomm QCA6174/QCA9377支持一般需要固件包扫描列表为空、连上秒断rtl8821ce / rtw88Realtek 8821CE/8852BE低端本、USB 卡5.4 内置支持不完整wlan0不存在、驱动无法编译brcmfmac树莓派 BCM43455 等官方镜像开箱即用用 5.4 内核是稳定的换内核才出问题驱动层面还有一个容易踩的坑很多人插上 USB 无线网卡后直接看ifconfig -a发现没有 wlan0就以为网卡坏了。实际应该先看lsusb里有没有这个设备再看dmesg里驱动有没有报语法错误。Ubuntu 20.04 的 5.4 内核驱动对 2022 年后新出的芯片普遍支持不好这类问题比起反复重装驱动正确的出路是装 HWE 内核sudo apt install linux-generic-hwe-20.04。3. 方法一桌面环境用 NetworkManager 连上 Wi-Fi配好自动重连3.1 先确认右上角图标是 NetworkManager 还是只剩电源图标Ubuntu 20.04 桌面右上角的 Wi-Fi 图标实际由 NetworkManager 提供它的小程序叫 nm-applet。如果图标整个消失先别急着怀疑驱动按顺序查三件事systemctl status NetworkManager看服务是否存活ps aux | grep nm-applet看面板进程是否还在rfkill list看是不是被软禁用了。这里有一个容易被忽略的交叉场景VMware 里的 Ubuntu 20.04 无网络十有八九不是无线问题而是虚拟网卡类型没配对。VMware 默认给虚拟机的是 e1000e 有线网卡如果你在虚拟机设置里选了「桥接模式」但宿主机本身走的是 Wi-Fi桥接的往往是宿主机的 USB 无线网卡虚拟机里自然连不上无线网络。这种情况的正确解是要么给虚拟机加一块 NAT 模式的网络适配器要么确认宿主机的无线网卡真的被 VMware 列入桥接列表而不是在 Ubuntu 里折腾驱动。3.2 通过图形界面连 Wi-Fi 的完整步骤图形连接本身没有太多花头但在 20.04 上要养成两个习惯。第一连接前先打开右上角菜单确认 Wi-Fi 开关是开启状态开启后稍等两秒再点选网络不要让界面在扫描还没完成时就反复点击。第二连接成功后立刻打开「设置 → Wi-Fi → 已连接网络旁边的齿轮」把「自动连接」勾上否则下一次重启系统还要手动点一次。如果用的是双系统Windows 里休眠后直接切到 Ubuntu 会导致无线网卡状态异常图形界面表现为「已连接但无法上网」。我一般会先做一次nmcli networking off nmcli networking on让 NetworkManager 重置设备状态。这个操作等效于把右上角的网络开关关掉再打开但比图形界面更快而且不影响已保存的 Wi-Fi 密码。3.3 GUI 失效时把同样的配置用 nmcli 命令行执行桌面图标点不动的时候nmcli 是同一个 NetworkManager 的命令行入口能做的事和图形界面完全一致。连接一个已知密码的 Wi-Fi最小命令是nmcli radio wifi on # 打开无线射频 nmcli dev wifi list # 列出可扫描到的 AP nmcli dev wifi connect HomeSSID password YourPassword name home5g nmcli con mod home5g connection.autoconnect yes ipv4.method auto nmcli con up home5gnmcli dev wifi connect会当场激活连接并把配置保存为一条新的连接记录name home5g给这条记录起个便于识别的名字con mod把自动连接打开ipv4.method auto明确用 DHCP。这里有个细节如果你之前连过同一个 Wi-Fi 但密码已经换了直接再跑wifi connect会提示连接失败因为旧配置里的密码还在。正确做法是先查旧连接名然后只改密码nmcli con show # 找到旧连接名 nmcli con modify home5g wifi-sec.psk new-password nmcli con up home5g图形界面的「忘记网络」按钮在命令行里对应的就是nmcli con delete home5g删掉之后重新wifi connect。注意nmcli dev wifi connect和nmcli con up的差别前者是从无到有创建配置后者是激活已有配置排查问题时先分清你现在处在哪个阶段。注意如果右上角 Wi-Fi 图标显示开启但扫描列表是空的先跑rfkill list和nmcli radio不要急着重启 NetworkManager。重启服务会丢掉当前所有已连接的网络包括有线连接。4. 方法二无桌面环境用 wpa_supplicant/Netplan 命令行连接 Wi-Fi4.1 为什么绕开 NetworkManager 反而更稳树莓派装 Ubuntu 20.04 Server、无显示器的工控机、或者被桌面搞崩只剩远程终端的场景图形界面根本不可用这时需要的是最小依赖方案。还没彻底坏掉的 NetworkManager 也可以命令行操作但如果你正在排查的问题恰恰是它本身就得换一条更底层的路直接用 wpa_supplicant 跟网卡对话。wpa_supplicant 是 Ubuntu 20.04 预装的 WPA 认证守护进程默认由 NetworkManager 以 D-Bus 模式拉起。手动接管时最稳妥的顺序是先停掉 NetworkManager防止它和 wpa_supplicant 抢网卡然后生成配置文件再启动 wpa_supplicant 让网卡完成 4 次握手最后分配 IP。这个顺序里最容易出错的是最后一步很多人看到iw dev wlan0 link显示 connected 就以为大功告成结果发现上不了网原因只是没有跑 DHCP。4.2 用 wpa_passphrase 生成配置文件而不是手写 PSKWPA2-PSK 的配置文件中需要的是 PSK 的 256 位散列值不是明文密码。手写容易写错20.04 提供了专用工具sudo mkdir -p /etc/wpa_supplicant sudo wpa_passphrase MyWiFi your-password /etc/wpa_supplicant/wpa_supplicant_wlan0.conf cat /etc/wpa_supplicant/wpa_supplicant_wlan0.conf生成的配置文件内容大约是这个形式network{ ssidMyWiFi #pskyour-password psk1a2b3c4d5e6f... # 这里是 wpa_passphrase 计算出的散列值 }wpa_passphrase的输入参数第一个是 SSID第二个是明文密码输出会同时包含注释掉的明文和真正的散列值因此这个文件本身的权限必须收紧。执行sudo chmod 600 /etc/wpa_supplicant/wpa_supplicant_wlan0.conf防止其他用户读到注释里的明文密码。如果 Wi-Fi 开启了隐藏 SSID还需要在network块里手动追加一行scan_ssid1让 wpa_supplicant 主动扫描而非被动等待。4.3 临时手动连接验证网卡和驱动是否正常临时连一次验证硬件链路是否健康用以下三条命令sudo ip link set wlan0 up # 把无线网卡拉起 sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant_wlan0.conf -D nl80211 sudo dhclient wlan0 # 通过 DHCP 获取 IP参数说明-B让 wpa_supplicant 转入后台运行-i指定无线接口名不一定是 wlan0可以通过iw dev查看-c指定配置文件-D nl80211指定驱动接口这是 5.4 内核的标准选择。执行后依次验证iw dev wlan0 link看是否关联、ip addr show wlan0看是否有 IP。如果握手失败wpa_supplicant 会直接输出4-Way Handshake failed优先怀疑密码散列错误或路由器开启了 MAC 过滤而不是怀疑驱动。手动方式的问题在于每次重启都要重新执行一遍不适合长期使用。常见做法是把它做成 systemd 服务sudo systemctl enable wpa_supplicantwlan0但这个服务只负责拉起 wpa_supplicant不负责分配 IP。所以长期方案我一般用 Netplan 接管。4.4 长期无桌面方案Netplan 的 wifis 块交给 networkdUbuntu 20.04 的网络配置统一由 Netplan 管理无桌面服务器上用 Netplan 配置 Wi-Fi会把 wpa_supplicant 和 DHCP 一起管起来重启后自动生效。编辑/etc/netplan/01-network-manager-all.yaml或新建99-wifi.yamlnetwork: version: 2 renderer: networkd wifis: wlan0: access-points: MyWiFi: password: your-password dhcp4: true optional: true # 找不到网络时不要阻塞启动流程renderer: networkd表示由 systemd-networkd 接管这是无桌面环境的标准选择如果机器同时装有桌面环境默认 renderer 是 NetworkManager那就沿用方法一不要在这里混用。optional: true很实用否则开机时无线网络不可用会导致 systemd 等 90 秒才进入登录界面。配置写好后执行sudo netplan generate sudo netplan apply然后看networkctl status wlan0验证。下表是手动 wpa_supplicant 方式最常踩的几个坑现象报错或日志特征原因处理wpa_supplicant 起不来nl80211: Driver does not support authentication驱动接口不匹配换-D wext或检查内核模块握手失败4-Way Handshake failedPSK 散列不正确或路由器拒绝重新运行 wpa_passphrase已关联但无 IPdhclient超时网卡没拿到 DHCP 地址手动指定静态 IP 排查路由器接口找不到wlan0: No such device驱动未加载或设备名不是 wlan0iw dev查看真实接口名和 NetworkManager 冲突连接反复断开两个进程同时操纵网卡先停 NetworkManager 再手动跑提示Netplan 的 wifis 块一旦启用就不要在同一台机器上手动运行 wpa_supplicant 命令两边会同时向下发包表现为连接建立后立刻断开。5. Ubuntu 20.04 Wi-Fi 掉线时用日志和握手状态把病根找出来无线不稳定时图形界面的「已断开」提示几乎没有信息量真正能定位问题的只有三样东西wpa_supplicant 的握手日志、内核的驱动日志、以及实时的信号强度曲线。先开调试日志。手动前台运行一次把调试级别拉满sudo systemctl stop NetworkManager sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant_wlan0.conf -D nl80211 -dd-dd是最高调试级别前台运行能看到完整的 4 次握手过程。正常情况下会依次出现WPA: Key negotiation completed和Connected如果停在EAPOL之前反复重试多半是路由器侧问题或者密码散列不对。这条命令运行期间不要开任何其他网络工具避免干扰。排查完按 CtrlC 结束再sudo systemctl start NetworkManager恢复正常服务。驱动层的间歇性掉线看内核日志比看 NetworkManager 日志更直接sudo journalctl -k -u wpa_supplicant --since 2 hours ago sudo dmesg | grep -iE iwlwifi|rtw88|ath10k|firmwareIntel 网卡如果频繁出现Microcode SW error detected首先要试的不是重装驱动而是禁用电源管理sudo iw dev wlan0 set power_save off。这个设置在 20.04 上重启后会失效要持久化就写一个 systemd 服务在ExecStart里执行这一条命令。Realtek 网卡则多半是固件加载时序问题重启网卡或重新 modprobe 驱动能临时恢复。最后介绍一个被低估的验证技巧用 watch 持续观察握手状态和信号强度比任何 GUI 仪表盘都直观watch -n 2 iw dev wlan0 link; cat /proc/net/wireless/proc/net/wireless里的 signal 数值是百分比正常应在 50 以上。如果 signal 值在 70 和 30 之间来回跳基本可以定位为物理距离或干扰问题如果 signal 稳定但依然掉线问题大概率出在驱动或省电策略上。配合 NetworkManager 的connection.autoconnect-retries 3参数一起使用可以做到掉线后自动重连最多三次把这个参数写进连接配置的方法是nmcli con mod home5g connection.autoconnect-retries 3然后再nmcli con up home5g激活。排查到最后如果仍然复现就把dmesg里带iwlwifi或rtw88的每一行都 grep 出来驱动报什么就信什么界面上的感叹号只是它的回声。本文还有配套的精品资源点击获取