Working Around Firmware Lag in Debian 13
Note: The title of the post used to be "Working Around A Kernel Regression in Debian 13". However, after finally actually solving the issue, I find that title to be inaccurate and a little click-baity.
The initial post describes the symptoms of the issue and a workaround I chose that allowed me to stay on an old kernel while installing newer kernels. See the end of the post for an update that describes the true source of the problem as well as a way to work around it while using up-to-date kernels.
I did a routine update/upgrade on my home server that runs Debian 13 today and restarted the machine since there was a kernel update and... POW! Machine is no longer on the network. Serves me right for keeping up to date.
A quick look around determined that networking.service is failing because my network device doesn't exist. The logs confirm that the iwlwifi driver is having an oopsy.
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: enabling device (0000 -> 0002)
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: Detected crf-id 0x2001910, cnv-id 0x2001910 wfpm id 0x80000000
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: PCI dev 272b/00f4, rev=0x472, rfid=0x112200
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: Detected Intel(R) Wi-Fi 7 BE200 320MHz
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-gl-c0-fm-c0-102.ucode (-2)
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-gl-c0-fm-c0-102.ucode (-2)
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-gl-c0-fm-c0-102.ucode (-2)
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-gl-c0-fm-c0-102.ucode failed with error -2
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-gl-c0-fm-c0-101.ucode (-2)
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-gl-c0-fm-c0-101.ucode (-2)
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-gl-c0-fm-c0-101.ucode (-2)
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-gl-c0-fm-c0-101.ucode failed with error -2
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-gl-c0-fm-c0-100.ucode (-2)
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-gl-c0-fm-c0-100.ucode (-2)
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-gl-c0-fm-c0-100.ucode (-2)
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-gl-c0-fm-c0-100.ucode failed with error -2
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-gl-c0-fm-c0-99.ucode (-2)
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-gl-c0-fm-c0-99.ucode (-2)
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-gl-c0-fm-c0-99.ucode (-2)
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-gl-c0-fm-c0-99.ucode failed with error -2
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-gl-c0-fm-c0-98.ucode (-2)
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-gl-c0-fm-c0-98.ucode (-2)
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-gl-c0-fm-c0-98.ucode (-2)
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-gl-c0-fm-c0-98.ucode failed with error -2
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: no suitable firmware found!
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: minimum version required: iwlwifi-gl-c0-fm-c0-98
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: maximum version supported: iwlwifi-gl-c0-fm-c0-102
Dec 14 14:19:36 m910q kernel: iwlwifi 0000:01:00.0: check git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
I rebooted and selected the previous kernel from the Grub boot menu and wifi works again. The old, working kernel is linux-image-6.16.3+deb13-amd64 whereas the new, broken kernel is linux-image-6.17.8+deb13-amd64. Both are provided by the bookworm-backports package repository.
A quick web search found a lovely issue filed over at Arch Linux that describes the exact issue I'm experiencing. This bug is upstream in the kernel itself.
This put me in a peculiar situation. I need to stay on the old kernel until this is fixed. In the meantime, I want to continue receiving new kernel versions when I update my system so I can test if the issue has been fixed. But until that happens, I want to continue using the known-working kernel.
The solution I chose was to change my Grub configuration slightly. There's a line in /etc/default/grub that looks like this:
GRUB_DEFAULT=0
That makes Grub boot with the first menu entry by default, which is the newest kernel. I changed it.
#GRUB_DEFAULT=0
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
After running sudo update-grub, Grub now remembers the last option I chose and uses that by default. I had to reboot one more time to choose the preferred kernel so it would remember after I changed this setting.
This meets all of my desired criteria. As long as I don't uninstall linux-image-6.16.3+deb13-amd64, I should be able to receive new kernel versions and test them at my leisure without worrying that any subsequent updates and reboots might make my system drop off the network again.
Although experiencing a kernel regression is annoying, this is the first instance of a regression that has affected me personally in probably two decades. I'm happy it wasn't my fault. And I'm grateful it was easy to diagnose and work around it.
2/25/2026 Update
Today, I installed the latest backports kernel, linux-image-6.18.9+deb13-amd64, and to my dismay, the issue described above persisted. I did a little more digging and I discovered this wasn't a kernel regression at all! (Apologies to the fine folks who work on the kernel.) It was lag between the latest version of the kernel available via backports and the latest version of the firmware-iwlwifi package available via backports. Those ucode files mentioned in the logs are supposed to be provided via firmware-iwlwifi.
After checking I was indeed using the latest version of firmware-iwlwifi, I fixed the problem by cloning the latest version of the linux-firmware source from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git and checking within the intel/iwlwifi directory for the files mentioned in the logs.
ls -lah intel/iwlwifi/iwlwifi-gl-c0-fm-c0-*
-rw-rw-r-- 1 server-user server-user 2.2M Feb 25 14:55 intel/iwlwifi/iwlwifi-gl-c0-fm-c0-100.ucode
-rw-rw-r-- 1 server-user server-user 2.2M Feb 25 14:55 intel/iwlwifi/iwlwifi-gl-c0-fm-c0-101.ucode
-rw-rw-r-- 1 server-user server-user 1.8M Feb 25 14:55 intel/iwlwifi/iwlwifi-gl-c0-fm-c0-83.ucode
-rw-rw-r-- 1 server-user server-user 1.8M Feb 25 14:55 intel/iwlwifi/iwlwifi-gl-c0-fm-c0-86.ucode
-rw-rw-r-- 1 server-user server-user 1.9M Feb 25 14:55 intel/iwlwifi/iwlwifi-gl-c0-fm-c0-90.ucode
-rw-rw-r-- 1 server-user server-user 1.9M Feb 25 14:55 intel/iwlwifi/iwlwifi-gl-c0-fm-c0-92.ucode
-rw-rw-r-- 1 server-user server-user 1.9M Feb 25 14:55 intel/iwlwifi/iwlwifi-gl-c0-fm-c0-94.ucode
-rw-rw-r-- 1 server-user server-user 1.9M Feb 25 14:55 intel/iwlwifi/iwlwifi-gl-c0-fm-c0-96.ucode
-rw-rw-r-- 1 server-user server-user 1.9M Feb 25 14:55 intel/iwlwifi/iwlwifi-gl-c0-fm-c0-97.ucode
-rw-rw-r-- 1 server-user server-user 1.9M Feb 25 14:55 intel/iwlwifi/iwlwifi-gl-c0-fm-c0-98.ucode
-rw-rw-r-- 1 server-user server-user 2.2M Feb 25 14:55 intel/iwlwifi/iwlwifi-gl-c0-fm-c0-c101.ucode
-rw-rw-r-- 1 server-user server-user 2.2M Feb 25 14:55 intel/iwlwifi/iwlwifi-gl-c0-fm-c0-c102.ucode
Yep, there are those pesky files. I just needed to copy them (as root) to the proper location: /lib/firmware.
sudo cp intel/iwlwifi/iwlwifi-gl-c0-fm-c0-*.ucode /lib/firmware/
Then update the initramfs images.
sudo update-initramfs -u -k all
I undid the changes I made to my Grub config from earlier, rebooted, and Bob's your uncle, everything worked again. That's how you run bleeding edge Intel drivers when Debian's firmware package is lagging behind the kernel. 🙌