Iwlwifi

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Iwlwifi and the translation is 19% complete.
Outdated translations are marked like this.
Resources

iwlwifi인텔의 현재 무선 네트워크 칩을 구동하는 무선 네트워크 장치 드라이버입니다.

동작하게 하려면 일부 커널 설정이 필요합니다. (장치에 따라) 드라이버에서 802.11a/b/g/n/ac를 지원하므로, IEEE 802.11를 활성화해야 합니다.

IEEE 802.11

Activate at least cfg80211 (CONFIG_CFG80211) and mac80211 (CONFIG_MAC80211). For details see IEEE 802.11 section of Wi-Fi artice.

iwlwifi 장치 드라이버

인텔의 현재 무선 네트워크 칩에 이 드라이버를 사용하십시오. 여기에 나타난대로 모듈<M>로 설정하십시오. 또한 펌웨어 표모듈 칸에서 필요한 내용에 따라 DVM 옵션 또는 MVM 옵션을 수정하십시오.

커널 linux-4.1
Device Drivers  --->
 
        [*] Network device support  --->
 
        --- Network device support
        [*]   Wireless LAN  --->
 
            --- Wireless LAN
            < >   Marvell 8xxx Libertas WLAN driver support with thin firmware
            < >   Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards
            < >   Atmel at76c50x chipset  802.11b support
            < >   Atmel at76c503/at76c505/at76c505a USB cards
            < >   Intersil Prism GT/Duette/Indigo PCI/Cardbus (DEPRECATED)
            < >   USB ZD1201 based Wireless device support
            < >   Wireless RNDIS USB support
            < >   Realtek 8180/8185/8187SE PCI support
            < >   Realtek 8187 and 8187B USB support
            < >   ADMtek ADM8211 support
            < >   Simulated radio testing tool for mac80211
            < >   Marvell 88W8xxx PCI/PCIe Wireless support
            < >   Atheros Wireless Cards  ----
            < >   Broadcom 43xx wireless support (mac80211 stack)
            < >   Broadcom 43xx-legacy wireless support (mac80211 stack)
            < >   Broadcom IEEE802.11n PCIe SoftMAC WLAN driver
            < >   Broadcom IEEE802.11n embedded FullMAC WLAN driver
            < >   IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP)
            < >   Intel PRO/Wireless 2100 Network Connection
            < >   Intel PRO/Wireless 2200BG and 2915ABG Network Connection
            <M>   Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi)
            <M>     Intel Wireless WiFi DVM Firmware support (NEW)
            <M>     Intel Wireless WiFi MVM Firmware support (NEW)
                    *** WARNING: iwlwifi is useless without IWLDVM or IWLMVM *** 
            [ ]     Enable broadcast filtering
            [ ]     enable U-APSD by default
                    Debugging Options  ---> 
            < >   Intel Wireless WiFi 4965AGN (iwl4965)
            < >   Intel PRO/Wireless 3945ABG/BG Network Connection (iwl3945)
            < >   Marvell 8xxx Libertas WLAN driver support
            < >   Hermes chipset 802.11b support (Orinoco/Prism2/Symbol)
            < >   Softmac Prism54 support
            < >   Ralink driver support  ----
            < >   Realtek rtlwifi family of devices  ----
            [ ]   TI Wireless LAN support  ----
            < >   ZyDAS ZD1211/ZD1211B USB-wireless support
            < >   Marvell WiFi-Ex Driver
            < >   CW1200 WLAN support
            < >   Redpine Signals Inc 91x WLAN driver support
중요
커널에 드라이버를 모듈(<M>) 대신 넣는 방식(<*>)으로 빌드하면, 펌웨어도 커널에 넣어 빌드해야합니다. 내장 설정 활용 섹션을 확인하십시오.
커널 설정을 바꾸고 나면 커널 재 빌드를 잊지 마십시오.

After rebuilding the kernel and rebooting with this kernel, the selected options can be verified as follows:

user $zgrep 'IWLWIFI\|IWLDVM\|IWLMVM' /proc/config.gz
참고
Support for the /proc/config.gz file can be enabled through the Kernel/IKCONFIG support feature.

펌웨어

이 표en에 나온 대로 개별 장치의 펌웨어가 필요합니다. sys-kernel/linux-firmware 꾸러미와 장치별 sys-firmware/iwlxxxx-*ucode 꾸러미로 있습니다.

Upstream Intel instructions recommend[1] adding all iwlwifi ucode to the kernel image. This is recommended for convenience, however it will bloat the kernel slightly.

root #emerge --ask sys-kernel/linux-firmware

내장 설정 활용

모듈(<M>)대신 커널 내장형으로 드라이버를 빌드하면, 펌웨어도 커널에 넣어en 빌드해야합니다.

커널 linux-4.1
Device Drivers  --->
 
            Generic Driver Options  --->
 
            -*- Userspace firmware loading support
            [ ]   Include in-kernel firmware blobs in kernel binary
            (iwlwifi-xxxx.ucode) External firmware blobs to build into the kernel binary
            (/lib64/firmware) Firmware blobs root directory
            [ ] Fallback user-helper invocation for firmware loading

이 경우 iwlwifi-xxxx.ucode 대신 정확한 펌웨어 이름으로 바꾸십시오. FW_LOADER_USER_HELPER_FALLBACK 설정 변수에 몇가지 사항을 확인해봐야 할 수도 있습니다.

Optional: savedconfig

The savedconfig USE flag could be set for Linux firmware in order to avoid unneeded stuff in /lib/firmware/.

