Como o kernel do Linux escolhe qual versão de firmware carregar?

12

Instalei o firmware mais recente para minha placa de rede N-7260 do link . Eu estou usando o Ubuntu 14.04 com a versão do kernel 3.14.01 do ppa da equipe do kernel . Aqui está uma lista de firmware que tenho em /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

Agora parece que a versão 9 não carrega. Se eu remover a versão 8, vejo na inicialização a seguinte mensagem:

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!

Então, minha pergunta é:

Como posso dizer ao linux que ele deve carregar iwlwifi-7260-9.ucode ?

atualizar

Curiosamente, a versão do firmware carregada agora é de 8, pelo menos de acordo com o dmesg:

$ 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
    
por Oz123 01.05.2014 / 13:11

3 respostas

5

A versão do firmware solicitada é gravada no código do driver. Como você pode ver, a versão específica se iwlwifi que você está usando solicita o firmware -7. Não pode encontrá-lo e termina em um erro. Você pode ver isso em 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

O que você denuncia? Você já tentou renomear o firmware -9 como -7, após o backup, é claro?

Eu realmente acredito que, para 7260 dispositivos, modinfo sugere -7, mas o driver realmente usa -8. Não tenho conhecimento de nenhuma versão de driver que chame -9. Talvez a versão do kernel 3.15-xx.

    
por chili555 01.05.2014 / 14:05
3

Acho que depende do seu kernel:

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

Fonte: link

O Ubuntu 14.04 é 3.13, portanto carrega 22.24. 8 .0.

O Ubuntu 14.10 é 3.16, então carrega 25.228. 9 .0.

Eu posso me conectar com ambos, embora o primeiro tenha sido esquisito para mim ... os escores do speedtest.net foram de 2 a 3 Mbps contra os 25 Mbps com o segundo. YMMV.

    
por Hans 14.01.2015 / 03:21
1

O mesmo aqui ... mas com estoque 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

Mas só será carregado se eu baixar e instalar o 7260-8 do link

Talvez alguém tenha esquecido de alterar alguma informação do driver. Minha instalação tinha -7 e -9 , curiosamente.

Felizmente funciona com o -8 , mesmo com o modo monitor.

Espero que ajude!

    
por Pablo 07.07.2014 / 10:48