Linux Ubuntu 20.04.6 Intel WiFi6 Ax411 1690i Ax1690i Killer 解决无线网卡识别不出来问题

简介: Linux Ubuntu 20.04.6 Intel WiFi6 Ax411 1690i Ax1690i Killer 解决无线网卡识别不出来问题

项目场景:

网卡型号:英特尔® Killer™ Wi-Fi 6E AX1690 i/s

ubuntu 版本

uname -a
Linux kuanli 5.15.0-91-generic #101~20.04.1-Ubuntu SMP Thu Nov 16 14:22:28 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
cat /proc/version
Linux version 5.15.0-91-generic (buildd@lcy02-amd64-061) (gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #101~20.04.1-Ubuntu SMP Thu Nov 16 14:22:28 UTC 2023
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:  Ubuntu 20.04.6 LTS
Release:  20.04
Codename: focal

问题描述

Windows 11 下可以识别

ubuntu 20.04 识别不出 英特尔® Killer™ Wi-Fi 6E AX1690 i/s 网卡

官方文档说明支持 windows,linux 操作系统。


原因分析:

WiFi - 6E 网卡新推出,Linux 驱动未在适用于 ubuntu 20.04 的 linux-firmware 中集成。


解决方案:

参考官网另一解决方案,分为如下三步骤:

使用软件包管理器(如 APT)安装自动导入的 Iwlwifi 驱动程序

逐一运行以下命令并重启电脑。如果仍未检测到/使用 AX1650,可以向下滚动并尝试旧的 Backport 步骤。

sudo add-apt-repository ppa:canonical-hwe-team/backport-iwlwifi
sudo apt-get update
sudo apt-get install backport-iwlwifi-dkms
reboot

一、下载最新的 Git 和 Build-Essential 软件包

sudo apt update
sudo apt-get install -y git
sudo apt-get install -y build-essential

二、下载 Iwlwifi-Firmware.git 代码库

git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
cd linux-firmware
sudo cp iwlwifi-* /lib/firmware/
cd ..

三、为当前设置创建反向移植的 Iwlwifi 驱动程序

3.1 Debug

直接运行如下指令产生报错

git clone https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi.git
cd backport-iwlwifi
sudo make defconfig-iwlwifi-public
sudo make -j4

产生报错:

ake[5]: “conf”已是最新。
#
# configuration written to .config
#
Building backport-include/backport/autoconf.h ... done.
  CC [M]  /home/kuanli/backport-iwlwifi/compat/main.o
In file included from ./include/linux/workqueue.h:9,
                 from ./include/linux/srcu.h:21,
                 from ./include/linux/notifier.h:16,
                 from ./arch/x86/include/asm/uprobes.h:13,
                 from ./include/linux/uprobes.h:49,
                 from ./include/linux/mm_types.h:14,
                 from ./include/linux/buildid.h:5,
                 from ./include/linux/module.h:14,
                 from /home/kuanli/backport-iwlwifi/backport-include/linux/module.h:3,
                 from /home/kuanli/backport-iwlwifi/compat/main.c:1:
/home/kuanli/backport-iwlwifi/backport-include/linux/timer.h:71:19: error: static declaration of ‘timer_shutdown’ follows non-static declaration
   71 | static inline int timer_shutdown(struct timer_list *t)
      |                   ^~~~~~~~~~~~~~
In file included from /home/kuanli/backport-iwlwifi/backport-include/linux/timer.h:4,
                 from ./include/linux/workqueue.h:9,
                 from ./include/linux/srcu.h:21,
                 from ./include/linux/notifier.h:16,
                 from ./arch/x86/include/asm/uprobes.h:13,
                 from ./include/linux/uprobes.h:49,
                 from ./include/linux/mm_types.h:14,
                 from ./include/linux/buildid.h:5,
                 from ./include/linux/module.h:14,
                 from /home/kuanli/backport-iwlwifi/backport-include/linux/module.h:3,
                 from /home/kuanli/backport-iwlwifi/compat/main.c:1:
./include/linux/timer.h:188:12: note: previous declaration of ‘timer_shutdown’ was here
  188 | extern int timer_shutdown(struct timer_list *timer);
      |            ^~~~~~~~~~~~~~
In file included from ./include/linux/workqueue.h:9,
                 from ./include/linux/srcu.h:21,
                 from ./include/linux/notifier.h:16,
                 from ./arch/x86/include/asm/uprobes.h:13,
                 from ./include/linux/uprobes.h:49,
                 from ./include/linux/mm_types.h:14,
                 from ./include/linux/buildid.h:5,
                 from ./include/linux/module.h:14,
                 from /home/kuanli/backport-iwlwifi/backport-include/linux/module.h:3,
                 from /home/kuanli/backport-iwlwifi/compat/main.c:1:
/home/kuanli/backport-iwlwifi/backport-include/linux/timer.h:76:19: error: static declaration of ‘timer_shutdown_sync’ follows non-static declaration
   76 | static inline int timer_shutdown_sync(struct timer_list *t)
      |                   ^~~~~~~~~~~~~~~~~~~
In file included from /home/kuanli/backport-iwlwifi/backport-include/linux/timer.h:4,
                 from ./include/linux/workqueue.h:9,
                 from ./include/linux/srcu.h:21,
                 from ./include/linux/notifier.h:16,
                 from ./arch/x86/include/asm/uprobes.h:13,
                 from ./include/linux/uprobes.h:49,
                 from ./include/linux/mm_types.h:14,
                 from ./include/linux/buildid.h:5,
                 from ./include/linux/module.h:14,
                 from /home/kuanli/backport-iwlwifi/backport-include/linux/module.h:3,
                 from /home/kuanli/backport-iwlwifi/compat/main.c:1:
./include/linux/timer.h:187:12: note: previous declaration of ‘timer_shutdown_sync’ was here
  187 | extern int timer_shutdown_sync(struct timer_list *timer);
      |            ^~~~~~~~~~~~~~~~~~~
make[6]: *** [scripts/Makefile.build:297:/home/kuanli/backport-iwlwifi/compat/main.o] 错误 1
make[5]: *** [scripts/Makefile.build:560:/home/kuanli/backport-iwlwifi/compat] 错误 2
make[4]: *** [Makefile:1911:/home/kuanli/backport-iwlwifi] 错误 2
make[3]: *** [Makefile.build:13:modules] 错误 2
make[2]: *** [Makefile.real:101:modules] 错误 2
make[1]: *** [Makefile:43:modules] 错误 2
make: *** [Makefile:30:default] 错误 2

需要下载指定分支的仓库,如下为解决方案:

git clone -b release/core76 https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi.git
cd backport-iwlwifi
sudo make defconfig-iwlwifi-public
sudo make -j4
sudo make install

打开

/home/kuanli/backport-iwlwifi/drivers/net/wireless/intel/iwlwifi/pcie

drv.c 文件 搜索 gf4

运行命令:

dmesg | grep iwl

得到

[    2.631224] Loading modules backported from iwlwifi
[    2.631225] iwlwifi-stack-public:release/core76:10829:145c0812
[    2.731028] iwlwifi 0000:00:14.3: enabling device (0000 -> 0002)
[    2.761155] iwlwifi 0000:00:14.3: Detected crf-id 0x480410, cnv-id 0x80400 wfpm id 0x80000030
[    2.761194] iwlwifi 0000:00:14.3: PCI dev 51f1/1692, rev=0x370, rfid=0x3010d000
[    2.764223] iwlwifi 0000:00:14.3: api flags index 2 larger than supported by driver
[    2.764245] iwlwifi 0000:00:14.3: WRT: Invalid time point 28 for host command TLV
[    2.764374] iwlwifi 0000:00:14.3: WRT: Failed to allocate TLV 0x1000007, ret -22, (ext=0)
[    2.764377] iwlwifi 0000:00:14.3: TLV_FW_FSEQ_VERSION: FSEQ Version: 0.0.2.41
[    2.764946] iwlwifi 0000:00:14.3: loaded firmware version 79.27f1c37b.0 so-a0-gf4-a0-79.ucode op_mode iwlmvm
[    2.867927] iwlwifi 0000:00:14.3: Detected Killer(R) Wi-Fi 6E AX1690i 160MHz Wireless Network Adapter (411NGW), REV=0x370
[    3.023059] iwlwifi 0000:00:14.3: WFPM_UMAC_PD_NOTIFICATION: 0x20
[    3.023071] iwlwifi 0000:00:14.3: WFPM_LMAC2_PD_NOTIFICATION: 0x0
[    3.023080] iwlwifi 0000:00:14.3: WFPM_AUTH_KEY_0: 0x90
[    3.023089] iwlwifi 0000:00:14.3: CNVI_SCU_SEQ_DATA_DW9: 0x960
[    3.023879] iwlwifi 0000:00:14.3: loaded PNVM version e28bb9d7
[    3.024641] iwlwifi 0000:00:14.3: RFIm is deactivated, reason = 4
[    3.035580] iwlwifi 0000:00:14.3: Detected RF GF, rfid=0x3010d000
[    3.102553] iwlwifi 0000:00:14.3: base HW address: 28:11:a8:62:46:11
[    3.131475] iwlwifi 0000:00:14.3 wlp0s20f3: renamed from wlan0
[    3.767983] iwlwifi 0000:00:14.3: WFPM_UMAC_PD_NOTIFICATION: 0x20
[    3.768040] iwlwifi 0000:00:14.3: WFPM_LMAC2_PD_NOTIFICATION: 0x0
[    3.768049] iwlwifi 0000:00:14.3: WFPM_AUTH_KEY_0: 0x90
[    3.768059] iwlwifi 0000:00:14.3: CNVI_SCU_SEQ_DATA_DW9: 0x960
[    3.780642] iwlwifi 0000:00:14.3: RFIm is deactivated, reason = 4

找到其中一行

[    2.761194] iwlwifi 0000:00:14.3: PCI dev 51f1/1692, rev=0x370, rfid=0x3010d000

为 51f1/1692 ,修改 drv.c 文件中对应值,再次编译安装即可。

要强制机器从启动开始就使用驱动程序,可能需要使用该命令:

update-initramfs -u

重新启动电脑并验证是否正常。

四、问题

上述解决方案可以很好地解决此问题,但是当升级Linux内核之后需要重复操作

五、补充

Git 仓库

我们维护了四个软件源:

  • iwlwifi-fixes 包含当前内核发布周期的修复版本
  • iwlwifii-next 包含下一个内核发布周期的功能
  • iwlwifi/linux-firmware 为官方 linux-firmware 树提供源代码。它包含早期发布的版本,或尚未合并到主线 linux-firmware 中的内容。
  • iwlwifi/backport-iwlwifi.git 是一个基于 backport 的树,只包含 iwlwifi / mac80211 / cfg80211 的提交。此树非常适合分叉。

固件

如果你的发行版尚未安装固件(检查软件包),你可以从 linux-firmware.git 获取最新固件。

如果从 linux-firmware.git 获取,则必须将文件复制到系统的适当位置。这个适当的位置(同样)取决于你的系统发行版。一般来说,你可以在发行版的 udev 脚本中找到这个位置,大多数发行版的默认位置是 /lib/firmware。

安装固件的方法很简单:

cp iwlwifi-*.{ucode,pnvm} /lib/firmware/


目录
相关文章
|
4月前
|
Linux
Linux(5)WIFI/BT调试笔记
Linux(5)WIFI/BT调试笔记
242 0
|
21天前
|
Ubuntu 网络安全 数据安全/隐私保护
ubuntu server连接wifi教程
本文提供了一个简化Ubuntu Server在Raspberry Pi系统上配置过程的脚本"config_ubuntu_server",包括自动和手动两种方法来设置root权限、SSH配置,并连接WiFi,同时支持无密码SSH访问,适合初学者和高级用户。
41 3
|
4月前
|
Ubuntu Linux 测试技术
linux系统中wifi移植方法
linux系统中wifi移植方法
99 1
|
11月前
|
Ubuntu Linux 芯片
linux系统中wifi驱动的配置与编译实现方法
linux系统中wifi驱动的配置与编译实现方法
474 1
|
12月前
|
网络协议 物联网 Linux
嵌入式Linux系列第9篇:使用WIFI
嵌入式Linux系列第9篇:使用WIFI
|
Linux API C语言
linux 下手动编译安装无线网卡驱动
先参照 《本地yum源安装GCC 》安装好gcc hp的笔记本上安装了CentOS6.3,没有安装无线网卡驱动,安装这个驱动,在Google上找了好多资料,最后终于解决了这个问题。在这里做点记录,希望也能帮到别人。
1566 0
|
13天前
|
Linux 网络安全 Python
linux后台运行命令screen的使用
linux后台运行命令screen的使用
50 2
linux后台运行命令screen的使用
|
13天前
|
Ubuntu Linux
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
124 3
|
9天前
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
166 73
|
2天前
|
Linux Shell
Linux 中 Tail 命令的 9 个实用示例
Linux 中 Tail 命令的 9 个实用示例
20 6
Linux 中 Tail 命令的 9 个实用示例