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

J’ai installé le dernier micrologiciel de ma carte réseau N-7260 à l’ adresse http://wireless.kernel.org/en/users/Drivers/iwlwifi#Firmware . J’utilise Ubuntu 14.04 avec la version du kernel 3.14.01 de l’ équipe ppa du kernel . 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 puis-je dire à Linux qu’il doit charger iwlwifi-7260-9.ucode ?

mettre à jour

Curieusement, la version du micrologiciel chargé est maintenant la 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 

La version du firmware demandée est écrite dans le code du pilote. Comme vous pouvez le constater, la version particulière si vous utilisez iwlwifi demande le microprogramme -7. Il ne peut pas le trouver 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  version: in-tree: description: Intel(R) Wireless WiFi driver for Linux  firmware: iwlwifi-7260-7.ucode 

Que rapporte le tien? Avez-vous essayé de renommer le microprogramme -9 en tant que -7, après la sauvegarde, bien sûr?

Je pense en réalité que, pour 7260 périphériques, 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 du kernel 3.15-xx.

Je pense que cela dépend de votre kernel:

  • 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 alors charge 22.24. 8 .0.

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

Je peux communiquer avec les deux, même si le premier était floconneux pour moi … Les scores de speedtest.net étaient de 2-3 Mbps contre 25 Mbps pour le second. YMMV.

Idem ici … mais avec le kernel en 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 je ne chargerai que si je télécharge et installe 7260-8 à partir de 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 -7 et -9 , curieusement.

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

J’espère que cela aide!