1. 为什么这块AX211网卡在Ubuntu 20.04上这么难搞
拯救者Y7000P 2023款用的是Intel AX211无线网卡,这卡在Windows下开箱即用,驱动都是现成的,插上就能连WiFi。但一到Ubuntu 20.04,情况就完全不一样了。我前后装过不下十台Y7000P 2023,每次装完Ubuntu 20.04第一件事就是发现WiFi图标不见了,设置里压根找不到无线网络选项,插网线能用,但WiFi就是死活出不来。
这个问题的根源在于内核版本。Ubuntu 20.04 LTS默认搭载的是Linux 5.4内核,而AX211这块网卡需要iwlwifi驱动配合固件文件才能正常工作,5.4内核里的iwlwifi驱动对AX211的支持非常有限,甚至根本不识别。AX211属于Intel Wi-Fi 6E AX2xx系列,这个系列在Linux内核5.10之后才逐步完善支持,5.15以后才算真正稳定。所以你在Ubuntu 20.04上装完系统,用lspci能看到网卡硬件,但ip link里就是没有wlan0或者wlp开头的接口,dmesg | grep iwl会告诉你固件加载失败或者设备不支持。
这篇文章就是把我踩过的坑、试过的方案、最终跑通的流程完整梳理一遍。不管你是刚入手Y7000P 2023想装Ubuntu双系统,还是已经装好了但WiFi用不了,都可以照着这个思路来排查和解决。我会从内核升级、固件安装、驱动配置几个层面讲清楚每一步为什么这么做,以及哪些操作容易翻车。
1.1 先确认你的网卡到底认没认出来
动手之前先做个体检,别急着瞎装驱动。打开终端,依次执行下面几条命令,把情况摸清楚。
第一条,看硬件有没有被PCI总线识别:
lspci -nn | grep -i network正常的话你会看到类似这样的输出:
00:14.3 Network controller [0280]: Intel Corporation Device [8086:51f0] (rev 01)注意那个8086:51f0,这是AX211的设备ID。如果这一步能看到,说明硬件本身没问题,PCI层面已经认到了,问题出在驱动和固件层面。如果连这一步都看不到,那可能是BIOS里无线网卡被禁用了,或者硬件接触不良,得先进BIOS检查。
第二条,看内核有没有加载iwlwifi驱动:
lsmod | grep iwl如果输出里有iwlwifi,说明驱动模块加载了。但加载了不代表能用,还得看固件有没有正确载入。
第三条,看内核日志里iwlwifi说了什么:
dmesg | grep -i iwl这一步信息量最大。常见的报错有几种:一种是firmware: failed to load iwlwifi-so-a0-gf-a0-XX.ucode,说明固件文件缺失或者版本不对;另一种是Unsupported device,说明当前内核的iwlwifi驱动压根不认识这个设备ID;还有一种是Microcode SW error detected,这种一般是固件版本和驱动不匹配导致的。
第四条,看网络接口列表:
ip link show如果只有lo和enp开头的有线接口,没有wlp开头的无线接口,那就确认了WiFi没起来。
把这四条命令的输出记下来,后面每一步操作都可以回头对比,看问题有没有推进。
1.2 为什么不能直接照搬网上的老教程
网上关于Ubuntu装无线网卡的教程很多,但大部分是针对老网卡的,比如AX200、AX201这些。AX211的情况特殊在于它属于Wi-Fi 6E,支持6GHz频段,固件文件名和加载机制跟老卡不一样。你如果照着AX200的教程去装iwlwifi-cc-a0-XX.ucode,那是肯定不行的,AX211用的是iwlwifi-so-a0-gf-a0-XX.ucode或者iwlwifi-so-a0-gf-a0.pnvm这类固件。
还有一个坑是内核版本。有些教程让你直接apt install linux-firmware就完事,但在Ubuntu 20.04上,默认源里的linux-firmware包版本太老,里面根本不包含AX211需要的固件。你装完了以为万事大吉,重启一看还是没WiFi。所以必须手动去下载最新的固件文件,放到正确的位置。
再一个坑是Secure Boot。Y7000P 2023默认开启Secure Boot,如果你编译了第三方驱动模块,签名过不了,内核直接拒绝加载。虽然iwlwifi是内核自带的,但如果你升级了内核而没处理好签名,一样会出问题。这个后面会详细讲怎么处理。
2. 核心思路:升级内核加手动补固件
解决AX211在Ubuntu 20.04上的驱动问题,核心就两条路:要么升级内核到5.15以上,要么手动给5.4内核打补丁。我推荐前者,因为升级内核是一劳永逸的,后面其他硬件兼容性也会好很多。手动打补丁适合那些绝对不能动内核的场景,比如某些生产环境锁死了内核版本,但那种情况很少见,个人用户直接升内核就行。
2.1 内核版本选择:5.15还是6.x
Ubuntu 20.04官方仓库里提供的内核版本有5.4、5.15、6.2、6.5等,通过linux-generic-hwe-20.04这个包可以安装HWE内核。我实测下来,5.15内核对AX211的支持已经足够了,稳定性和兼容性都很好。6.x内核当然也行,但没必要追新,新内核有时候会引入其他硬件的回归问题,比如显卡驱动或者电源管理。
具体操作是:
sudo apt update sudo apt install linux-generic-hwe-20.04这个命令会把内核升级到20.04 HWE的最新版本,目前是5.15系列。装完之后重启,用uname -r确认内核版本。
注意:升级内核之前,如果你装了NVIDIA闭源驱动,最好先确认一下驱动版本是否支持新内核。Y7000P 2023一般是RTX 4060,需要NVIDIA 525以上的驱动。如果驱动太老,升级内核后可能进不了图形界面。可以先切到核显模式或者用
nomodeset启动参数临时进系统。
2.2 固件文件从哪来、放哪里
内核升级到5.15之后,iwlwifi驱动本身是支持AX211的,但还需要对应的固件文件。Ubuntu 20.04的linux-firmware包即使更新到最新,也可能不包含AX211需要的特定版本固件。所以最稳妥的做法是手动从Linux Firmware官方仓库下载最新的固件。
AX211需要的固件文件主要包括:
iwlwifi-so-a0-gf-a0-XX.ucode(XX是版本号,比如77、83、89)iwlwifi-so-a0-gf-a0.pnvm
这些文件在Linux内核的firmware仓库里都能找到。你可以直接从https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git这个仓库下载,或者用git clone把整个仓库拉下来,然后复制需要的文件。
固件文件应该放到/lib/firmware/目录下。放完之后,需要更新initramfs,让系统启动时能加载到新固件:
sudo update-initramfs -u然后重启。
2.3 验证固件是否加载成功
重启之后,再次执行:
dmesg | grep -i iwl这次应该能看到类似这样的输出:
iwlwifi 0000:00:14.3: loaded firmware version 83.xxxxxxxx.0 op_mode iwlmvm iwlwifi 0000:00:14.3: Detected Intel(R) Wi-Fi 6E AX211 160MHz, REV=0x370看到loaded firmware version和Detected Intel(R) Wi-Fi 6E AX211这两行,基本就成功了。再用ip link show应该能看到wlp0s20f3或者类似的无线接口。
如果还是不行,检查一下固件文件名是否完全匹配。dmesg里会告诉你它尝试加载哪个文件名但失败了,你照着那个名字去下载对应的文件就行。
3. 实操全流程:从零到WiFi可用
下面我把完整的操作流程走一遍,你可以直接照着做。假设你已经装好了Ubuntu 20.04,能进系统,能插网线上网。
3.1 第一步:接网线,更新系统
先插上网线,确保有线网络能用。然后打开终端,更新软件源和已安装的包:
sudo apt update sudo apt upgrade -y这一步是为了确保系统是最新的,避免因为包版本太老导致后续操作出问题。
3.2 第二步:安装HWE内核
sudo apt install linux-generic-hwe-20.04 -y装完之后重启:
sudo reboot重启后确认内核版本:
uname -r应该显示5.15.0-XX-generic这样的版本号。
3.3 第三步:下载并安装AX211固件
先装个git,方便拉取固件仓库:
sudo apt install git -y然后克隆Linux Firmware仓库(这个仓库比较大,如果网速慢可以只下载需要的文件):
git clone https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git克隆完成后,进入目录,找到AX211相关的固件文件:
cd linux-firmware ls | grep iwlwifi-so-a0-gf-a0你会看到一系列文件,把最新的版本复制到/lib/firmware/:
sudo cp iwlwifi-so-a0-gf-a0-*.ucode /lib/firmware/ sudo cp iwlwifi-so-a0-gf-a0.pnvm /lib/firmware/然后更新initramfs:
sudo update-initramfs -u重启:
sudo reboot3.4 第四步:验证WiFi是否可用
重启后,检查无线接口:
ip link show如果看到wlp开头的接口,说明驱动和固件都加载成功了。然后检查NetworkManager是否识别到了WiFi:
nmcli device status应该能看到wifi设备状态是disconnected或者connected。如果显示unmanaged,需要检查NetworkManager配置。
如果一切正常,点击右上角网络图标,应该能看到WiFi列表了。
3.5 第五步:处理Secure Boot导致的问题
如果你在加载iwlwifi驱动时遇到签名相关的报错,比如Loading of module failed: Required key not available,说明Secure Boot在拦截。有两个选择:一是进BIOS关掉Secure Boot,二是给内核模块签名。关掉Secure Boot最简单,但如果你需要保留Secure Boot(比如双系统Windows那边有要求),那就得签名。
签名流程稍微复杂一点,需要生成密钥、导入MOK、签名模块。具体步骤:
# 生成密钥 openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Custom MOK/" # 导入MOK sudo mokutil --import MOK.der # 重启后会进入MOK管理界面,选择Enroll MOK,输入密码 # 签名模块 sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 MOK.priv MOK.der /lib/modules/$(uname -r)/kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko不过说实话,iwlwifi是内核自带的模块,正常情况下不需要额外签名。如果你升级了HWE内核,内核本身是Canonical签名的,Secure Boot应该能通过。只有在你自己编译内核或者编译第三方模块时才需要处理签名问题。
4. 常见问题与排查技巧实录
这一路装下来,我遇到过各种奇奇怪怪的问题,这里整理成速查表,方便你对照排查。
4.1 问题速查表
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
lspci看不到网卡 | BIOS禁用或硬件故障 | 进BIOS检查无线网卡是否启用 |
dmesg报固件加载失败 | 固件文件缺失或版本不对 | 手动下载最新固件放到/lib/firmware/ |
dmesg报Unsupported device | 内核版本太老 | 升级到5.15以上内核 |
| 有wlp接口但搜不到WiFi | 射频被禁用 | rfkill list检查,rfkill unblock all |
| WiFi能连但速度慢 | 电源管理或频段问题 | 关闭iwlwifi电源管理,检查路由器频段 |
| 重启后WiFi又没了 | 固件没进initramfs | 执行update-initramfs -u |
| Secure Boot报错 | 模块签名问题 | 关闭Secure Boot或签名模块 |
4.2 射频被软禁用的问题
有时候驱动和固件都正常,ip link也能看到wlp接口,但就是搜不到WiFi。这种情况多半是射频被软禁用了。执行:
rfkill list如果看到Soft blocked: yes,执行:
sudo rfkill unblock all然后WiFi应该就能用了。这个问题在联想笔记本上挺常见的,因为联想有自己的无线开关管理,有时候Fn+F5或者BIOS设置会影响射频状态。
4.3 电源管理导致的断流问题
AX211在Linux下有个已知问题,就是电源管理会导致WiFi间歇性断流或者速度骤降。如果你遇到WiFi用着用着突然卡住,可以试试关闭iwlwifi的电源管理:
sudo nano /etc/modprobe.d/iwlwifi.conf添加一行:
options iwlwifi power_save=0保存后更新initramfs并重启:
sudo update-initramfs -u sudo reboot这个设置会禁用WiFi网卡的省电模式,代价是笔记本续航会稍微短一点,但换来了稳定性。
4.4 双系统下Windows和Ubuntu的WiFi切换问题
如果你装了Windows和Ubuntu双系统,可能会遇到从Windows重启到Ubuntu后WiFi用不了的情况。这是因为Windows的快速启动功能会让网卡处于一种特殊状态,Linux无法正常初始化。解决方法是在Windows里关闭快速启动:
控制面板 -> 电源选项 -> 选择电源按钮的功能 -> 更改当前不可用的设置 -> 取消勾选“启用快速启动”。
另外,Windows的WiFi驱动有时候会更新网卡的固件版本,导致Linux下的固件不匹配。如果遇到这种情况,重新下载最新固件放到/lib/firmware/就行。
4.5 内核升级后NVIDIA驱动失效的补救
Y7000P 2023带的是RTX 4060,如果你之前装好了NVIDIA驱动,升级内核后可能会黑屏或者进不了桌面。这时候可以:
- 在GRUB菜单选择旧内核启动
- 卸载NVIDIA驱动:
sudo apt purge nvidia-* - 重新安装适配新内核的驱动:
sudo ubuntu-drivers autoinstall - 重启
或者更稳妥的做法是,升级内核之前先确认NVIDIA驱动版本,如果太老就先升级驱动再升内核。
5. 几个容易被忽略的细节
5.1 固件版本不是越新越好
我试过把最新版的固件塞进去,结果反而导致WiFi不稳定,频繁掉线。后来换回了一个稍旧但稳定的版本(比如83版),就一切正常了。所以如果最新固件有问题,不妨试试旧一两个版本。dmesg里会显示当前加载的固件版本号,你可以对照着换。
5.2 检查BIOS里的无线网卡设置
联想Y7000P 2023的BIOS里有个Wireless LAN选项,默认是Enabled。但如果你之前进BIOS改过设置,或者BIOS被重置过,这个选项可能被关了。进BIOS(开机按F2)-> Configuration -> Wireless LAN,确认是Enabled状态。
5.3 用iwconfig和nmcli交叉验证
ip link看到接口不代表WiFi功能正常。用iwconfig可以看更详细的无线信息:
iwconfig如果输出里wlp0s20f3的ESSID是off/any,说明还没连上。用nmcli扫描一下:
nmcli device wifi list如果能列出周围的WiFi,说明驱动和固件都没问题,剩下的就是连接配置了。
5.4 备份你的固件文件
每次重装系统或者升级内核后,固件文件可能会被覆盖或者丢失。建议把/lib/firmware/下的AX211固件备份到一个安全的地方,比如你的home目录或者U盘。下次再遇到问题,直接复制回去就行,不用重新下载。
mkdir ~/ax211-firmware-backup cp /lib/firmware/iwlwifi-so-a0-gf-a0* ~/ax211-firmware-backup/这个习惯帮我省了很多时间,尤其是帮别人装系统的时候,直接带着备份过去,几分钟就搞定。
5.5 关于银河麒麟等其他系统的参考
有些朋友可能在银河麒麟V10或者其他国产Linux上遇到AX211的问题,思路是一样的:确认内核版本、补全固件、检查射频。银河麒麟V10基于Linux 4.19内核,对AX211的支持更差,基本必须升级内核。不过银河麒麟的源和Ubuntu不一样,升级内核的方式也不同,需要从源码编译或者找第三方内核包。如果你是在银河麒麟上折腾,建议先确认系统是否允许更换内核,有些定制系统锁死了内核版本,那就只能走手动编译iwlwifi驱动的路子了,那个复杂度会高很多。
6. 我个人的实操体会
装完这么多台Y7000P 2023,我最大的感受是:别急着瞎折腾,先看清楚报错信息。dmesg | grep iwl这一条命令能解决80%的排查问题。它告诉你固件加载到哪一步失败了,是文件找不到还是版本不匹配,还是设备根本不支持。照着报错去搜,比盲目试各种教程效率高得多。
另外一个体会是,内核升级要趁早。很多人装完Ubuntu 20.04发现WiFi不能用,第一反应是去找驱动,但其实升级内核才是正道。5.15内核不仅解决了AX211的问题,对Y7000P 2023的其他硬件(比如触摸板、声卡、显卡)兼容性也更好。装完系统第一件事就是升内核,后面省心很多。
最后说一个玄学问题:有时候所有步骤都做对了,WiFi就是不出来。这时候试试完全关机再开机,而不是重启。因为重启有时候不会完全重置网卡状态,冷启动才能让固件重新加载。我遇到过两次这种情况,都是冷启动后WiFi就正常了。虽然听起来不科学,但实测有效,你可以试试。