0

Problem symptom

The WiFi is not working on a fresh install (nor the live image).
I need help understanding how to load the right driver/firmware.

As far as I can tell, the device is recognized by iwlwifi but it does not find any firmware for it.

Operating System Info
I am using Debian trixie (testing) right now, because I was hoping that I'd get new enough packages that way. I also tried stable (bookworm) but couldn't even boot to the GUI with that live image, so I switched back to trixie.

$ uname -a
Linux fake-21kc0053mz 6.9.7-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.9.7-1 (2024-06-27) x86_64 GNU/Linux

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux trixie/sid
Release:        n/a
Codename:       trixie

Hardware Info

$ lspci -nn |grep WiFi
00:14.3 Network controller [0280]: Intel Corporation Meteor Lake PCH CNVi WiFi [8086:7e40] (rev 20)

$ sudo dmesg | egrep 'Wi-Fi|Gen'
[    6.926689] thinkpad_acpi: Lenovo ThinkPad X1 Carbon Gen 12, model 21KC0053MZ
[    7.449218] iwlwifi 0000:00:14.3: Detected Intel(R) Wi-Fi 6E AX211 160MHz

$ sudo rfkill list
0: tpacpi_bluetooth_sw: Bluetooth
        Soft blocked: no
        Hard blocked: no
1: hci0: Bluetooth
        Soft blocked: no
        Hard blocked: no

$ sudo lspci -v | grep WiFi -A12
00:14.3 Network controller: Intel Corporation Meteor Lake PCH CNVi WiFi (rev 20)
        Subsystem: Intel Corporation Device 0090
        Flags: fast devsel, IRQ 18, IOMMU group 12
        Memory at 405a704000 (64-bit, non-prefetchable) [size=16K]
        Capabilities: [c8] Power Management version 3
        Capabilities: [d0] MSI: Enable- Count=1/1 Maskable- 64bit+
        Capabilities: [40] Express Root Complex Integrated Endpoint, IntMsgNum 0
        Capabilities: [80] MSI-X: Enable- Count=16 Masked-
        Capabilities: [100] Latency Tolerance Reporting
        Capabilities: [164] Vendor Specific Information: ID=0010 Rev=0 Len=014 <?>
        Kernel modules: iwlwifi

00:15.0 Serial bus controller: Intel Corporation Meteor Lake-P Serial IO I2C Controller #0 (rev 20)

No Wireless Interface

$ sudo iwconfig
lo        no wireless extensions.

enx00e04c680094  no wireless extensions.


$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: enx00e04c680094: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:e0:4c:68:00:94 brd ff:ff:ff:ff:ff:ff
    inet 192.168.158.21/24 brd 192.168.158.255 scope global dynamic noprefixroute enx00e04c680094
       valid_lft 862309sec preferred_lft 862309sec
    inet6 2001:1686:aa02:1801:a257:9b2:c8f6:ddf/128 scope global dynamic noprefixroute 
       valid_lft 7166sec preferred_lft 3566sec
    inet6 2001:1686:aa02:1801:7ab5:2654:2344:a04/64 scope global dynamic noprefixroute 
       valid_lft 7042sec preferred_lft 3442sec
    inet6 fe80::a257:9b2:c8f6:ddf/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

What I Tried

  • Intel does not list a driver for the AX211

  • Based on a quick glance at the lenovo store, it looks to me like the Gen 11 and Gen 12 (my laptop model) of the Lenovo Carbon X1 have the same WiFi card, so InstallingDebianOn/Thinkpad/X1 Carbon Gen 11/trixie would seem potentially helpful

    • Like in the code snippet there (but in an already-existing installation instead of during the install) I copied the firmware from git.kernel.org to /lib/firmware
$ mkdir firmware && cd firmware
# Load the firmware files for the WLAN modul.
$ wget -r -nd -e robots=no -A 'iwlwifi-so-a0-gf-a0*.*' --accept-regex '/plain/' https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/
# Load the firmware files for the i915 modul.
$ mkdir i915 && cd i915
§ wget -r -nd -e robots=no --accept-regex '/plain/' https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915  
  • After a sudo modprobe -r iwlwifi && sudo modprobe iwlwifi, the output of sudo dmesg | grep iwl shows that the newly-added firmware files were tried:
