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
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
- Like in the code snippet there (but in an already-existing installation instead of during the install) I copied the firmware from
$ 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 ofsudo 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 runningsudo 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 patterniwlwifi-ma-b0-gf-a0*.*
from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/ to/lib/firmware
and runsudo modprobe -r iwlwifi && sudo modprobe iwlwifi
I see now differentdmesg | grep iwl
output. I'll update this Question after a reboot.