As for example the Intel® Centrino® Advanced-N 6205 needs iwlwifi-6000g2a-ucode while anything else may be commented out or deleted.

파일 /etc/portage/savedconfig/sys-kernel/linux-firmwareTake care that version number is removed
iwlwifi-6000g2a-5.ucode
iwlwifi-6000g2a-6.ucode

In order to not lose these settings on next firmware update the version number needs to be removed:

user $cd /etc/portage/savedconfig/sys-kernel
root #mv linux-firmware{-20200316,}

네트워크 장치 이름

경고
This section is obsolete. See Udev#Optional: Disable_or_override_predictable_network_interface_naming for updated instructions.

Network device names such as eth0 or wlan0 as provided by the kernel are normally changed on system boot (see dmesg) by the /lib/udev/rules.d/80-net-name-slot.rules udev rule.

To keep the classic naming this rule can be overwritten with an equally named empty file in the /etc/udev/rules.d directory:

root #touch /etc/udev/rules.d/80-net-name-slot.rules


Testing

After a reboot with the new kernel or after loading the modules, the device can be checked for availability by using following methods:

/sys file system

Get the device name by listing the /sys/class/net directory contents using ls -al or the tree command (provided by the app-text/tree package):

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 command

To obtain the device name and verify that the wireless card is detected, execute the following ip command:

user $ip addr
3: wlan0:   ...

ifconfig command

The ifconfig command is provided through the sys-apps/net-tools package. Use ifconfig -a to list all detected network cards, even those that are not enabled/active yet:

user $ifconfig -a
wlan0     ...

A network card can be activated as follows:

root #ifconfig -v wlan0 up
SIOCSIFFLAGS: Operation not possible due to RF-kill
WARNING: at least one error occurred. (-1)

In this example, enabling the wireless card failed as a radio frequency kill state is set (usually to keep power consumption at bay and not connect by accident to a wireless network).

iw command

If the wireless network card driver supports the nl80211 stack, then the iw command as offered by the net-wireless/iw package can show the detected wireless cards:

root #iw dev
   phy#0
	Interface wlan0
		ifindex 4
		type managed

modprobe와 modinfo

modprobe 에서는 어떤 결과도 나오지 말아야 합니다:

root #modprobe iwlwifi

드라이버 모듈에 대한 자세한 내용은 modinfo iwlwifi 명령에서 확인할 수 있습니다.

user $modinfo iwlwifi

lspci

lspci 명령에서 Kernel driver in use:Kernel modules: 두 부분에 iwlwifi가 나타나야합니다.

root #lspci -k
xx:xx.x Network controller: Intel Corporation Wireless xxxx
        Kernel driver in use: iwlwifi
        Kernel modules: iwlwifi

xx:xx.x 식별자는 dmesg에서 지정 정보를 찾아볼 때 쓸만합니다.

dmesg

dmesg 출력 내용을 확인하십시오. xx:xx.x를 lspci 정보에 해당하는 내용으로 바꾸십시오.

user $dmesg | grep -i 'xx:xx.x\|wlan\|iwl\|80211'

문제 해결

Kernel not loaded

Check if the correct kernel is loaded. This can be accomplished as follows (depends on the IKCONFIG feature):

user $zgrep CONFIG_IWL /proc/config.gz

펌웨어 문제

  • udev 또는 systemd를 사용하는 시스템에는 커널에서 바이너리 블롭을 불러오도록 설정해야합니다. 이 경우, 무선 카드 펌웨어는 불러와야 할 펌웨어입니다. 이 방식으로 커널을 설정하는 자세한 방법은 젠투 포럼의 다음 스레드에서 찾아볼 수 있습니다: FW_LOADER_USER_HELPER_FALLBACK.

무선 연결이 동작하지 않네요

커널
Device Drivers  --->
    [*] PCI support  --->
        [*] Network device support  --->
        [*]   Message Signaled Interrupts (MSI and MSI-X)

No internet connection

If you can connect to an access point, but still can't connect to any server or get any connection to the internet it might be worth a try to disable 802.11n and/or enable software encryption. You can pass the 11n_disable=1 or 11n_disable=8 and/or swcrypto=1 option to the iwlwifi module. In order to pass the option automatically on module load create the file /etc/modprobe.d/iwlwifi.conf as follows:

파일 /etc/modprobe.d/iwlwifi.confDisabling 802.11n, enabling software crypto
options iwlwifi 11n_disable=1 swcrypto=1
참고
In newer kernels, inspected as of 5.3.7, setting 11n_disable=1 (or masked with 0x01) will result in 802.11ac being disabled. This will limit the device to a maximum of 54Mbit throughput.

"Microcode SW error detected. Restarting 0x0" message in kernel logs

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

This indicates that a severe error has been encountered by the WiFi adapter's micro-controller which led it to be reset. Consequences might be network drop outs and/and severe slow downs even after the connection to the AP has been restored. The root cause might be difficult to point out (platform own radio noise/buggy firmware/etc) however one of the very first things to try, even if the power management has been disabled for the iwlwifi module, is to prevent the WiFi adapter PCIe link to go in power save mode. This is accomplished by changing the power_scheme value used by the iwlmvm module to 1 (active):

파일 /etc/modprobe.d/iwlmvm.confChanging power_scheme to 'active'
options iwlmvm power_scheme=1

Amongst additional countermeasures suggested on https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi disabling 40 MHz channels usage on the 2.4GHz band might also help:

파일 /etc/modprobe.d/cfg80211.confTurning off 40 MHz channels usage (2.4 Ghz band)
options cfg80211 cfg80211_disable_40mhz_24ghz=Y

추가 참조

외부 자료

References