$ sudo dmesg | grep iwl
[    6.903352] Loading modules backported from iwlwifi
[    6.903352] iwlwifi-stack-public:master:12220:5e893e52
[    7.447491] iwlwifi 0000:00:14.3: enabling device (0000 -> 0002)
[    7.449214] iwlwifi 0000:00:14.3: Detected crf-id 0x400410, cnv-id 0x1080800 wfpm id 0x80000020
[    7.449216] iwlwifi 0000:00:14.3: PCI dev 7e40/0090, rev=0x441, rfid=0x2010d000
[    7.449218] iwlwifi 0000:00:14.3: Detected Intel(R) Wi-Fi 6E AX211 160MHz
[    7.449266] iwlwifi 0000:00:14.3: firmware: failed to load iwl-dbg-cfg.ini (-2)
[    7.449272] iwlwifi 0000:00:14.3: firmware: failed to load iwl-dbg-cfg.ini (-2)
[    7.449512] iwlwifi 0000:00:14.3: firmware: failed to load iwlwifi-ma-b0-gf-a0-89.ucode (-2)
[    7.449516] iwlwifi 0000:00:14.3: firmware: failed to load iwlwifi-ma-b0-gf-a0-89.ucode (-2)
[    7.449516] iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-ma-b0-gf-a0-89.ucode failed with error -2
[    7.449527] iwlwifi 0000:00:14.3: firmware: failed to load iwlwifi-ma-b0-gf-a0-88.ucode (-2)

...

[    7.449786] iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-ma-b0-gf-a0-59.ucode failed with error -2
[    7.449787] iwlwifi 0000:00:14.3: no suitable firmware found!
[    7.449789] iwlwifi 0000:00:14.3: minimum version required: iwlwifi-ma-b0-gf-a0-59
[    7.449790] iwlwifi 0000:00:14.3: maximum version supported: iwlwifi-ma-b0-gf-a0-89
[    7.449790] iwlwifi 0000:00:14.3: check git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
  • Lenovo has a guide on how to install debian (older version) on a different laptop model. The issues they mention there match mine (touchpad and wifi) so I tried to follow that guide's section 5 Option 1: lenovo thinkpad p53 p73 debian10 installation
    That did not help either. After then running sudo update-initramfs -u and a reboot, the wifi interface is still not present.

  • Debian unstable does not have a newer version of firmware-iwlwifi

  • I noticed just now that the dmesg output stated a different name than what I had downloaded! it wants iwlwifi-ma-b0-gf-a0-89, not 'iwlwifi-so-a0-gf-a0*.*'. When I copy files that match the pattern iwlwifi-ma-b0-gf-a0*.* from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/ to /lib/firmware and run sudo modprobe -r iwlwifi && sudo modprobe iwlwifi I see now different dmesg | grep iwl output. I'll update this Question after a reboot.

1 Answer 1

0

I got it to work now, thanks to writing this question! The main issue was that I did not pay enough attention to the exact format the dmesg output mentioned it was looking for.

To summarize:

Goal

Here's how to get the wifi working on the Lenovo X1 Carbon Gen 12 laptop, running Debian Trixie, with the Intel(R) Wi-Fi 6E AX211 wifi card.

Solution

  1. Ensure you do have the same wifi card as I do:
$ sudo dmesg | egrep 'Wi-Fi|Gen'
[    6.926689] thinkpad_acpi: Lenovo ThinkPad X1 Carbon Gen 12, model 21KC0053MZ
[    7.449218] iwlwifi 0000:00:14.3: Detected Intel(R) Wi-Fi 6E AX211 160MHz
  1. Because it is an intel WiFi card, it uses iwlwifi, so we look at the output of sudo dmesg | grep iwlwifi and see maximum version supported: iwlwifi-ma-b0-gf-a0-89

  2. Download that version of the firmware from the linux kernel website (https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/ ) by matching the pattern with a regex:

mkdir firmware
cd firmware
wget -r -nd -e robots=no -A 'iwlwifi-ma-b0-gf-a0*' --accept-regex '/plain/' https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/
sudo cp ./* /lib/firmware

This should drop some .ucode and .pnvm files there.

  1. Make the iwlwifi driver use them.
# If the modprobe errors because it is in use, rebooting should also work
sudo modprobe -r iwlwifi && sudo modprobe iwlwifi
# ensure the next time you boot it uses those firmware files
sudo update-initramfs -u

Sidenote
It is possible that somewhere along the way it complains about missing i915 firmware. I honestly don't really know what that does ... something with graphics? But the linked guide had a command that fixed that for me too (to be done before updating initramfs):

# Load the firmware files for the i915 modul.
$ mkdir i915 && cd i915
$ wget -r -nd -e robots=no --accept-regex '/plain/' https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915
$ sudo cp ./* /lib/firmware/i915

Another similar issue is outlined on askubuntu - useful in case you are missing rtl_nic firmware as well.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .