Iwlwifi

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Iwlwifi and the translation is 44% complete.
Outdated translations are marked like this.
Other languages:
English • ‎español • ‎polski • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어
Resources

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

커널

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

IEEE 802.11

Activate at least cfg80211 and mac80211.

커널 linux-4.19
[*] Networking support  --->
    [*] Wireless  --->
        <M>   cfg80211 - wireless configuration API
        [ ]     nl80211 testmode command
        [ ]     enable developer warnings
        [ ]     cfg80211 certification onus
        [*]     enable powersave by default
        [ ]     cfg80211 DebugFS entries
        [ ]     support CRDA
        [ ]     cfg80211 wireless extensions compatibility
        <M>   Generic IEEE 802.11 Networking Stack (mac80211)
        [ ]   Minstrel
              *** Some wireless drivers require a rate control algorithm ***
        [ ]   Enable mac80211 mesh networking (pre-802.11s) support
        -*-   Enable LED triggers
        [ ]   Export mac80211 internals in DebugFS
        [ ]   Trace all mac80211 debug messages
        [ ]   Select mac80211 debugging features  ----

iwlwifi brings its own rate control algorithm iwl-agn-rs, see #dmesg.

중요
In case the wireless configuration API (CONFIG_CFG80211) is built into the kernel (<*>) instead as a module (<M>), the driver won't be able to load regulatory.db from /lib/firmware resulting in broken regulatory domain support. Please set CONFIG_CFG80211=m or add regulatory.db and regulatory.db.p7s to CONFIG_EXTRA_FIRMWARE.

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:

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

펌웨어

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

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,}

네트워크 장치 이름

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.

추가 참조

외부 자료