How does the linux kernel choose which firmware version to load?

Solution 1:

The firmware version that is requested is written into the driver code. As you can see, the particular version if iwlwifi that you are using requests -7 firmware. It can't find it and ends in an error. You can see this in modinfo iwlwifi:

$ modinfo iwlwifi
filename:       /lib/modules/3.13.0-24-generic/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko
license:        GPL
author:         Copyright(c) 2003-2013 Intel Corporation <[email protected]>
version:        in-tree:
description:    Intel(R) Wireless WiFi driver for Linux
<snip>
firmware:       iwlwifi-7260-7.ucode

What does yours report? Have you tried re-naming the -9 firmware as -7, after backing up, of course?

I actually believe that, for 7260 devices, modinfo suggests -7 but the driver actually uses -8. I am unaware of any driver version that calls for -9. Perhaps kernel version 3.15-xx.

Solution 2:

I think it depends on your kernel:

  • 3.10+ uses firmware -7
  • 3.13+ uses firmware -8
  • 3.14.9+ uses firmware -9
  • 3.17+ uses firmware -10

Source: http://wireless.kernel.org/en/users/Drivers/iwlwifi

Ubuntu 14.04 is 3.13 so loads 22.24.8.0.

Ubuntu 14.10 is 3.16 so loads 25.228.9.0.

I can connect with both, though the first was flaky for me... speedtest.net scores were 2-3Mbps down versus 25Mbps down with the second. YMMV.

Solution 3:

Same here... but with stock kernel

$ uname -a
Linux prato 3.13.0-30-generic #55-Ubuntu SMP Fri Jul 4 21:40:53 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

$ modinfo iwlwifi | grep 7260
firmware:       iwlwifi-7260-7.ucode

But will only load if I download and install 7260-8 from http://wireless.kernel.org/en/users/Drivers/iwlwifi

Maybe somebody forgot to change something in the driver info. My installation had -7 and -9, oddly enough.

Luckily it works with the -8, even with monitor mode.

Hope it helps!