Fixing “Request for firmware ‘iwlwifi-6000-4.ucode’ file failed.”

While installing Funtoo on my laptop, I had about the most difficult time I’ve ever had trying to get WiFi working. I prefer Intel wireless cards over other vendors as they are usually really easy to get working in Linux. For the record, I have the Ultimate-N 6300 card.

Intel wireless cards require external firmware to be programed into their RAM on startup. This firmware is distributed by Intel, separate from the kernel driver. In the case of Gentoo/Funtoo, there is the iwl6000-ucode package for my card. For the current version, it places the file iwlwifi-6000-4.ucode under /lib/firmware, exactly where it should be. After compiling my kernel with the iwlagn driver included, I rebooted, and was greeted with wpa_supplicant not finding a wireless card. Checking dmesg I found the following message:

iwlagn 0000:0c:00.0: request for firmware file ‘iwlwifi-6000-4.ucode’ failed.
iwlagn 0000:0c:00.0: no suitable firmware found!
iwlagn 0000:0c:00.0: PCI INT A disabled

Normally, this is the message you will get when the firmware hasn’t been installed to the correct directory (/lib/firmware). However, in my case the firmware was sitting under /lib/firmware, iwlagn just could not find it. The issue is when iwlagn is built into the kernel it will try to load the firmware before the firmware is actually available. There ends up being two solutions to this problem.

If you do not want to have any kernel modules, you can bundle the firmware into the kernel image, or into your initramfs (if you use an initramfs). I like to keep the number of modules to a minimum (keep them for devices I may not always have connected), and I only compile the minimum number of drivers into the kernel for my hardware to work. I don’t run an initramfs as it is slow (can double the time it takes to boot, and with the SSD I’m seeing sub 7 second boot times). So this method doesn’t really mesh well with what I’m trying to do.

The much simpler way to fix this is to just compile iwlagn as a module. Then add it to the list of autoloaded modules in your /etc/conf.d/modules file. Reboot and you should see iwlagn loads up correctly, finds the firmware microcode and initializes the wireless card.

-John Havlik

[end of transmission, stay tuned]

Posted in Guides | Tagged:
Updated:

Trackbacks/Pingbacks

  1. Pingback: Loading wifi firmware during boot with custom kernel | alwaysInBeta

5 thoughts on “Fixing “Request for firmware ‘iwlwifi-6000-4.ucode’ file failed.”

  1. Thanks! I’d been bashing my head about this for a good hour or so, and it probably would have been a lot longer had I not run into this article.

  2. On Ubuntu, the package name that contains the intel wireless card firmware is “linux-firmware”. At some point, apt erroneously suggested that I delete that package, and I didn’t get bitten until rebooting a month later.

  3. Merci beaucoup!
    I was wondering why the hell I get “no suitable firmware found” when it was sitting right where it belongs.
    Nice, too, that there is a simple solution to it. I thought I were stupid.

Leave a Reply

Your email address will not be published. Required fields are marked *