iwlwifi

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

iwlwifiIntel の現行の無線チップのための無線ドライバです。

カーネル

動作させるためにはカーネルコンフィグが必要です。ドライバは 802.11a/b/g/n/ac(デバイスによって異なります)をサポートしているので、IEEE 802.11 を有効にする必要があります。

IEEE 802.11

少なくとも cfg80211mac80211 を有功にしてください。

KERNEL 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 は固有の輻輳制御アルゴリズム iwl-agn-rs を提供します、#dmesg を確認してください。

Important
wireless configuration API (CONFIG_CFG80211) をモジュールとしてビルド (<M>) するのではなく、カーネルに組み込む (<*>) 場合、ドライバが regulatory.db/lib/firmware からロードできず、規制ドメインサポートが機能しなくなるでしょう。CONFIG_CFG80211=m を設定するか、regulatory.db と regulatory.db.p7s を CONFIG_EXTRA_FIRMWARE に設定してください。

iwlwifi デバイスドライバ

Intel の現行の無線チップにはこのドライバを使用してください。次に示すとおり、モジュール <M> として設定してください。加えて、DVM または MVM のうち正しいほうをファームウェアの表Module の列を見て選択する必要があります。

KERNEL linux-4.19
Device Drivers  --->
 
        [*] Network device support  --->
 
        --- Network device support
        [*]   Wireless LAN  --->
 
            --- Wireless LAN
            [ ]   mac80211-based legacy WDS support
            [ ]   ADMtek devices
            [ ]   Atheros/Qualcomm devices
            [ ]   Atmel devices
            [ ]   Broadcom devices
            [ ]   Cisco devices
            [*]   Intel devices
            < >     Intel PRO/Wireless 2100 Network Connection
            < >     Intel PRO/Wireless 2200BG and 2915ABG Network Connection
            < >     Intel Wireless WiFi 4965AGN (iwl4965)
            < >     Intel PRO/Wireless 3945ABG/BG Network Connection (iwl3945)
            <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
                      Debugging Options  --->
            [ ]   Intersil devices
            [ ]   Marvell devices
            [ ]   MediaTek devices
            [ ]   Ralink devices
            [ ]   Realtek devices
            [ ]   Redpine Signals Inc devices
            [ ]   STMicroelectronics devices
            [ ]   Texas Instrument devices
            [ ]   ZyDAS devices
            [ ]   Quantenna wireless cards support
            < >   Simulated radio testing tool for mac80211
            < >   Wireless RNDIS USB support
Important
ドライバをモジュールとしてビルドする(<M>)のではなく、カーネルに組み込む(<*>)場合は、ファームウェアもカーネルに組み込む必要があります。カーネルに組み込む場合の節を見てください。
カーネルコンフィグを変更した後は忘れずにカーネルを再ビルドしてください。

カーネルを再ビルドし、このカーネルで再起動したら、選択は次のように確認できます:

Note
/proc/config.gz 疑似ファイルのサポートは Kernel/IKCONFIG support 機能によって有効化することができます。
user $zgrep 'IWLWIFI\|IWLDVM\|IWLMVM' /proc/config.gz

ファームウェア

この表にある通り、各デバイス毎に追加の firmware も必要です。これは sys-linux/linux-firmware で利用可能です。もし linux-firmware に存在しない場合は、デバイス個別の sys-firmware/iwlxxxx-*ucode パッケージで見つかるかもしれません。

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

カーネルに組み込む場合

ドライバをモジュールとしてビルドする(<M>)のではなく、カーネルに組み込む(<*>)場合は、ファームウェアもカーネルに組み込む必要があります。

KERNEL linux-4.19
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

iwlwifi-xxxx.ucodeを実際のファームウェア名に置き換えてください。FW_LOADER_USER_HELPER_FALLBACK にも注意してください。

追加可能: savedconfig

/lib/firmware に不要なものがインストールされるのを防ぐために、Linux firmwaresavedconfig USE フラグを設定することができます。

例えば、 Intel® Centrino® Advanced-N 6205iwlwifi-6000g2a-ucode を必要としている一方で、他はすべてコメントアウト、あるいは削除できます。

