Come fa il kernel di Linux a scegliere quale versione del firmware caricare?


12

Ho installato il firmware più recente per la mia scheda di rete N-7260 da http://wireless.kernel.org/en/users/Drivers/iwlwifi#Firmware . Sto usando Ubuntu 14.04 con la versione del kernel 3.14.01 dal ppa del team del kernel . Ecco un elenco di firmware che ho in /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

In questo momento sembra che la versione 9 non si carichi. Se rimuovo la versione 8, vedo all'avvio il seguente messaggio:

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!

Quindi, la mia domanda è:

Come faccio a dire a Linux che dovrebbe caricare iwlwifi-7260-9.ucode?

aggiornare

Stranamente, la versione del firmware caricata ora è 8, almeno secondo 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

AFAIK 22.24.8.0 è la versione del firmware 9. La versione 8 è 22.15.8.0. Vedi intel.com/support/wireless/wlan/sb/CS-034398.htm
jhasse

Solo per confermare le scoperte di Pablo, il mio problema era che SSH smetteva di rispondere poco dopo il riavvio. Dopo aver installato il firmware iwlwifi-7260-8.ucode in / lib / firmware e riavviato, non ho installato e avviato SSH senza problemi con Wifi. Il mio sistema è un Intel NUC con 14.04 LTS installato. Grazie Pablo Nuovo a questo forum, quindi non posso ancora votare, altrimenti avresti il ​​mio voto.

L'uso di 14.04 con il kernel 3.13.0-36-generic sta caricando la versione del firmware 22.24.8.0 op_mode iwlmvm e funziona! perfettamente (nessuna accensione / spegnimento della madre). Ma quando aggiorno il kernel a 3.16. *, La sua versione del firmware di caricamento 23.214.9.0 e la velocità è terribile (con l'accensione) e metà della velocità (con lo spegnimento)
Tosho,

@ Toho, beh, il firmware per questo chip è semplicemente cattivo. Ho vari problemi con questo chip.
Oz123,

@ Oz123 Sì. ma come ho detto, il 22.24.8.0 funziona perfettamente. Non sono sicuro che il problema provenga dall'ultimo firmware o dal kernel 3.16.
Tosho,

Risposte:


5

La versione del firmware richiesta è scritta nel codice del driver. Come puoi vedere, la versione particolare se iwlwifi che stai utilizzando richiede -7 firmware. Non riesce a trovarlo e termina in un errore. Puoi vederlo 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 <ilw@linux.intel.com>
version:        in-tree:
description:    Intel(R) Wireless WiFi driver for Linux
<snip>
firmware:       iwlwifi-7260-7.ucode

Cosa segnala il tuo? Hai provato a rinominare il firmware -9 come -7, ovviamente dopo il backup?

In realtà credo che, per i dispositivi 7260, modinfo suggerisca -7 ma il driver effettivamente utilizza -8. Non sono a conoscenza di alcuna versione del driver che richiede -9. Forse la versione del kernel 3.15-xx.


Ciao, ho provato la soluzione, ma sto ancora vedendo l'errore: Direct firmware load failed with error -2. E un altro problema è che ha disprezzato il modulo che richiede la versione 7, carica la versione 8. Vedi il mio aggiornamento sopra.
Oz123,

Si prega di vedere la mia modifica.
chili555

Ecco una segnalazione bug bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1704799 - si spera che tu possa scaricare il firmware mancante e risolvere il problema.
zeroconf,

3

Penso che dipenda dal tuo kernel:

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

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

Ubuntu 14.04 è 3.13, quindi carica 22.24. 8 .0.

Ubuntu 14.10 è 3.16, quindi carica 25.228. 9 .0.

Posso connettermi con entrambi, anche se il primo è stato traballante per me ... i punteggi di speedtest.net erano 2-3 Mbps in giù contro 25 Mbps in giù con il secondo. YMMV.


Cosa usa 4.4.0-21-generico?
Martin Thoma,

1

Lo stesso qui ... ma con kernel stock

$ 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

Ma caricherò solo se scarico e installo 7260-8 da http://wireless.kernel.org/en/users/Drivers/iwlwifi

Forse qualcuno ha dimenticato di cambiare qualcosa nelle informazioni del conducente. La mia installazione aveva -7e -9, stranamente, abbastanza.

Fortunatamente funziona con -8, anche con la modalità monitor.

Spero che sia d'aiuto!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.