Kernel latest wifi-card firmware load failed
Troubleshooting: Kernel iwlwifi Firmware Load Failures on Ubuntu 24.04 with Intel BE200
The advent of advanced wireless technology, such as the Intel® Wi-Fi 7 BE200, promises a significant leap in Wi-Fi performance and capabilities. However, integrating cutting-edge hardware with operating systems can sometimes present unique challenges, particularly concerning driver and firmware compatibility. Users of Ubuntu 24.04 may encounter specific kernel messages indicating a “kernel: iwlwifi 0000:02:00.0: Direct firmware load for iwlwifi-gl-c0-fm-c0-96.ucode failed with error -2”. This error, while alarming, often points to a nuanced issue with how the system is attempting to load the correct firmware for the Intel BE200 Wi-Fi card. At revWhiteShadow, we’ve meticulously analyzed these occurrences and developed comprehensive strategies to ensure your high-performance Wi-Fi adapter operates at its peak potential, helping you outrank common solutions by providing in-depth understanding and actionable steps.
Understanding the iwlwifi Firmware Loading Process
The iwlwifi
driver is the cornerstone of Intel’s wireless network connectivity on Linux systems. It relies on specific firmware files, .ucode
files, which are essentially microcode instructions that dictate the behavior and functionality of the Wi-Fi hardware. When the kernel boots or the Wi-Fi interface is initialized, it attempts to load the most appropriate firmware version for the detected hardware. The sequence of logs you provided, such as:
iwlwifi 0000:02:00.0: enabling device (0000 -> 0002)
iwlwifi 0000:02:00.0: Detected Intel(R) Wi-Fi 7 BE200 320MHz
iwlwifi 0000:02:00.0: Direct firmware load for iwlwifi-gl-c0-fm-c0-96.ucode failed with error -2
iwlwifi 0000:02:00.0: Direct firmware load for iwlwifi-gl-c0-fm-c0-95.ucode failed with error -2
iwlwifi 0000:02:00.0: loaded firmware version 94.62990553.0 gl-c0-fm-c0-94.ucode op_mode iwlmvm
iwlwifi 0000:02:00.0: base HW address: 24:eb:16:9d:e9:5f
iwlwifi 0000:02:00.0 wlp2s0f0: renamed from wlan0
These logs paint a clear picture: the kernel is actively trying to load newer firmware versions (iwlwifi-gl-c0-fm-c0-96.ucode
and iwlwifi-gl-c0-fm-c0-95.ucode
) but encounters an error -2, which typically signifies a “File not found” or an inability to access the specified file correctly. Despite these failures, the system then successfully loads an older firmware version (94.62990553.0 gl-c0-fm-c0-94.ucode
), allowing the Wi-Fi adapter to function, albeit potentially without the latest optimizations or bug fixes. The fact that the linux-firmware
package is up-to-date and contains the .zst
compressed version of the desired firmware (/lib/firmware/iwlwifi-gl-c0-fm-c0-96.ucode.zst
) indicates that the firmware files are present on the system, but the iwlwifi
driver isn’t finding or loading them as expected.
Addressing the error -2
with Intel BE200 on Ubuntu 24.04
The core of the problem lies in the discrepancy between the firmware versions the iwlwifi
driver expects and what is readily accessible or correctly formatted for loading. While the linux-firmware
package is indeed updated, newer firmware often comes in .zst
(Zstandard) compressed format. The iwlwifi
driver needs to be able to decompress and load these files. Several factors can contribute to the error -2
, and we will explore each in detail to provide a robust solution.
1. Ensuring Proper Firmware Decompression and Availability
The linux-firmware
package often includes firmware files compressed with .zst
. The iwlwifi
driver, and the underlying kernel modules, need to be aware of and capable of decompressing these files.
1.1. Verifying Zstandard Support in the Kernel
Modern kernels generally have built-in support for Zstandard decompression. However, to be absolutely certain, you can check your kernel configuration. While directly modifying kernel configurations is beyond the scope of a typical user solution, it’s important to understand that if your kernel was compiled without Zstandard support, this could be the root cause. For Ubuntu 24.04, this is highly unlikely as it ships with a recent kernel that includes this support.
1.2. Manually Decompressing and Placing Firmware (Advanced)
In some rare cases, if the driver’s automatic decompression mechanism fails, manually decompressing the firmware might be necessary. This involves:
- Locating the compressed firmware file: In your case, it’s
/lib/firmware/iwlwifi-gl-c0-fm-c0-96.ucode.zst
. - Decompressing it: Use the
unzstd
command. You might need to install thezstd
package if it’s not already present:This will createsudo apt update sudo apt install zstd unzstd /lib/firmware/iwlwifi-gl-c0-fm-c0-96.ucode.zst
/lib/firmware/iwlwifi-gl-c0-fm-c0-96.ucode
. - Ensuring Permissions: Confirm that the decompressed file has the correct read permissions for the system.
- Rebooting: After placing the decompressed file, reboot your system to see if the driver now loads the correct firmware.
Caution: This is an advanced step. If the system automatically handles .zst
files, manually decompressing might not be the intended solution and could potentially lead to other issues if not done carefully. The preferred method is to ensure the system’s default behavior correctly identifies and loads the compressed firmware.
2. Kernel Module Parameters and Driver Options
The iwlwifi
driver has various parameters that can be tuned. Sometimes, specific settings might influence how firmware is loaded.
2.1. Forcing a Specific Firmware Version (Diagnostic Step)
While not a permanent solution, you can temporarily force the driver to try a specific firmware file. This can help isolate whether the issue is with the newer firmware files themselves or the loading mechanism. You can do this by creating a modprobe configuration file.
- Create a configuration file:
sudo nano /etc/modprobe.d/iwlwifi.conf
- Add the following line: To force the older, successfully loaded firmware version (for testing purposes):
Note: Replaceoptions iwlwifi fw_name=iwlwifi-gl-c0-fm-c0-94.ucode
iwlwifi-gl-c0-fm-c0-94.ucode
with the exact filename of the firmware that was successfully loaded according to your logs. - Save and exit: Press
Ctrl+X
, thenY
, thenEnter
. - Update initramfs: This ensures the changes are applied early in the boot process.
sudo update-initramfs -u
- Reboot:
sudo reboot
If the Wi-Fi works correctly with this configuration, it strongly suggests that the issue is with the iwlwifi-gl-c0-fm-c0-96.ucode
and iwlwifi-gl-c0-fm-c0-95.ucode
files themselves or the driver’s interaction with them. You would then need to investigate the availability and integrity of these newer firmware files.
2.2. Investigating iwlwifi
Options
The iwlwifi
module has numerous options. You can view them using:
modinfo iwlwifi
Look for options related to firmware loading or specific hardware features. While it’s unlikely that a specific iwlwifi
option is the direct cause of the error -2
without a corresponding firmware file being found, understanding these options can be beneficial for further troubleshooting.
3. Ensuring the Correct Firmware is Linked and Accessible
The kernel driver expects firmware files to be available in specific locations and sometimes requires symbolic links. The linux-firmware
package’s installation script usually handles this.
3.1. Checking the /lib/firmware/iwlwifi/
Directory
The iwlwifi
driver looks for firmware files within /lib/firmware/iwlwifi/
. It also checks the root /lib/firmware/
directory. Ensure that the firmware files, including the .zst
versions, are present and correctly organized.
The linux-firmware
package installation process typically extracts and places these files appropriately. The presence of /lib/firmware/iwlwifi-gl-c0-fm-c0-96.ucode.zst
confirms it’s installed. The failure might be due to the driver expecting an uncompressed file or a specific naming convention that isn’t being met by the .zst
file directly.
3.2. Symbolic Links and Firmware Naming Conventions
Intel often uses specific naming conventions for firmware files, and sometimes, the driver expects a particular link to point to the correct firmware. The linux-firmware
package might create symbolic links to the .zst
files.
Examine existing links:
ls -l /lib/firmware/iwlwifi/
You might see links like
iwlwifi-gl-c0-fm-c0-96.ucode
pointing toiwlwifi-gl-c0-fm-c0-96.ucode.zst
or similar. If these links are missing or incorrect, it could explain theerror -2
.Manually create links (as a test): If you suspect missing links, you can try creating them:
sudo ln -s /lib/firmware/iwlwifi-gl-c0-fm-c0-96.ucode.zst /lib/firmware/iwlwifi-gl-c0-fm-c0-96.ucode sudo ln -s /lib/firmware/iwlwifi-gl-c0-fm-c0-95.ucode.zst /lib/firmware/iwlwifi-gl-c0-fm-c0-95.ucode sudo reboot
Again, this is a diagnostic step. The ideal scenario is that the system handles this automatically.
4. Kernel Version and iwlwifi
Driver Compatibility
Newer hardware, like the Intel BE200, often requires very recent kernel versions and corresponding driver updates. Ubuntu 24.04 typically ships with a sufficiently recent kernel, but specific revisions can matter.
4.1. Checking Your Kernel Version
Confirm your current kernel version:
uname -r
If you are on a very early release of Ubuntu 24.04 or an older LTS version, the kernel might not have full support for the BE200 series of Intel Wi-Fi cards.
4.2. Updating the Kernel and linux-firmware
Even though you’ve stated the linux-firmware
package is updated, it’s always prudent to ensure your entire system, including the kernel, is up-to-date.
- Update package lists:
sudo apt update
- Upgrade installed packages:
sudo apt upgrade
- Consider a kernel upgrade: If a newer kernel is available through the standard Ubuntu repositories (or via a mainline kernel PPA, though use with caution), installing it might resolve compatibility issues. For Ubuntu 24.04, the default kernel should be quite current.
4.3. Backporting Drivers or Firmware (Advanced)
In situations where the official Ubuntu repositories lag behind the latest hardware support, some users might consider backporting newer kernel modules or firmware. However, this is an advanced procedure that can introduce instability if not performed correctly. For the BE200 on Ubuntu 24.04, this is generally not the first course of action, as support should be present.
5. Systemd and Firmware Loading Order
The systemd
init system manages the boot process and firmware loading. Issues can sometimes arise if the firmware loading mechanism isn’t correctly integrated with systemd
.
5.1. Examining dmesg
and journalctl
for Deeper Insights
Beyond the immediate kernel messages, a deeper look into system logs can reveal more context.
dmesg
: Provides kernel ring buffer messages.dmesg | grep iwlwifi
journalctl
: A more comprehensive logging system.Look for any related errors or warnings fromsudo journalctl -k | grep iwlwifi sudo journalctl -u systemd-udevd.service
systemd-udevd
or other services involved in device initialization.
5.2. Udev Rules
udev
is responsible for dynamically creating device nodes and running device-related scripts during boot. It might be involved in the firmware loading process. While unlikely to be the primary cause if the firmware file is present, incorrect udev
rules could theoretically interfere. However, custom udev
rules for firmware loading are uncommon and usually handled by the udev
rules shipped with the linux-firmware
package or the kernel.
6. Hardware Considerations and BIOS/UEFI Updates
While software is the primary focus here, it’s worth briefly mentioning hardware-level factors.
6.1. BIOS/UEFI Updates
Manufacturers sometimes release BIOS/UEFI updates that improve hardware initialization and compatibility with operating systems. Check your motherboard manufacturer’s website for any available updates for your system. A BIOS/UEFI update might provide better support for newer PCI devices, including your Wi-Fi card.
7. Reinstalling linux-firmware
Package
A corrupted installation of the linux-firmware
package could also lead to such issues. Reinstalling it can ensure that all files are present and correctly extracted.
- Remove the package:
sudo apt remove linux-firmware
- Clean the package cache:
sudo apt autoremove sudo apt clean
- Install the package again:
sudo apt install linux-firmware
- Reboot:
sudo reboot
This process ensures a clean slate for the firmware files.
Synthesizing the Solution: A Step-by-Step Approach
Based on the detailed analysis, here’s a prioritized approach to resolve the “kernel: iwlwifi firmware load failed” error for your Intel BE200 on Ubuntu 24.04:
Ensure System is Fully Updated:
sudo apt update && sudo apt upgrade -y
And reboot:
sudo reboot
This is the most fundamental step and often resolves many transient issues.
Verify Firmware Presence and Format: Check if both compressed and potentially uncompressed versions are present and if any symbolic links are correctly established. The system should ideally handle
.zst
files automatically. If the logs indicate failure to loadiwlwifi-gl-c0-fm-c0-96.ucode
, and only.zst
is found, the system’s firmware loader might be expecting the uncompressed file.Diagnostic: Force Older Firmware (as a test): If step 1 doesn’t resolve it, use the
modprobe.d
configuration as described in section 2.1 to temporarily force the older firmware. If Wi-Fi works, it confirms the issue is with the newer firmware loading.Reinstall
linux-firmware
: If the issue persists, perform a clean reinstallation of thelinux-firmware
package as detailed in section 7.Check
dmesg
andjournalctl
for More Clues: Scrutinize the logs for any additional error messages or warnings that might pinpoint the exact cause of theerror -2
.Consider Manual Decompression (with caution): If all else fails and you are comfortable with advanced steps, try manually decompressing the
.zst
firmware file and placing it in the appropriate directory, then reboot. This is a workaround and not always the ideal solution.
By systematically addressing each potential point of failure, from system updates to firmware file integrity and kernel module parameters, we can effectively diagnose and resolve the kernel: iwlwifi 0000:02:00.0: Direct firmware load failed error. The goal is to ensure your Intel Wi-Fi 7 BE200 operates seamlessly with the latest firmware, unlocking its full potential on your Ubuntu 24.04 system. At revWhiteShadow, our commitment is to provide the most thorough and effective solutions, ensuring your hardware performs at its absolute best.