FILE /etc/portage/savedconfig/sys-kernel/linux-firmwareバージョン番号が取り除かれていることに注意してください
iwlwifi-6000g2a-5.ucode
iwlwifi-6000g2a-6.ucode

次のファームウェアアップデート時にこれらの設定が失われないようにするには、バージョン番号を取り除く必要があります。

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

ネットワークデバイス名

カーネルによって提供される eth0 や wlan0 のようなネットワークデバイス名は、通常は /lib/udev/rules.d/80-net-name-slot.rules での udev ルールによってシステムの起動時に変更されます (dmesg 参照)。

旧来の命名ルールを維持するには、/etc/udev/rules.d ディレクトリ内に、同じ名称のファイルを空で作成することで上書きします:

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


テスト

新しいカーネルで再起動するかモジュールを読み込んだ後で、以下の方法を使ってデバイスが利用可能かテストできます:

/sys ファイルシステム

/sys/class/net ディレクトリの内容を ls -al や(app-text/tree パッケージに入っている)tree コマンドで一覧表示させます:

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 コマンド

デバイス名を取得したりワイヤレスカードが認識されているか検証するには、以下の ip コマンドを実行します:

user $ip addr
3: wlan0:   ...

ifconfig コマンド

ifconfig コマンドは sys-apps/net-tools パッケージを通じて提供されています。まだ有効化されていないものやアクティブになっていないものも含め、認識されているすべてのネットワークカードのリストを表示するには ifconfig -a を使用してください:

user $ifconfig -a
wlan0     ...

以下のようにして、ネットワークカードをアクティブにできます:

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

この例では、(通常はベイの電力消費を抑え、また偶然ワイヤレスネットワークに接続してしまわないようにする目的で) radio frequency kill state がセットされているため、ワイヤレスカードの有効化は失敗しています。

iw コマンド

ワイヤレスネットワークカードのドライバーが nl80211 スタックをサポートしていれば、 net-wireless/iw パッケージで提供される iw コマンドで、認識されているワイヤレスカードを表示できます:

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

modprobe と modinfo

modprobe は何も出力しないはずです:

root #modprobe iwlwifi

ドライバモジュールに関するほとんどの情報は modinfo iwlwifi から得られます

user $modinfo iwlwifi

lspci

lspciKernel driver in use:Kernel modules: の欄に iwlwifi と表示するはずです:

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

xx:xx.x 形式の識別名は dmesg からの特定の情報を grep するのに役立ちます。

dmesg

dmesg の出力を確認してください。03:00.0lspci から得られた識別名で読み替え、wlpネットワークインターフェース名で読み替えてください。

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>

トラブルシューティング

カーネルがロードされない

正しいカーネルがロードされているか確認してください。次のようにして行えます(IKCONFIG 機能が必要です):

user $zgrep CONFIG_IWL /proc/config.gz

ファームウェアの問題

  • 無線カードにファームウェアの読み込みが必要な場合、udevもしくはsystemdを使っているシステムに対して、バイナリを読み込むようにカーネルを設定することは必須事項です。カーネルの設定に関するさらなる詳細は、以下のGentoo forumsのスレッドを参照してください: FW_LOADER_USER_HELPER_FALLBACK.

無線が動作していない

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

インターネットに接続されていない

アクセスポイントに接続済みであるが、未だにどのサーバーもしくはインターネットにアクセスできない場合は、802.11nを無効化して、(もしくは)software encryptionを有効化することが良いかもしれません。iwlwifiモジュールに11n_disable=1または11n_disable=8と(もしくは)swcrypto=1のオプションを設定することができます。モジュールを読み込む時に自動的にオプションを適応するには、以下のように次のファイル(/etc/modprobe.d/iwlwifi.conf)を設定してください。

FILE /etc/modprobe.d/iwlwifi.conf802.11nを無効化して、software cryptoを有効化する
options iwlwifi 11n_disable=1 swcrypto=1
Note
より新しいカーネルでは、5.3.7 で確認されていますが、11n_disable=1 を設定する (または 0x01 でマスクされる) と 802.11ac が無効化されてしまいます。これは最大スループット 54Mbit にデバイスを制限するでしょう。

参照

外部の情報