W jaki sposób jądro Linuksa wybiera wersję oprogramowania układowego do załadowania?

12

Zainstalowałem najnowsze oprogramowanie dla mojej karty sieciowej N-7260 z http://wireless.kernel.org/en/users/Drivers/iwlwifi#Firmware . Używam Ubuntu 14.04 z jądrem w wersji 3.14.01 z ppa zespołu jądra . Oto lista oprogramowania, w którym mam /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

Obecnie wydaje się, że wersja 9 nie ładuje się. Jeśli usunę wersję 8, po uruchomieniu pojawia się następujący komunikat:

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!

Moje pytanie brzmi:

Jak mam powiedzieć Linuksowi, że powinien się załadować iwlwifi-7260-9.ucode?

aktualizacja

O dziwo, załadowana wersja oprogramowania to teraz 8, przynajmniej według 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
źródło
AFAIK 22.24.8.0 to wersja oprogramowania układowego 9. Wersja 8 to 22.15.8.0. Zobacz intel.com/support/wireless/wlan/sb/CS-034398.htm
jhasse
Aby potwierdzić ustalenia Pablo, moim problemem było to, że SSH przestał odpowiadać krótko po ponownym uruchomieniu. Po zainstalowaniu oprogramowania układowego iwlwifi-7260-8.ucode w / lib / firmware i ponownym uruchomieniu nie było już uruchomionego SSH bez żadnych problemów z Wi-Fi. Mój system to Intel NUC z zainstalowanym 14.04 LTS. Dzięki Pablo Nowy na tym forum, więc nie mogę jeszcze głosować, w przeciwnym razie miałbyś mój głos.
Używanie 14.04 z jądrem 3.13.0-36-generic ładuje oprogramowanie układowe w wersji 22.24.8.0 op_mode iwlmvm i DZIAŁA! idealnie (bez włączania / wyłączania zasilania). . Ale kiedy uaktualnić jądro do 3,16 *, jego ładowanie firmware wersja 23.214.9.0, a prędkość jest straszna (przy włączonym zasilaniu) i połową prędkości (przy wyłączonym zasilaniu)
Tosho
@Tosho, cóż, oprogramowanie układowe tego układu jest po prostu złe. Mam różne problemy z tym układem.
Oz123
@ Oz123 Tak. ale jak powiedziałem, 22.24.8.0 działa idealnie. Nie jestem pewien, czy problem dotyczy najnowszego oprogramowania układowego, czy jądra 3.16.
Tosho,

Odpowiedzi:

5

Żądana wersja oprogramowania układowego jest zapisywana w kodzie sterownika. Jak widać, konkretna wersja, jeśli iwlwifi używasz oprogramowania -7. Nie można go znaleźć i kończy się błędem. Możesz to zobaczyć w 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

Co twój raport? Czy próbowałeś zmienić nazwę oprogramowania wewnętrznego -9 na -7, oczywiście po utworzeniu kopii zapasowej?

Właściwie uważam, że dla 7260 urządzeń modinfo sugeruje -7, ale sterownik faktycznie używa -8. Nie znam żadnej wersji sterownika, która wymaga -9. Być może wersja jądra 3.15-xx.

chili555
źródło
Witam, Próbowałem swoje rozwiązanie, ale ja wciąż widząc błąd: Direct firmware load failed with error -2. Innym problemem jest to, że gardzi modułem wymagającym wersji 7, ładuje wersję 8. Zobacz moją aktualizację powyżej.
Oz123
Proszę zobaczyć moją edycję.
chili555
Oto jeden raport o błędzie bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1704799 - mam nadzieję, że możesz pobrać brakujące oprogramowanie i naprawić problem.
zeroconf
3

Myślę, że to zależy od twojego jądra:

  • 3.10+ używa oprogramowania układowego -7
  • 3.13+ używa oprogramowania układowego -8
  • 3.14.9+ używa oprogramowania wewnętrznego -9
  • 3.17+ używa oprogramowania układowego -10

Źródło: http://wireless.kernel.org/en/users/Drivers/iwlwifi

Ubuntu 14.04 to 3.13, więc ładuje 22,24. 8 .0.

Ubuntu 14.10 to 3.16, więc ładuje 25.228. 9 .0.

Mogę połączyć się z obydwoma, choć pierwszy był dla mnie niestabilny ... wyniki speedtest.net spadły o 2-3 Mb / s w porównaniu do 25 Mb / s z drugim. YMMV.

Hans
źródło
Z czego korzysta ogólny 4.4.0-21?
Martin Thoma,
1

To samo tutaj ... ale z podstawowym jądrem

$ 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

Ale załaduje się tylko, jeśli pobiorę i zainstaluję 7260-8 z http://wireless.kernel.org/en/users/Drivers/iwlwifi

Może ktoś zapomniał coś zmienić w informacjach kierowcy. Moja instalacja miała -7i -9, o dziwo, dość.

Na szczęście działa z -8, nawet w trybie monitorowania.

Mam nadzieję, że to pomoże!

Pablo
źródło