# [SOLVED] iwlwifi fails to load after upgrade to 3.17.0

## Z12

Hello. newbie gentoo user here

So, i have upgraded kernel from 3.16.3 to 3.17.0 today.

Everything seems fine except i can't get wifi to work

Here is what dmesg says:

```
[    1.432541] iwlwifi 0000:02:00.0: can't disable ASPM; OS doesn't have ASPM control

[    1.433966] iwlwifi 0000:02:00.0: irq 25 for MSI/MSI-X

[    1.434197] iwlwifi 0000:02:00.0: Direct firmware load for iwlwifi-2030-6.ucode failed with error -2

[    1.435521] iwlwifi 0000:02:00.0: request for firmware file 'iwlwifi-2030-6.ucode' failed.

[    1.444479] iwlwifi 0000:02:00.0: Direct firmware load for iwlwifi-2030-5.ucode failed with error -2

[    1.512125] iwlwifi 0000:02:00.0: request for firmware file 'iwlwifi-2030-5.ucode' failed.

[    1.512127] iwlwifi 0000:02:00.0: no suitable firmware found!

```

I do not have this problem when booting from my old 3.16.3 kernel

ofcourse i checked and the ucode does exist in /lib/firmware

I tried building iwlwifi as a module but the results are the same.

A quick search revealed nothing and i am pretty sure i am doing something stupid (or not doing something). This would be my second kernel upgrade and i have followed the kernel/upgrade page from wiki

Any help is greatly appreciatedLast edited by Z12 on Sat Oct 11, 2014 7:39 am; edited 1 time in total

----------

## photonic

I had the same problem, too. Now I have to use 3.16* kernel maybe it will be fixed in 3.17.1.

----------

## nuku

I had the same problem. You can use your WiFi with kernel 3.17.0 if you enable the following option in the kernel config:

Device Drivers  ---> Generic Driver Options  ---> Fallback user-helper invocation for firmware loading (CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y)

Take care.

----------

## photonic

 *nuku wrote:*   

> I had the same problem. You can use your WiFi with kernel 3.17.0 if you enable the following option in the kernel config:
> 
> Device Drivers  ---> Generic Driver Options  ---> Fallback user-helper invocation for firmware loading (CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y)
> 
> Take care.

 

Thank you nuku. Problem solved. So I guess it's the linux-firmware package needs to be updated?

----------

## Z12

 *nuku wrote:*   

> I had the same problem. You can use your WiFi with kernel 3.17.0 if you enable the following option in the kernel config:
> 
> Device Drivers  ---> Generic Driver Options  ---> Fallback user-helper invocation for firmware loading (CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y)
> 
> Take care.

 

Yep this fixed the issue.

Thanks.

----------

## RAPHEAD

Many thanks, that fixed it!

----------

## Zephyrus

I had this problem and I also resolved it by setting CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y.

However, now with udev-217 the user space helper is gone and therefore the issue has come back. I am trying to understand why the direct load fails, however for the moment I have no clue.

I have a 03:00.0 Network controller: Intel Corporation Centrino Advanced-N 6205 [Taylor Peak] (rev 34) on a Lenovo W530.

By the way, are you using the linux-firmware or the iwlxxxx-ucode ebuilds?

----------

## che

From what I've looked the firmware package supplies /lib/firmware/iwlwifi-5000-5.ucode, while kernel without userspace loader looks for iwlwifi-5000-4.ucode, (and -3, -2 and -1-suffixed files):

Oct 28 23:01:35 nok kernel: iwlwifi 0000:03:00.0: request for firmware file 'iwlwifi-5000-4.ucode' failed.

Oct 28 23:01:35 nok kernel: iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-5000-3.ucode failed with error -2

Oct 28 23:01:35 nok kernel: iwlwifi 0000:03:00.0: request for firmware file 'iwlwifi-5000-3.ucode' failed.

Oct 28 23:01:35 nok kernel: iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-5000-2.ucode failed with error -2

