¿Cómo elige el kernel de Linux qué versión de firmware cargar?

12

Instalé el último firmware para mi tarjeta de red N-7260 de http://wireless.kernel.org/en/users/Drivers/iwlwifi#Firmware . Estoy usando Ubuntu 14.04 con la versión del kernel 3.14.01 del ppa del equipo del kernel . Aquí hay una lista de firmware que tengo en /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

En este momento parece que la versión 9 no se carga. Si elimino la versión 8, veo en el arranque el siguiente mensaje:

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!

Entonces, mi pregunta es:

¿Cómo le digo a Linux que debería cargar iwlwifi-7260-9.ucode?

actualizar

Curiosamente, la versión de firmware cargada ahora es 8, al menos según 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
fuente
AFAIK 22.24.8.0 es la versión de firmware 9. La versión 8 es 22.15.8.0. Ver intel.com/support/wireless/wlan/sb/CS-034398.htm
jhasse
Solo para confirmar los hallazgos de Pablo, mi problema fue que SSH dejó de responder un poco después del reinicio. Después de instalar el firmware iwlwifi-7260-8.ucode en / lib / firmware y reiniciar, no he estado funcionando SSH sin ningún problema con Wifi. Mi sistema es un Intel NUC con 14.04 LTS instalado. Gracias Pablo. Nuevo en este foro, así que no puedo votar todavía, de lo contrario tendrías mi voto.
Usar 14.04 con el kernel 3.13.0-36-generic es cargar la versión de firmware 22.24.8.0 op_mode iwlmvm y ¡FUNCIONA! perfectamente (sin encendido / apagado mater). Pero cuando actualizo el kernel a 3.16. *, Está cargando la versión de firmware 23.214.9.0, y la velocidad es terrible (con el encendido) y la mitad de la velocidad (con el apagado)
Tosho
@Tosho, bueno, el firmware para este chip es simplemente malo. Tengo varios problemas con este chip.
Oz123
@ Oz123 Sí. pero como dije el 22.24.8.0 funciona perfecto. No estoy seguro de si el problema es del último firmware o del kernel 3.16.
Tosho

Respuestas:

5

La versión de firmware que se solicita está escrita en el código del controlador. Como puede ver, la versión particular si iwlwifi que está utilizando solicita -7 firmware. No puede encontrarlo y termina en un error. Puedes ver esto en 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

¿Qué informa el tuyo? ¿Has intentado renombrar el firmware -9 como -7, después de hacer una copia de seguridad, por supuesto?

De hecho, creo que, para 7260 dispositivos, modinfo sugiere -7 pero el controlador realmente usa -8. No conozco ninguna versión de controlador que requiera -9. Quizás kernel versión 3.15-xx.

chili555
fuente
Hola, He intentado la solución, pero todavía estoy viendo el error: Direct firmware load failed with error -2. Y un problema diferente es que, despreciando el módulo que requiere la versión 7, carga la versión 8. Vea mi actualización anterior.
Oz123
Por favor vea mi edición.
chili555
Aquí hay un informe de error bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1704799 : espero que pueda descargar el firmware faltante y solucionar el problema.
zeroconf
3

Creo que depende de tu núcleo:

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

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

Ubuntu 14.04 es 3.13, por lo que carga 22.24. 8 .0.

Ubuntu 14.10 es 3.16, por lo que carga 25.228. 9 .0.

Puedo conectarme con ambos, aunque el primero fue escaso para mí ... los puntajes de speedtest.net fueron 2-3Mbps abajo versus 25Mbps abajo con el segundo. YMMV.

Hans
fuente
¿Qué usa 4.4.0-21-genérico?
Martin Thoma,
1

Lo mismo aquí ... pero con el núcleo de 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

Pero solo se cargará si descargo e instalo 7260-8 desde http://wireless.kernel.org/en/users/Drivers/iwlwifi

Tal vez alguien olvidó cambiar algo en la información del conductor. Mi instalación tenía -7y -9, por extraño que parezca.

Afortunadamente funciona con el -8, incluso con el modo monitor.

¡Espero eso ayude!

Pablo
fuente