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

12

Instalei o firmware mais recente da minha placa de rede N-7260 a partir de http://wireless.kernel.org/en/users/Drivers/iwlwifi#Firmware . Estou usando o Ubuntu 14.04 com a versão 3.14.01 do kernel, da equipe ppa do kernel . Aqui está uma lista do firmware que eu tenho /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

No momento, 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 eu digo ao linux que ele deve carregar iwlwifi-7260-9.ucode?

atualizar

Curiosamente, a versão do firmware carregada agora é 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
Oz123
fonte
O AFAIK 22.24.8.0 é a versão 9. do firmware. A versão 8 é 22.15.8.0. Veja intel.com/support/wireless/wlan/sb/CS-034398.htm
jhasse
Apenas para confirmar as descobertas de Pablo, meu problema foi que o SSH parou de responder um pouco depois da reinicialização. Depois de instalar o firmware do iwlwifi-7260-8.ucode no / lib / firmware e reiniciei, eu não estava funcionando e executando o SSH sem problemas com o Wifi. Meu sistema é um Intel NUC com 14.04 LTS instalado. Obrigado Pablo Novo neste fórum, por isso ainda não posso votar; caso contrário, você teria o meu voto.
O uso do 14.04 com o kernel 3.13.0-36-generic está carregando a versão de firmware 22.24.8.0 op_mode iwlmvm e FUNCIONA! perfeitamente (sem energia ligada / desligada). . Mas quando eu atualizar o kernel para 3,16 *, seu carregamento firmware versão 23.214.9.0, ea velocidade é terrível (com poder sobre) e metade da velocidade (com power off)
Tosho
@ Toshho, bem, o firmware deste chip é simplesmente ruim. Eu tenho vários problemas com este chip.
Oz123
@ Oz123 Sim. mas como eu disse, o 22.24.8.0 funciona perfeitamente. Não tenho certeza se o problema é do firmware mais recente ou do kernel 3.16.
Tosho 25/09

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ções -7 firmware. Não é possível encontrá-lo e termina com um erro. Você pode ver isso no 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 o seu relata? Você tentou renomear o firmware -9 como -7, depois de fazer o backup, é claro?

Na verdade, acredito que, para dispositivos 7260, o modinfo sugere -7, mas o driver realmente usa -8. Não conheço nenhuma versão do driver que solicite -9. Talvez a versão 3.15-xx do kernel.

chili555
fonte
Oi, eu tentei sua solução, mas ainda estou vendo o erro: Direct firmware load failed with error -2. E uma questão diferente é que, apesar do módulo que requer a versão 7, ele carrega a versão 8. Veja minha atualização acima.
Oz123
Por favor, veja minha edição.
Chili555
Aqui está um relatório de bug bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1704799 - esperamos que você possa fazer o download do firmware ausente e corrigir o problema.
Zeroconf 17/07/2017
3

Eu acho que depende do seu kernel:

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

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

O Ubuntu 14.04 é 3.13 e carrega 22.24. 8 .0.

O Ubuntu 14.10 é 3.16, portanto, carrega 25.228. 9 .0.

Eu posso me conectar com os dois, embora o primeiro tenha sido esquisito para mim ... as pontuações do speedtest.net caíram de 2-3 Mbps contra 25 Mbps no segundo. YMMV.

Hans
fonte
O que o 4.4.0-21-genérico usa?
Martin Thoma 7/16
1

O mesmo aqui ... mas com o kernel padrão

$ 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 em http://wireless.kernel.org/en/users/Drivers/iwlwifi

Talvez alguém tenha esquecido de mudar algo nas informações do motorista. Minha instalação tinha -7e -9, curiosamente.

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

Espero que ajude!

Pablo
fonte