Oct 28 23:01:35 nok kernel: iwlwifi 0000:03:00.0: request for firmware file 'iwlwifi-5000-2.ucode' failed.

Oct 28 23:01:35 nok kernel: iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-5000-1.ucode failed with error -2

Oct 28 23:01:35 nok kernel: iwlwifi 0000:03:00.0: request for firmware file 'iwlwifi-5000-1.ucode' failed.

(error -2 is simple ENOENT, i.e. file not found)

----------

## smove

Hey guys,

since CONFIG_FW_LOADER_USER_HELPER_FALLBACK is a deprecated way to load the firmware,

I found a better way to fix this problem (especially if you've got udev or systemd 217 installed) would be to build the firmware into the kernel.

Just go to

```

Device Drivers ---> Generic Driver Options ---> External firmware blobs to build into the kernel binary

```

and specify the firmware binary (in my case it was iwlwifi-6000-4.ucode)

You also need to specify the location (usually /lib/firmware) under

```

Device Drivers ---> Generic Driver Options ---> Firmware blobs root directory

```

This works fine for me and I'm not constrained by deprecated functionalities.

so long,

smove

----------

## fistfullast33l

 *smove wrote:*   

> Hey guys,
> 
> since CONFIG_FW_LOADER_USER_HELPER_FALLBACK is a deprecated way to load the firmware,
> 
> I found a better way to fix this problem (especially if you've got udev or systemd 217 installed) would be to build the firmware into the kernel.
> ...

 

I've been saved!!! Great job smove.  Setting the file to iwlwifi-7260-9.ucode and the directory to /lib/firmware worked for me on 3.17.2.  And gnome and systemd are happy.

I should also note for those using 7260, I had previously updated /lib/firmware/iwlwifi-7260-9.ucode to the latest available on the intel iwlwifi website.

----------

## che

After some debugging, I found another solution.

 *che wrote:*   

> From what I've looked the firmware package supplies /lib/firmware/iwlwifi-5000-5.ucode, while kernel without userspace loader looks for iwlwifi-5000-4.ucode, (and -3, -2 and -1-suffixed files):
> 
> Oct 28 23:01:35 nok kernel: iwlwifi 0000:03:00.0: request for firmware file 'iwlwifi-5000-4.ucode' failed.
> 
> Oct 28 23:01:35 nok kernel: iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-5000-3.ucode failed with error -2
> ...

 

I was wrong above. The kernel does actually try to read the correct -5 ucode, but does it so early during the boot that:

1. the log message scrolls out of dmesg buffer

2. the system still runs from initramfs, where the ucode file is not included

So the solution for me is to add ucode file to initrams, which is done simply by passing another argument to dracut (if you happen to use dracut):

```
dracut --install /lib/firmware/iwlwifi-5000-5.ucode [...]
```

----------

## omyang

Hello,

I followed all your instructions, but still failed with the wireless connection. Maybe there is still some problem with my .config file. Is it convenient for you to sent me a copy of your .config file? I just want to make sure the options for wireless network are all suitable.

Thank you very much!

----------

## szczerb

I just run into the same issue. Enabling the userspace fallback worked.

But why does the kernel failed to load it?

I don't use an initramfs and /lib/firmware is on /dev/sda2 which is also /

----------

## lucidium

 *smove wrote:*   

> Hey guys,
> 
> since CONFIG_FW_LOADER_USER_HELPER_FALLBACK is a deprecated way to load the firmware,
> 
> I found a better way to fix this problem (especially if you've got udev or systemd 217 installed) would be to build the firmware into the kernel.
> ...

 

This worked for me as well. Thank you so much! This was driving me crazy.

----------

## otakugeek

 *nuku wrote:*   

> I had the same problem. You can use your WiFi with kernel 3.17.0 if you enable the following option in the kernel config:
> 
> Device Drivers  ---> Generic Driver Options  ---> Fallback user-helper invocation for firmware loading (CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y)
> 
> Take care.

 

Thanks, work for me  kernel 3.17.7  :Smile: 

----------

## freshgod

Thanks, it works for me too !

----------

## dark-wulf

 *nuku wrote:*   

> I had the same problem. You can use your WiFi with kernel 3.17.0 if you enable the following option in the kernel config:
> 
> Device Drivers  ---> Generic Driver Options  ---> Fallback user-helper invocation for firmware loading (CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y)
> 
> Take care.

 

Just had the same problem with kernel 3.18.0 and this solved it Thanks

----------

## spam3910807

Using the fallback helper is not actually required. Direct firmware loading works just fine, but the firmware must be available in /lib/firmware when the drivers are loaded. The problem is that if iwlwifi is compiled into the kernel (not a module) then the firmware is loaded before the filesystem is mounted. Two possible solutions: A) use initrd or B) compile iwlwifi as a module. 

"Udev and firmware"

https://lwn.net/Articles/518942/

"firmware: teach the kernel to load firmware files directly from the filesystem"

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=abb139e75c2cdbb955e840d6331cb5863e409d0e

----------

## cass00

Solved the problem by compiling the corresponding kernel drivers as modules and not directly in the kernel as before (see https://wiki.gentoo.org/wiki/Wifi). No fallback helper needed. Kernel version was 3.18.11.

----------

## Martux

Hi guys!

I am just experiencing a very similar thing, maybe the same: bought a laptop with intel ac 7260 chipset buit in.

After reading all related documentations and also trying every single hint given in this thread (i recompiled the kernel like 20 times now), the ONLY way to get this working for me, is this:

```

# Generic Driver Options

#

CONFIG_UEVENT_HELPER=y

CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"

CONFIG_DEVTMPFS=y

CONFIG_DEVTMPFS_MOUNT=y

CONFIG_STANDALONE=y

CONFIG_PREVENT_FIRMWARE_BUILD=y

CONFIG_FW_LOADER=y

# CONFIG_FIRMWARE_IN_KERNEL is not set

CONFIG_EXTRA_FIRMWARE=""

CONFIG_FW_LOADER_USER_HELPER=y

CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y

CONFIG_IWLWIFI=y

CONFIG_IWLWIFI_LEDS=y

CONFIG_IWLDVM=m

CONFIG_IWLMVM=m

CONFIG_IWLWIFI_OPMODE_MODULAR=y

# CONFIG_IWLWIFI_BCAST_FILTERING is not set

# CONFIG_IWLWIFI_UAPSD is not set

```

This way, the iwl7260-10-ucode is loaded through the CONFIG_FW_LOADER_USER_HELPER_FALLBACK, which takes several minutes (very annoying). Even if the version 12 or 13 is available it doesn't get loaded (error -2).

ALL other options are failing to load the firmware. I have linux-firmware installed, all the corresponding files are within /lib/firmware. 

Does anybody have an idea why direct loading, even with kernel-in-built firmware always fails for me? It's slowly driving me crazy here  :Wink: 

----------

## allenh1

@Martux

I'm having a similar issue. I'm using kernel 4.0.2-gentoo and a Funtoo install. My modules are working, but I cannot authenticate. No idea why this is happening. Any ideas?

----------

## Martux

For me it "solved" by downgrading to 3.9.17...   :Rolling Eyes: 

----------

## dsonck92

 *Martux wrote:*   

> Hi guys!
> 
> I am just experiencing a very similar thing, maybe the same: bought a laptop with intel ac 7260 chipset buit in.
> 
> After reading all related documentations and also trying every single hint given in this thread (i recompiled the kernel like 20 times now), the ONLY way to get this working for me, is this:
> ...

 

You seem to be compiling the kernel driver built in. Besides the firmware issue there are other implications of that like unable to unload the driver when it fails. The variable in question is CONFIG_IWLWIFI which is recommended =m

----------

## majoron

 *smove wrote:*   

> Hey guys,
> 
> since CONFIG_FW_LOADER_USER_HELPER_FALLBACK is a deprecated way to load the firmware,
> 
> I found a better way to fix this problem (especially if you've got udev or systemd 217 installed) would be to build the firmware into the kernel.
> ...

 

It also worked for me. Thank you for the research and for sharing it.

Best

----------

## muhsinzubeir

 *Martux wrote:*   

> For me it "solved" by downgrading to 3.9.17...  

 

Downgraded from 4.4.6 to 3.14.58-gentoo-r1 to resolve the issue,I spent lots of hours to try get it to work in the newer kernel with no luck.I think if I am right this must an issue inside the kernel where some ID's got messed up.

In my case the firmware is being loaded but the wireless button just never works and no info or error messages in dmesg watsoever.....Anyways its an old laptop will be my excuse to the downgrade   :Laughing: 

----------

## dpshak

Forgive me for bumping an old topic...

I have an old ASUS laptop that I bought (I think) in 2010 or so.  It was my 'truck' laptop and, once I sold my truck and took a local job, I didn't use it much anymore.  It had a 3.#.# kernel in it, a late KDE3 or early KDE4 environment and worked, on occasion that I needed it.  I recently bought a new ASUS laptop for my wife and it's been one problem after another...starting with Optimus...   :Shocked:   :Crying or Very sad:   :Sad:   So in the interests of keeping a happy wife (when the wife's happy, EVERYBODY is happy), I wiped that old ASUS and started over again.  The wireless (Intel Centrino Wireless-N + WiMax 6150) was working under the old kernel.  Seeing as I always run the stable branch on my wifes' computer, I installed the latest, greatest (4.9.95) stable kernel.  And I could NOT make the wifi work.  dmesg kept giving me the 'no suitable firmware found' error - even though iwlwifi-6050-4.ucode was available in /lib/firmware.  

After trying all the solutions listed in this section, and failing to get the module loaded, I upgraded to kernel-4.16.8 and made a clean build and:

```

Module                  Size  Used by

iwldvm                139264  0

iwlwifi               159744  1 iwldvm

xhci_pci               16384  0

x86_pkg_temp_thermal    16384  0

xhci_hcd              118784  1 xhci_pci
```

The relevant items I check off during kernel configuration: 

```

Bike ~ # grep IWL /boot/config-4.16.8

# CONFIG_IWL4965 is not set

# CONFIG_IWL3945 is not set

CONFIG_IWLWIFI=m

CONFIG_IWLDVM=m

# CONFIG_IWLMVM is not set

CONFIG_IWLWIFI_OPMODE_MODULAR=y

# CONFIG_IWLWIFI_DEBUG is not set

Bike ~ # grep FIRMWARE /boot/config-4.16.8

# CONFIG_PREVENT_FIRMWARE_BUILD is not set

CONFIG_EXTRA_FIRMWARE="iwlwifi-6050-4.ucode"

CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware"

# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set

# CONFIG_FIRMWARE_EDID is not set

CONFIG_FIRMWARE_MEMMAP=y

# CONFIG_GOOGLE_FIRMWARE is not set

# CONFIG_TEST_FIRMWARE is not set
```

I did, to cover my bases, build the external firmware into the kernel.

I don't know that the wifi is actually working yet, I'm still installing KDE stuff and prefer to use a hardwired connection for that, but at least I know that the modules are loaded!

Hopefully, this may help all y'all that have given up and are using old kernels!  When I googled for answers, this was the only Gentoo thread that showed up.  Others were even LESS helpful!

----------

## X8dcc

Sorry for bumping the thread again but I had this issue and I want to post my solution.

I had the same error on a ThinkPad x220 with an "Intel Centrino Ultimate-N 6300". I think the issue started after installing net-wireless/iwd. I had the iwlwifi firmware enabled in the kernel config as built-in (y), and changing it to module (m) fixed it.

----------

