Comment le noyau Linux choisit-il la version du firmware à charger?

12

J'ai installé le dernier micrologiciel pour ma carte réseau N-7260 à partir de http://wireless.kernel.org/en/users/Drivers/iwlwifi#Firmware . J'utilise Ubuntu 14.04 avec la version 3.14.01 du noyau de l'équipe ppa du noyau . Voici une liste de firmware que j'ai dans /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

À l'heure actuelle, il semble que la version 9 ne se charge pas. Si je supprime la version 8, je vois au démarrage le message suivant:

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!

Donc, ma question est:

Comment dire à Linux qu'il doit se charger iwlwifi-7260-9.ucode?

mise à jour

Curieusement, la version du firmware chargée est maintenant 8, du moins selon 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
la source
AFAIK 22.24.8.0 est la version 9 du micrologiciel. La version 8 est 22.15.8.0. Voir intel.com/support/wireless/wlan/sb/CS-034398.htm
jhasse
Juste pour confirmer les conclusions de Pablo, mon problème était que SSH cesse de répondre peu de temps après le redémarrage. Après avoir installé le micrologiciel iwlwifi-7260-8.ucode dans / lib / firmware et redémarré, je n'ai pas installé SSH sans aucun problème via Wifi. Mon système est un Intel NUC avec 14.04 LTS installé. Merci Pablo Nouveau sur ce forum donc je ne peux pas encore voter, sinon vous auriez mon vote.
L'utilisation de 14.04 avec le noyau 3.13.0-36-generic charge la version 22.24.8.0 du micrologiciel op_mode iwlmvm et cela FONCTIONNE! parfaitement (pas de mise sous / hors tension). Mais quand je mets à niveau le noyau vers 3.16. *, Sa version de firmware de chargement 23.214.9.0, et la vitesse est terrible (avec l'alimentation sous tension) et la moitié de la vitesse (avec l'alimentation hors tension)
Tosho
@Tosho, eh bien, le firmware de cette puce est tout simplement mauvais. J'ai divers problèmes avec cette puce.
Oz123
@ Oz123 Ouais. mais comme je l'ai dit, le 22.24.8.0 fonctionne parfaitement. Je ne sais pas si le problème vient du dernier firmware ou du noyau 3.16.
Tosho

Réponses:

5

La version du micrologiciel demandée est écrite dans le code du pilote. Comme vous pouvez le voir, la version particulière si iwlwifi que vous utilisez demande le firmware -7. Il ne le trouve pas et se termine par une erreur. Vous pouvez le voir dans 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

Que rapporte le vôtre? Avez-vous essayé de renommer le firmware -9 en -7, après la sauvegarde, bien sûr?

Je pense en fait que, pour 7260 appareils, modinfo suggère -7 mais le pilote utilise en fait -8. Je ne connais aucune version de pilote qui appelle -9. Peut-être la version 3.15-xx du noyau.

chili555
la source
Salut, j'ai essayé votre solution, mais je vois toujours l'erreur: Direct firmware load failed with error -2. Et un autre problème est que malgré le module nécessitant la version 7, il charge la version 8. Voir ma mise à jour ci-dessus.
Oz123
Veuillez voir ma modification.
chili555
Voici un rapport de bug bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1704799 - j'espère que vous pourrez télécharger le firmware manquant et résoudre le problème.
zeroconf
3

Je pense que cela dépend de votre noyau:

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

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

Ubuntu 14.04 est 3.13 charge donc 22.24. 8 .0.

Ubuntu 14.10 est 3.16 charge donc 25.228. 9 .0.

Je peux me connecter avec les deux, bien que le premier ait été floconneux pour moi ... les scores de speedtest.net étaient en baisse de 2-3 Mbps contre 25 Mbps avec le second. YMMV.

Hans
la source
Qu'est-ce que 4.4.0-21-générique utilise?
Martin Thoma
1

Même chose ici ... mais avec le noyau 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

Mais ne se chargera que si je télécharge et installe le 7260-8 depuis http://wireless.kernel.org/en/users/Drivers/iwlwifi

Peut-être que quelqu'un a oublié de changer quelque chose dans les informations du pilote. Mon installation avait -7et -9, assez curieusement.

Heureusement, cela fonctionne avec le -8, même avec le mode moniteur.

J'espère que cela aide!

Pablo
la source