解决Killer AX1690i无线网卡在Ubuntu 22.04下无法被驱动识别的问题

问题

本周需要在一台型号为NUC13RNGi9的Intel NUC 13 Extreme Kit上安装Ubuntu 22.04系统。安装系统成功后,发现机器自带的Killer Wi-Fi 6E AX1690i没有被识别,无法使用无线上网。查看dmesg,发现报告iwlwifi: No config found for PCI dev 7af0/1692, rev=0x430, rfid=0x3010d000,这该如何解决?

探索

尝试更换backport-iwlwifi-dkms驱动

首先进行搜索,找到了https://askubuntu.com/questions/1456628/wifi-not-working-on-intel-nuc-ubuntu-22-04 这个帖子。这个帖子提供了一个修改内核模块源码并重新编译来驱动无法识别VID/PID问题的解决方案。帖子里面详细描述了安装说明,但是照着提示做遇到了两个问题:

  • Ubuntu 22.04自带的backport-iwlwifi-dkms的版本是9858而不是9904
  • dkms install backport-iwlwifi不能覆盖默认的iwlwifi内核模块

首先安装backport-iwlwifi-dkms

接下来按照文中的说明,将/usr/src/backport-iwlwifi-9858/drivers/net/wireless/intel/iwlwifi/pcie/drv.c中的

这一行替换为

然后再进行编译安装

注意上述命令中install带了–force参数。不加这个参数,是无法把编译好的内核模块覆盖系统原始自带的内核模块的。我在这里被坑了好几次,以为是代码改错了没有效果,实际是编译好的内核模块根本没有安装上。

最后重启机器,按照帖子的说明问题应该解决了。然而事情没有这么顺利,重启后发现系统依然没有识别到无线网卡,查看dmesg发现了新的错误提示

解决backport-iwlwifi-dkms驱动提示缺失iwl_mei_is_connected符号的问题

这次是报告iwl_mei_is_connected符号找不到。按照经验,99%的概率是不该有这个符号但却把相关符号的调用给打开了。首先还是使用搜索来看看。这次比较精准的搜到了一个在launchpad上报告的bug,根据相关提示,找到了Bug 1962704 Re: iwlwifi: Unknown symbol iwl_mei_is_connected的邮件列表。

邮件列表中包含了两次相关的修复,核心是说MEI功能现在还不急着打开,每次都是在当时的内核版本中,把开启相关配置的内核版本参数调大到下个版本。。。然后最后一次修复针对5.15的内核进行的,现在内核升级到了5.19。。。于是我就遇到了问题。。。

根据邮件列表的说明,这个问题在应该在Ubuntu新的版本的代码中得到了解决,但是在22.04上确实还存在。

解决方案也很粗暴,接着把问题向后推。。。我打开了/usr/src/backport-iwlwifi-9858/drivers/net/wireless/intel/iwlwifi/Kconfig这个文件,将第138行的!KERNEL_5_15替换成了!KERNEL_5_20,调整后的代码如下

23/06/26更新: 现在替换前的内容变成了KERNEL_5_17,请注意修改

然后重新进行编译安装

驱动调整完成。

解决

然后重启机器,终于可以看到无线网卡的提示,也可以正常搜索到无线网络了。问题至此解决。

发表评论

为防机器,验证码请直接输入4个数字1

*