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.