ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

Ubuntu 18.04 WiFi驱动问题排查与修复全攻略

Ubuntu 18.04 WiFi驱动问题排查与修复全攻略 1. 问题定位与诊断思路遇到Ubuntu 18.04系统开机后找不到WiFi选项或者网络设置里空空如也这确实是个让人头疼的经典问题。我处理过无数次类似的工单新手和老手都可能栽在这个坑里。别急着重装系统99%的情况下这都不是系统坏了而是驱动或配置没对上号。首先我们要像医生一样先“望闻问切”搞清楚问题到底出在哪一层。最核心的判断依据是你的无线网卡硬件是否被系统识别。打开终端输入lspci命令并配合grep过滤。对于大多数笔记本内置的无线网卡这个命令能告诉你它的“身份证”。lspci | grep -i network或者更精确地查找无线设备lspci | grep -i wireless如果这条命令有输出比如显示“Realtek Semiconductor Co., Ltd. RTL8822CE 802.11ac PCIe Adapter”或“Intel Corporation Wireless-AC 9560”那么恭喜你的硬件至少被主板和系统总线识别了。问题大概率出在驱动层面。如果lspci完全没有相关输出那可能是硬件开关被关闭了。很多笔记本有物理的无线开关FnFx组合键或者BIOS/UEFI里禁用了无线模块。先去检查一下这些开关并重启进入BIOS确认无线功能是开启状态。另一个关键命令是rfkill它专门管理无线设备的软硬块状态。rfkill list这个命令会列出所有无线设备WiFi、蓝牙等及其阻塞状态。如果看到WiFi设备后面跟着“Soft blocked: yes”或“Hard blocked: yes”那就意味着它被锁住了。“Hard blocked”通常对应物理开关“Soft blocked”则是系统软件层面的禁用。你可以用rfkill unblock all来解除所有软阻塞。注意rfkill unblock all会同时启用WiFi和蓝牙。如果你只想启用WiFi可以先rfkill unblock wifi。诊断的最后一步是看内核是否加载了正确的驱动模块。使用lsmod命令查看已加载的模块并用grep过滤常见无线驱动关键词。lsmod | grep -E “(rtw|rtl|iwlwifi|ath|brcm)”常见的驱动模块前缀iwlwifi对应英特尔rtw、rtl对应瑞昱ath对应高通brcm对应博通。如果这里没有输出或者输出很少那驱动很可能没装上或没加载。2. 驱动问题的深度解析与解决方案驱动问题是Ubuntu 18.04 WiFi失效的罪魁祸首尤其是对于较新的硬件。Ubuntu 18.04的内核版本相对较老其自带的硬件驱动库可能无法覆盖2018年后发布的大量新网卡。这时候我们需要手动介入。2.1 确定网卡型号与所需驱动首先精准定位你的网卡型号。使用lspci -vnn或lspci -k命令可以获取更详细的信息包括内核试图使用的驱动。lspci -vnn -s $(lspci | grep -i network | awk ‘{print $1}’)在输出中重点关注两行Subsystem:这一行往往包含了网卡的具体型号。Kernel driver in use:和Kernel modules:显示了当前正在使用和可用的驱动模块。如果这里是空的或者显示stub、bcma-pci-bridge之类的通用模块那就说明专用驱动缺失。记下你的网卡型号例如 RTL8822CE然后去搜索引擎查找“Ubuntu 18.04 RTL8822CE driver”。通常GitHub是这类开源驱动最集中的地方。2.2 安装缺失的驱动以常见型号为例驱动安装无非几种方式使用apt安装官方仓库的驱动、添加PPA仓库、从DKMS源码编译。风险从低到高。方案A通过apt和linux-firmware安装很多时候驱动模块ko文件是随着内核一起的但对应的固件文件/lib/firmware下的文件可能缺失。首先更新系统并安装完整的固件包sudo apt update sudo apt upgrade sudo apt install linux-firmware安装后重启看看WiFi是否出现。这对许多英特尔和部分瑞昱网卡有效。方案B添加硬件厂商或社区维护的PPA对于一些流行但官方支持不佳的网卡社区会有维护的PPA。例如针对瑞昱的RTL88x2bu系列网卡sudo add-apt-repository ppa:kelebek333/kablosuz sudo apt update sudo apt install rtl88x2bu-dkms安装DKMS动态内核模块支持包的好处是它会在你每次更新内核后自动重新编译驱动模块一劳永逸。这是我最推荐给普通用户的方式。方案C从GitHub源码编译安装终极手段当没有现成的Deb包或PPA时就需要手动编译。以常见的RTL8821CU驱动为例安装编译依赖sudo apt update sudo apt install git dkms build-essential bc克隆驱动源码仓库git clone https://github.com/brektrou/rtl8821CU.git cd rtl8821CU使用DKMS方式编译安装sudo ./dkms-install.sh # 或者如果没有安装脚本常见步骤是 sudo dkms add . sudo dkms build rtl8821cu/版本号 sudo dkms install rtl8821cu/版本号这里的“版本号”通常可以在源码目录下的dkms.conf文件中找到。重启系统。实操心得编译安装前务必查看GitHub仓库的README.md文件。里面通常有详细的安装说明、已知问题和卸载方法。另外编译环境必须完整否则会报奇怪的错误。如果安装失败可以尝试sudo make clean清理后再来。2.3 驱动黑名单与冲突解决有时系统可能加载了错误的驱动导致正确的驱动无法工作。这就需要将错误的驱动加入黑名单。例如如果系统为你的Realtek网卡错误加载了rtl8xxxu驱动而你需要使用r8822be就需要屏蔽前者。创建黑名单配置文件sudo nano /etc/modprobe.d/blacklist-rtl8xxxu.conf在文件中加入blacklist rtl8xxxu保存退出然后更新initramfs并重启sudo update-initramfs -u sudo reboot3. 网络管理器配置与系统设置排查驱动装好了硬件也识别了但WiFi还是连不上或者列表不刷新问题可能就出在软件配置层。Ubuntu 18.04默认使用NetworkManager来管理网络。3.1 检查并重启NetworkManager服务首先确认NetworkManager服务正在运行systemctl status NetworkManager如果状态不是active (running)或者有错误日志尝试重启它sudo systemctl restart NetworkManager有时候NetworkManager的配置可能因为异常关机或软件冲突而损坏。可以尝试彻底清理并重建其状态sudo systemctl stop NetworkManager sudo rm /var/lib/NetworkManager/NetworkManager.state sudo systemctl start NetworkManager3.2 使用nmcli命令行工具深度管理图形界面有时会“卡住”这时命令行工具nmcli就非常强大了。它可以列出所有网络设备、连接和状态。nmcli device status这个命令会清晰列出所有网络接口DEVICE、类型TYPE、状态STATE和连接名CONNECTION。如果你的WiFi设备通常是wlan0状态是unavailable而不是disconnected那可能还是驱动或射频阻塞问题。如果是disconnected则说明设备就绪只是没连接。扫描可用的WiFi网络sudo nmcli device wifi rescan sudo nmcli device wifi list如果扫描不到任何网络但设备状态正常可能是区域代码regdomain设置问题或者路由器信道不支持。可以尝试手动设置区域sudo iw reg set US # 设置为美国区域信道选择最宽然后重启NetworkManager。3.3 图形界面故障与替代方案如果网络设置的图形界面完全打不开或者点击没反应除了重启NetworkManager还可以尝试重置网络设置图标sudo apt install --reinstall network-manager-gnome如果问题依旧可以考虑暂时使用更底层的wpa_supplicant工具来连接WiFi以判断是否是NetworkManager前端的问题。编辑WPA配置文件添加你的网络sudo nano /etc/wpa_supplicant/wpa_supplicant.conf添加以下内容替换你的SSID和密码network{ ssid“你的WiFi名称” psk“你的WiFi密码” }停止NetworkManager手动启动wpa_supplicantsudo systemctl stop NetworkManager sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf sudo dhclient wlan0如果这样能获取到IP并上网那就证明驱动和硬件是好的问题纯粹出在NetworkManager的配置或图形界面上。4. 内核、固件与电源管理疑难杂症有些问题藏得更深涉及到内核版本、固件兼容性甚至是省电功能带来的麻烦。4.1 升级内核以获取原生驱动支持Ubuntu 18.04.04 LTS 初始内核是 4.15对较新硬件的支持有限。升级到更新的HWE硬件启用内核可以一次性获得大量新驱动。这是解决很多新型号网卡问题的有效方法。# 安装最新的HWE内核 sudo apt install --install-recommends linux-generic-hwe-18.04安装完成后重启系统在GRUB菜单中选择新内核启动。新内核包含了更新的linux-firmware包可能直接让你的网卡工作。注意事项升级内核有一定风险虽然很小。建议在操作前确保你有有线网络连接或者已经下载好了所有必要的包。升级后如果出现其他兼容性问题可以在GRUB启动时选择旧内核进入系统。4.2 禁用有问题的电源管理功能无线网卡的电源管理功能PCIe ASPM有时会导致设备在休眠或低功耗状态下无法被正确唤醒表现为WiFi时有时无或者重启后消失。可以尝试在内核启动参数中禁用它。编辑GRUB配置sudo nano /etc/default/grub找到GRUB_CMDLINE_LINUX_DEFAULT这一行在引号内的参数末尾添加pcie_aspmoff例如修改后可能是GRUB_CMDLINE_LINUX_DEFAULT“quiet splash pcie_aspmoff”保存文件更新GRUB配置sudo update-grub重启电脑。4.3 固件文件的手动放置极少数情况下你需要从驱动源码或第三方网站下载特定的固件文件.bin或.ucode文件并手动放到/lib/firmware目录下。操作前务必确认固件文件的准确名称和路径。例如对于某些英特尔网卡可能需要特定版本的iwlwifi固件。你需要根据网卡的具体PCI ID去英特尔开源网站查找对应的固件文件。下载正确的固件文件。将其复制到/lib/firmware目录可能需要特定子目录如/lib/firmware/iwlwifi-...。修改文件权限sudo chmod 644 /lib/firmware/你的固件文件.bin重新加载驱动模块sudo modprobe -r iwlwifi # 移除模块 sudo modprobe iwlwifi # 重新加载模块5. 终极排查清单与备用方案当你尝试了以上所有方法仍然无效时可以按照这个清单进行最后一次系统性的排查或者考虑备用方案。5.1 系统性排查清单步骤命令/操作预期结果与后续动作1. 硬件识别lspci | grep -i wireless有输出进入步骤2。无输出检查物理开关、BIOS设置或考虑硬件故障。2. 射频阻塞rfkill list若显示 blocked执行rfkill unblock all。3. 驱动模块lsmod | grep -E “(iwlwifi|rtw)”及dmesg | grep -i firmwarelsmod应有对应模块dmesg不应有“firmware failed to load”错误。有错误则需安装固件。4. 网络服务systemctl status NetworkManagerip link show wlan0NetworkManager应为activeip link显示wlan0状态为UP。若非UP尝试sudo ip link set wlan0 up。5. 连接扫描sudo nmcli dev wifi list应列出周边WiFi。若为空尝试sudo iw dev wlan0 scan仍为空则可能是驱动或区域问题。6. 连接尝试nmcli dev wifi connect “SSID” password “密码”尝试直接连接。失败则查看journalctl -u NetworkManager -f获取实时错误日志。7. 内核与固件uname -rapt list –installed | grep linux-firmware考虑升级HWE内核和完整固件包。5.2 备用连接方案在WiFi问题解决前你总得让系统能上网以下载驱动和更新。这里有几个备选方案USB有线网卡最稳妥的方案。找一个免驱的USB转以太网适配器插上就能用通过有线网络解决问题。手机USB网络共享将安卓或iPhone通过USB线连接到电脑在手机上开启“USB网络共享”功能。Ubuntu通常能将其识别为有线网络立即获得互联网连接。离线下载驱动包在另一台能上网的电脑上根据你的网卡型号从GitHub或PPA仓库下载好所需的.deb安装包或源码用U盘拷贝过来安装。5.3 最后的考虑硬件兼容性与系统版本如果所有软件方法都失败了需要考虑两个可能性硬件兼容性极少数非常冷门或特别新的网卡可能确实没有Linux驱动。这时更换一个已知兼容性良好的USB无线网卡如某些采用MT7612U芯片的型号是最快的解决方案。系统版本过旧Ubuntu 18.04已于2023年4月结束标准支持。如果你的硬件比较新强行在旧系统上适配驱动可能事倍功半。考虑备份数据升级到Ubuntu 22.04 LTS或更新版本新系统对新硬件的开箱即用支持要好得多。我自己就曾为一块2019年出的笔记本网卡在18.04上折腾了两天编译了各种驱动版本都不稳定。最后升级到20.04一切迎刃而解。有时候选择比努力更重要尤其是在技术迭代飞快的今天。对于生产环境或追求稳定的用户在购买硬件前花几分钟查一下主流Linux发行版对其的支持情况能省去后面无数麻烦。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表