iwlwifi
Az iwlwifi az Intel vezeték nélküli lapkakészleteihez készült vezeték nélküli illesztőprogram. A megfelelő működéshez szükséges a kernel Wi-Fi vermének a támogatása, valamint a kártyaspecifikus firmware, amely futásidőben töltődik be.
Kernel
A megfelelő működéshez bizonyos kernelbeállításra van szükség. Az illesztőprogram támogatja a 802.11a/b/g/n/ac szabványokat (az eszköztől függően), ezért szükséges az IEEE 802.11 engedélyezése.
IEEE 802.11
Aktiválja legalább a cfg80211 ( CONFIG_CFG80211 ) és a mac80211 ( CONFIG_MAC80211 ) kernelmodulokat. A részletekért tekintse meg a Wi-Fi cikk IEEE 802.11 szekcióját .
Eszközt működtető iwlwifi illesztőprogram
Használja ezt az illesztőprogramot az Intel
jelenlegi vezeték nélküli lapkakészleteihez
. Állítsa be kernelmodulnak
<M>
, ahogyan itt látható. Továbbá szükséges a megfelelő
DVM
vagy
MVM
firmware-opció a
Module
oszlop szerint a
firmware táblázatban
.
Device Drivers --->
[*] Network device support --->
[*] Wireless LAN --->
[*] Intel devices
<M> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi)
<M> Intel Wireless WiFi DVM Firmware support
<M> Intel Wireless WiFi MVM Firmware support
Ha az illesztőprogram be van építve a bináris futtatható kernelképfájlba (
<*>
) a különálló kernelmodulfájl helyett (
<M>
), akkor a firmware-t is be kell építeni
a kernelképfájlba
. Tekintse meg a
Beépített beállítás használata
szakaszt.
A bináris futtatható kernelképfájl forráskódból történő újraépítése és az ezzel a kernelképfájllal való számítógép újraindítás után a kiválasztott opciók az alábbi módon ellenőrizhetők le:
user
$
zgrep 'IWLWIFI\|IWLDVM\|IWLMVM' /proc/config.gz
Firmware
További firmware szükséges az egyes eszközökhöz, amelyeket ebben a táblázatban vannak felsorolva. A legújabb firmware mindig elérhető a sys-kernel/linux-firmware szoftvercsomagban. Ha nem található meg a linux-firmware szoftvercsomagban, akkor az eszközspecifikus sys-firmware/iwlxxxx-*ucode szoftvercsomagokban lehet megtalálni.
Az upstream Intel útmutatások [1] azt javasolják, hogy minden iwlwifi ucode kerüljön hozzáadásra a számítógép által binárisan futtatható kernelképfájlhoz. Ez kényelmi szempontból ajánlott, azonban kissé megnöveli a forráskódból lefordított bináris kernelképfájlnak a méretét.
root
#
emerge --ask sys-kernel/linux-firmware
Beépített beállítás használatakor
Ha az illesztőprogram bele van fordítva (be van építve) a számítógép által futtatható bináris kernelképfájlba (
<*>
) különálló kernelmodulfájl helyett (
<M>
), akkor a firmware-t is bele kell fordítani (bele kell építeni)
a kernelbe
.
Device Drivers --->
Generic Driver Options --->
Firmware loader --->
-*- Firmware loading facility
(iwlwifi-xxxx.ucode) Build named firmware blobs into the kernel binary
(/lib/firmware) Firmware blobs root directory
[ ] Enable the firmware sysfs fallback mechanism
Ebben az esetben cserélje le az
iwlwifi-xxxx.ucode
fájlt a pontos firmware névre. Úgy tűnik, hogy különös figyelmet kell fordítani a
FW_LOADER_USER_HELPER_FALLBACK
beállítására.
Optional: savedconfig
A
savedconfig
USE jelölőzászló beállítható a
Linux firmware
számára annak érdekében, hogy elkerülje a felesleges elemeket a
/lib/firmware/
könyvtárban.
Például az Intel® Centrino® Advanced-N 6205 az iwlwifi-6000g2a-ucode firmware-t igényli, míg minden más megjegyzésbe tehető vagy törölhető.
/etc/portage/savedconfig/sys-kernel/linux-firmware
Ügyeljen arra, hogy a verziószám eltávolításra kerüljön
iwlwifi-6000g2a-5.ucode
iwlwifi-6000g2a-6.ucode
Annak érdekében, hogy a következő firmware-frissítés során ezek a beállítások ne vesszenek el, el kell távolítani a verziószámot.
user
$
cd /etc/portage/savedconfig/sys-kernel
root
#
mv linux-firmware{-20200316,}
Legújabb firmware-verzió, amely támogatja az eszközt
Az alábbiakban található egy hiányos lista a legújabb ismert firmware blob-okról, amelyek támogatják az adott lapkakészletet. Az eszközneveket a lspci segítségével lehet lekérdezni.
| Eszköz neve | Firmware blob fájlneve | Firmware verziója |
|---|---|---|
| Intel Corporation Wi-Fi 6 AX200 (rev 1a) | iwlwifi-cc-a0-77.ucode |
77.ad46c98b.0
|
Tesztelés
Az eszköz elérhetősége a következő módszerekkel ellenőrizhető az új kernel újraindítása vagy a modulok betöltése után:
/sys fájlrendszer
Szerezze meg az eszköz nevét a /sys/class/net könyvtár tartalmának felsorolásával a ls -al vagy a tree parancs segítségével (amit a app-text/tree szoftvercsomag biztosít):
user
$
tree /sys/class/net
/sys/class/net/ ├── enp2s14 -> ../../devices/pci0000:00/0000:00:1e.0/0000:02:0e.0/net/enp2s14 ├── lo -> ../../devices/virtual/net/lo ├── sit0 -> ../../devices/virtual/net/sit0 └── wlp8s0 -> ../../devices/pci0000:00/0000:00:1c.0/0000:08:00.0/net/wlp8s0
ip parancs
Az eszköz nevének megszerzéséhez és annak ellenőrzéséhez, hogy az vezeték nélküli kártya felismerésre került-e, hajtsa végre a következő ip parancsot :
user
$
ip addr
3: wlan0: ...
ifconfig parancs
A ifconfig parancs a sys-apps/net-tools szoftvercsomagon keresztül érhető el. Használja a ifconfig -a parancsot az összes felismerhető hálózati kártya listázásához, még azokat is, amelyek még nincsenek engedélyezve/aktív állapotban:
user
$
ifconfig -a
wlan0 ...
Egy hálózati kártya az alábbi módon aktiválható:
root
#
ifconfig -v wlan0 up
SIOCSIFFLAGS: Operation not possible due to RF-kill WARNING: at least one error occurred. (-1)
Ebben a példában a vezeték nélküli kártya engedélyezése sikertelen volt, mivel rádiófrekvenciás letiltási állapot van beállítva (általában azért, hogy csökkenjen az energiafogyasztás, és el legyen kerülve a véletlenszerű csatlakozás egy vezeték nélküli hálózathoz).
iw parancs
Ha a vezeték nélküli hálózati kártya illesztőprogramja támogatja az nl80211 stack-et, akkor a net-wireless/iw szoftvercsomag által biztosított iw parancs meg tudja jeleníteni a felismerhető vezeték nélküli kártyákat:
root
#
iw dev
phy#0 Interface wlan0 ifindex 4 type managed
modprobe és modinfo
A modprobe parancs semmint nem szabad, hogy visszaadjon:
root
#
modprobe iwlwifi
A legtöbb információ az illesztőprogram kernelmodulfájljáról a modinfo iwlwifi paranccsal szerezhető meg:
user
$
modinfo iwlwifi
lspci
Az
lspci
parancsnak meg kell jelenítenie az
iwlwifi
értéket mind a
Kernel driver in use:
, mind a
Kernel modules:
esetében.
root
#
lspci -nnkv | sed -n '/Network/,/^$/p'
03:00.0 Network controller [0280]: Intel Corporation Centrino Advanced-N 6205 [Taylor Peak] [8086:0082] (rev 34)
Subsystem: Intel Corporation Centrino Advanced-N 6205 AGN [8086:1321]
Flags: bus master, fast devsel, latency 0, IRQ 33
Memory at f7d00000 (64-bit, non-prefetchable) [size=8K]
Capabilities: [c8] Power Management version 3
Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [e0] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Device Serial Number confidential
Kernel driver in use: iwlwifi
Kernel modules: iwlwifi
Az
xx:xx.x
azonosító hasznos lesz a dmesg parancstól érkező specifikus információk szűrésére.
dmesg
Ellenőrizze a dmesg kimenetét. Cserélje le a
03:00.0
értéket az
lspci
azonosítójával, valamint a
wlp
értéket a
hálózati interfész nevével
.
user
$
dmesg | grep -i -E '03:00.0|wlp|iwl|80211'
[ 0.251986] pci 0000:03:00.0: [8086:0082] type 00 class 0x028000 [ 0.252146] pci 0000:03:00.0: reg 0x10: [mem 0xf7d00000-0xf7d01fff 64bit] [ 0.252863] pci 0000:03:00.0: PME# supported from D0 D3hot D3cold [ 3.621978] cfg80211: Loading compiled-in X.509 certificates for regulatory database [ 3.629362] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7' [ 3.634986] iwlwifi 0000:03:00.0: enabling device (0100 -> 0102) [ 3.635111] iwlwifi 0000:03:00.0: can't disable ASPM; OS doesn't have ASPM control [ 3.644480] iwlwifi 0000:03:00.0: loaded firmware version 18.168.6.1 op_mode iwldvm [ 3.659269] iwlwifi 0000:03:00.0: CONFIG_IWLWIFI_DEBUG disabled [ 3.659270] iwlwifi 0000:03:00.0: CONFIG_IWLWIFI_DEBUGFS disabled [ 3.659271] iwlwifi 0000:03:00.0: CONFIG_IWLWIFI_DEVICE_TRACING enabled [ 3.659273] iwlwifi 0000:03:00.0: Detected Intel(R) Centrino(R) Advanced-N 6205 AGN, REV=0xB0 [ 3.694543] ieee80211 phy0: Selected rate control algorithm 'iwl-agn-rs' [ 3.695812] iwlwifi 0000:03:00.0 wlp3s0: renamed from wlan0 [ 5.060307] iwlwifi 0000:03:00.0: Radio type=0x1-0x2-0x0 [ 5.352853] iwlwifi 0000:03:00.0: Radio type=0x1-0x2-0x0 [ 5.431804] IPv6: ADDRCONF(NETDEV_UP): wlp3s0: link is not ready [ 8.908518] wlp3s0: authenticate with <my WLAN AP> [ 8.912238] wlp3s0: send auth to <my WLAN AP> (try 1/3) [ 9.016437] wlp3s0: send auth to <my WLAN AP> (try 2/3) [ 9.120455] wlp3s0: send auth to <my WLAN AP> (try 3/3) [ 9.125773] wlp3s0: authenticated [ 9.126019] wlp3s0: waiting for beacon from <my WLAN AP> [ 9.148418] wlp3s0: associate with <my WLAN AP> (try 1/3) [ 9.191232] wlp3s0: RX AssocResp from <my WLAN AP> (capab=0x1431 status=0 aid=2) [ 9.211860] wlp3s0: associated [ 9.242532] IPv6: ADDRCONF(NETDEV_CHANGE): wlp3s0: link becomes ready [ 9.249856] wlp3s0: Limiting TX power to 20 (20 - 0) dBm as advertised by <my WLAN AP>
Hibaelhárítás
Kernel nem töltődött be
Ellenőrizze, hogy a megfelelő bináris futtatható kernelképfájl van-e betöltve a számítógép memóriájába. Ez a következőképpen valósítható meg (az IKCONFIG funkciótól függően):
user
$
zgrep CONFIG_IWL /proc/config.gz
Firmware problémák
- Az udevet vagy systemd init rendszert használó operációs rendszerek esetében elengedhetetlen a kernelt úgy beállítani, hogy az betöltse a bináris blob fájlokat a memóriába. Ebben az esetben a vezeték nélküli kártya firmware-je az a firmware, amelyet be kell tölteni a memóriába. További információ a kernel ilyen módon történő beállításáról megtalálható a következő Gentoo fórum témában: FW_LOADER_USER_HELPER_FALLBACK .
- Linux firmware for iwlwifi ucode failed with error -2 típusú hiba. Leírás erről a hibáról a https://z-issue.com/wp/ webhelyről.
Nem működik a vezeték nélküli kapcsolat
- Intel Corporation Wireless 8260 (3a revízió) nem lehet elérni az RSA szemafort, írásvédett
- Intel Wireless-AC 9560 iwlwifi nem működik a 5.4.0 kernelben
- Linux kernel 5.6.0 iwlwifi hiba
- Intel Corporation Wi-Fi 6 AX200 (1a revízió). Ha a dmesg üzenetben megjelenik a pci_enable_msi failed - -38 hiba, és a kártya Input/output hibát mutat annak ellenére, hogy a megfelelő firmware be van töltve a memóriába, próbálja meg engedélyezni a Message Signaled Interrupts (MSI és MSI-X) kernelopciót ( CONFIG_PCI_MSI )
Device Drivers --->
[*] PCI support --->
[*] Message Signaled Interrupts (MSI and MSI-X)
Nincs internetkapcsolat, már a nagy fejszét készítem. Mit tegyek?
Ilyen esetekben sem a számítógép fejszével történő teljes kiirtása, sem a benzinnel történő lelocsolása, majd felgyújtása se nem segít. Bízzon bennünk! Ha lehetséges csatlakozni egy hozzáférési ponthoz, de nem lehet csatlakozni semmilyen szerverhez, illetve az internetkapcsolat nem működik, akkor érdemes lehet megpróbálni letiltani az 802.11n szabványt és/vagy engedélyezni a szoftveres titkosítást. Ehhez szükséges a
iwlwifi.11n_disable=1
vagy
iwlwifi.11n_disable=8
és/vagy
iwlwifi.swcrypto=1
paraméter átadása a kernelnek. Annak érdekében, hogy a paraméter automatikusan átadásra kerüljön a kernelmodul memóriába történő betöltésekor, a következő fájlt kell létrehozni:
/etc/modprobe.d/iwlwifi.conf
Disabling 802.11n, enabling software crypto
options iwlwifi 11n_disable=1 swcrypto=1
Az újabb kernelekben, amelyeket az 5.3.7-es verzióig ellenőriztek, a 11n_disable=1 beállítás (vagy 0x01 maszkolással) azzal a következménnyel jár, hogy az 802.11ac letiltásra kerül. Ez korlátozni fogja az eszközt legfeljebb 54 Mbit átviteli sebességre.
Hálózat összeomlik a nagy terhelés alatt
Egyes vezeték nélküli hálózati kártyákon (például Intel® Wi-Fi 6 AX201) nagy terhelés alatt a hálózat összeomlik egy hasonló hibaüzenettel:
root
#
dmesg
[ 367.411551] iwlwifi 0000:00:14.3: reached 20 old SN frames from 77:77:77:77:77:77 on queue 2, stopping BA session on TID 3
Alternatív megoldásként az RX-aggregációt le kell tiltani a
iwlwifi.11n_disable=4
kernelparaméter használatával.
/etc/modprobe.d/iwlwifi.conf
Disabling RX aggregation
options iwlwifi 11n_disable=4
"Microcode SW error detected. Restarting 0x0" üzenet a kernelnaplókban
root
#
dmesg | grep iwlwifi
(... redacted ...) [ 5711.326985] iwlwifi 0000:28:00.0: Microcode SW error detected. Restarting 0x0. [ 5711.326987] iwlwifi 0000:28:00.0: Start IWL Error Log Dump: [ 5711.326990] iwlwifi 0000:28:00.0: Transport status: 0x0000004A, valid: 6 [ 5711.326992] iwlwifi 0000:28:00.0: Loaded firmware version: 71.058653f6.0 ty-a0-gf-a0-71.ucode [ 5711.326993] iwlwifi 0000:28:00.0: 0x00000071 | NMI_INTERRUPT_UMAC_FATAL [ 5711.326995] iwlwifi 0000:28:00.0: 0x00008210 | trm_hw_status0 [ 5711.326998] iwlwifi 0000:28:00.0: 0x00000000 | trm_hw_status1 [ 5711.327001] iwlwifi 0000:28:00.0: 0x004DAEA2 | branchlink2 [ 5711.327003] iwlwifi 0000:28:00.0: 0x004D9974 | interruptlink1 [ 5711.327004] iwlwifi 0000:28:00.0: 0x004D9974 | interruptlink2 [ 5711.327006] iwlwifi 0000:28:00.0: 0x0000C314 | data1 [ 5711.327008] iwlwifi 0000:28:00.0: 0x00000010 | data2 [ 5711.327009] iwlwifi 0000:28:00.0: 0x00000000 | data3 (... redacted ...) [ 5711.329587] iwlwifi 0000:28:00.0: ieee80211 phy0: Hardware restart was requested
Ez arra utal, hogy a WiFi adapter mikrovezérlője súlyos hibát észlelt, ami miatt újraindításra került. Ennek következménye lehet a hálózat megszakadása és/vagy jelentős lassulások még a hozzáférési ponthoz (AP-hez) való csatlakozás helyreállítása után is. A probléma gyökerét nehezen lehet megtalálni (platform saját rádiózaja, hibás firmware stb.), azonban az első kipróbálható lépések egyike, még akkor is, ha az iwlwifi modulhoz tartozó energiagazdálkodás le van tiltva, az, hogy megakadályozzuk a WiFi hálózati adapter PCIe kapcsolatát az energiatakarékos módba való átlépésben. Ezt az iwlmvm kernelmodul által használt
power_scheme
érték
1
(aktív) módra állításával lehet elérni.
/etc/modprobe.d/iwlmvm.conf
A power_scheme átváltása 'active' állapotra
options iwlmvm power_scheme=1
A https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi weboldalon javasolt további ellenintézkedések között szerepel a 40 MHz-es csatornák használatának letiltása a 2,4 GHz-es sávban, amely szintén segíthet.
/etc/modprobe.d/cfg80211.conf
A 40 MHz-es csatornák használatának kikapcsolása (2.4 Ghz-es rádiósáv)
options cfg80211 cfg80211_disable_40mhz_24ghz=Y
További olvasnivaló a témában
- Handbook:AMD64/Networking/Wireless
- Wifi — describes the setup of a Wi-Fi (wireless) network device.
- Wpa_supplicant — egy kérelmező program
- Network management using DHCPCD — bemutatja, hogy miként lehet a dhcpcd szolgáltatást a teljes hálózati verem kezelésére használni.
- Netifrc — Gentoo's default framework for configuring and managing network interfaces on systems running OpenRC .
- Troubleshooting — felhasználók számára egy sor technikát és eszközt biztosítson a Gentoo beállításaikkal kapcsolatos hibaelhárításhoz és javításhoz.
Külső források
- https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi
- https://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git
- https://cateee.net/lkddb/web-lkddb/IWLWIFI.html
- https://wiki.archlinux.org/index.php/Wireless_network_configuration#iwlwifi
- Fixing Intel Wi-Fi 6 AX200 latency and ping spikes in Linux