linux内核如何选择要加载的固件版本?


12

我从http://wireless.kernel.org/en/users/Drivers/iwlwifi#Firmware为我的网卡N-7260安装了最新固件。我正在使用内核团队ppa的内核版本为3.14.01的Ubuntu 14.04 。这是我拥有的固件列表/lib/firmware

$ ls /lib/firmware/*iwl*7260*
/lib/firmware/iwlwifi-7260-8.ucode  /lib/firmware/org.iwlwifi-7260-7.ucode
/lib/firmware/iwlwifi-7260-9.ucode  /lib/firmware/org.iwlwifi-7260-8.ucode

目前看来版本9无法加载。如果删除版本8,则在启动时会看到以下消息:

sudo dmesg | grep iwl
[sudo] password for ozubu: 
[    6.121743] iwlwifi 0000:02:00.0: irq 62 for MSI/MSI-X
[    6.133208] iwlwifi 0000:02:00.0: Direct firmware load failed with error -2
[    6.133211] iwlwifi 0000:02:00.0: Falling back to user helper
[    6.311794] iwlwifi 0000:02:00.0: Direct firmware load failed with error -2
[    6.311799] iwlwifi 0000:02:00.0: Falling back to user helper
[    6.324940] iwlwifi 0000:02:00.0: request for firmware file 'iwlwifi-7260-7.ucode' failed.
[    6.324950] iwlwifi 0000:02:00.0: no suitable firmware found!

所以,我的问题是:

我如何告诉Linux应该加载iwlwifi-7260-9.ucode

更新

奇怪的是,至少根据dmesg,现在加载的固件版本为8:

$ sudo dmesg | grep iwl
[sudo] password for ozubu: 
[   18.970651] iwlwifi 0000:02:00.0: irq 62 for MSI/MSI-X
[   19.012648] iwlwifi 0000:02:00.0: loaded firmware version 22.24.8.0 op_mode iwlmvm
[   19.315472] iwlwifi 0000:02:00.0: Detected Intel(R) Wireless N 7260, REV=0x144
[   19.315899] iwlwifi 0000:02:00.0: L1 Disabled; Enabling L0S
[   19.316118] iwlwifi 0000:02:00.0: L1 Disabled; Enabling L0S
[   19.523132] ieee80211 phy0: Selected rate control algorithm 'iwl-mvm-rs'
[   23.100268] iwlwifi 0000:02:00.0: L1 Disabled; Enabling L0S
[   23.100484] iwlwifi 0000:02:00.0: L1 Disabled; Enabling L0S

AFAIK 22.24.8.0是固件版本9。版本8是22.15.8.0。参见intel.com/support/wireless/wlan/sb/CS-034398.htm
jhasse 2014年

只是为了确认Pablo的发现,我的问题是SSH在重启后不久就停止响应了。在将iwlwifi-7260-8.ucode固件安装到/ lib / firmware并重新引导后,我没有启动并运行SSH,而Wifi上没有任何问题。我的系统是安装了14.04 LTS的Intel NUC。感谢Pablo New加入这个论坛,所以我还不能投票,否则,我将投票。

将14.04与内核3.13.0-36-generic一起使用会加载固件版本22.24.8.0 op_mode iwlmvm,它的工作原理!完美(无主电源开/关)。但是,当我将内核升级到3.16。*时,其加载的固件版本为23.214.9.0,速度非常糟糕(打开电源),速度只有一半(关闭电源)
Tosho

@Tosho,嗯,该芯片的固件简直是糟糕的。我对此芯片有各种问题。
2014年

@ Oz123是的。但正如我所说的22.24.8.0完美。我不确定问题是来自最新固件还是内核3.16。
Tosho 2014年

Answers:


5

所请求的固件版本已写入驱动程序代码中。如您所见,如果您使用的iwlwifi特定版本要求-7固件。它找不到它并以错误结尾。您可以在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 <ilw@linux.intel.com>
version:        in-tree:
description:    Intel(R) Wireless WiFi driver for Linux
<snip>
firmware:       iwlwifi-7260-7.ucode

您的报告是什么?当然,在备份之后,您是否尝试过将-9固件重命名为-7?

我实际上认为,对于7260设备,modinfo建议使用-7,但驱动程序实际上使用-8。我不知道任何需要-9的驱动程序版本。也许是内核版本3.15-xx。


嗨,我尝试了您的解决方案,但仍然看到错误:Direct firmware load failed with error -2。而另一个问题是,尽管该模块需要版本7,但仍会加载版本8。请参阅上面的更新。
Oz123 2014年

请看我的编辑。
chili555

这是一个错误报告bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1704799-希望您可以下载缺少的固件并解决此问题。
zeroconf

3

我认为这取决于您的内核:

  • 3.10+使用固件-7
  • 3.13+使用固件-8
  • 3.14.9+使用固件-9
  • 3.17+使用固件-10

来源:http//wireless.kernel.org/en/users/Drivers/iwlwifi

Ubuntu 14.04是3.13,因此加载22.24。8 .0。

Ubuntu 14.10是3.16,因此加载25.228。9 .0。

我可以同时连接这两者,尽管第一个对我来说有点麻烦... speedtest.net得分下降了2-3Mbps,而第二个却下降了25Mbps。YMMV。


4.4.0-21通用有什么用?
马丁·托马

1

同样在这里...但是有库存内核

$ 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

但是只有在我从http://wireless.kernel.org/en/users/Drivers/iwlwifi下载并安装7260-8时才会加载

也许有人忘记更改驱动程序信息中的某些内容。我的安装有-7and -9,奇怪的是。

幸运的是-8,即使在监视模式下,它也可以使用。

希望能帮助到你!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.