「ネットワーク設定/ワイヤレス」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(Pkg/AUR テンプレートの更新)
(同期)
 
(6人の利用者による、間の70版が非表示)
1行目: 1行目:
 
[[Category:無線ネットワーク]]
 
[[Category:無線ネットワーク]]
  +
[[Category:ネットワーク設定]]
[[cs:Wireless network configuration]]
 
 
[[de:(W)LAN und Arch Linux]]
 
[[de:(W)LAN und Arch Linux]]
[[el:Wireless network configuration]]
+
[[en:Network configuration/Wireless]]
[[en:Wireless network configuration]]
+
[[pt:Network configuration (Português)/Wireless]]
[[es:Wireless network configuration]]
+
[[ru:Network configuration (Русский)/Wireless]]
  +
[[zh-hans:网络配置/无线网络配置]]
[[fa:تنظیمات شبکه ی بی سیم]]
 
[[fr:Wifi]]
 
[[it:Wireless network configuration]]
 
[[nl:Wireless network configuration]]
 
[[ro:Wireless]]
 
[[ru:Wireless network configuration]]
 
[[th:Wireless network configuration]]
 
[[zh-hans:Wireless network configuration]]
 
 
{{Related articles start}}
 
{{Related articles start}}
{{Related|ネットワーク設定}}
 
 
{{Related|ソフトウェアアクセスポイント}}
 
{{Related|ソフトウェアアクセスポイント}}
 
{{Related|アドホックネットワーク}}
 
{{Related|アドホックネットワーク}}
 
{{Related|インターネット共有}}
 
{{Related|インターネット共有}}
{{Related|WPA2 Enterprise}}
 
 
{{Related|ワイヤレスボンディング}}
 
{{Related|ワイヤレスボンディング}}
  +
{{Related|ネットワークデバッグ}}
 
{{Related|Bluetooth}}
 
{{Related|Bluetooth}}
 
{{Related articles end}}
 
{{Related articles end}}
  +
  +
ネットワーク設定に関するメインの記事は [[ネットワーク設定]] です。
   
 
ワイヤレスネットワークの設定は2段階で行います; まずワイヤレスデバイスを使うために正しいドライバがインストールされているか確認し(インストールメディア上では利用できても、明示的にインストールする必要があります)、インターフェースを設定します。次に、ワイヤレス接続を管理する方法を選びます。この記事では両方をカバーしています。また、ワイヤレス管理ツールへの追加リンクもあります。
 
ワイヤレスネットワークの設定は2段階で行います; まずワイヤレスデバイスを使うために正しいドライバがインストールされているか確認し(インストールメディア上では利用できても、明示的にインストールする必要があります)、インターフェースを設定します。次に、ワイヤレス接続を管理する方法を選びます。この記事では両方をカバーしています。また、ワイヤレス管理ツールへの追加リンクもあります。
  +
  +
[[#iw]] セクションでは {{Pkg|iw}} を使ってワイヤレスネットワークインターフェイス/ワイヤレス LAN を手動で管理する方法を説明しています。[[ネットワーク設定#ネットワークマネージャ]] セクションでは、ワイヤレスインターフェイスを自動的に管理する際に使用できるいくつかのプログラムについて説明しています。それらはすべてネットワークプロファイルのサポートを含んでおり(ノート PC のようにワイヤレスネットワークを頻繁に切り替える際に便利です)、それらのうち一部は GUI を含んでいます。
   
 
== デバイスドライバ ==
 
== デバイスドライバ ==
   
デフォルトの Arch Linux カーネルは''モジュール式''です、つまりマシンに必要なドライバの多くはハードドライブに置かれ、''[[カーネルモジュール|モジュール]]''として利用されます。起動時に、[[udev]] がハードウェアの棚卸実施。Udev はハードウェアに必要である適切なモジュール(ドライバ)をロードし、次に、ドライバをロドしてカーネル''インターフェス''作成ます。
+
デフォルトの Arch Linux カーネルは''モジュール式''です、つまりマシンハードウェアに必要なドライバの多くはハードドライブに置かれ、[[カーネルモジュール|モジュール]]として利用可能となります。起動時に、[[udev]] がハードウェアの一覧作成、対応ハードウェア用の適切なモジュール(ドライバ)をロードします。これよりネットワ''インターフェス''作成が可能になります。
   
ワイヤレスチップセットによっては、適切なドライバに加えてファームウェアも必要になります。ほとんどのファームウェアイメージはデフォルトでインストールされる {{Pkg|linux-firmware}} パッケージに含まれますが、プロプライエタリなファームウェアイメージは含まれていないため別インストールする必要があります。[[#ドライバー・ファームウェアインストール]]で説明されています。
+
一部のワイヤレスチップセットは、対応するドライバに加えてファームウェアも必要とします。多くのファームウェアイメージは{{Pkg|linux-firmware}} パッケージによっ提供されますが、プロプライエタリなファームウェアイメージは含まれていないため別インストールする必要があります。[[#ドライバー・ファームウェアインストールする]]で説明されています。
   
  +
{{Note|適切なモジュールが起動時に udev によって読み込まれない場合、[[カーネルモジュール#手動でモジュールを扱う|手動でロードしてください]]。udev がひとつのデバイスに対して2つ以上のドライバをロードしてしまうと、競合が起こり、設定に失敗してしまう場合があります。望まないモジュールを[[ブラックリスト|ブラックリスト化]]してください。}}
{{Note|
 
* Udev は完全ではありません。起動時に udev が正しいモジュールをロードしない場合、[[カーネルモジュール#ロード|手動でモジュールをロード]]してください。また、場合によっては udev が1つのデバイスに複数のドライバをロードし、それが衝突を生んで設定が完了できなくなることがあります。不要なモジュールを[[カーネルモジュール#ブラックリスト|ブラックリスト化]]するようにしてください。
 
* インターフェースの名前はドライバやチップセットによって変わります。例: ''wlan0'', ''eth1'', ''ath0''。[[ネットワーク設定#デバイス名]]を参照してください。
 
}}
 
 
{{Tip|絶対に必要というわけではありませんが、最初に [[#手動セットアップ]] で説明されているユーザースペースツールをインストールすると良いでしょう (特に、なんらかの問題が発生する場合)。}}
 
   
 
=== ドライバーの状態を確認する ===
 
=== ドライバーの状態を確認する ===
   
あなたのカードに合ったドライバーがロードされている確認するには、カードを PCI(e) を接続している場合は {{ic|lspci -k}}、USB で接続している場合は {{ic|lsusb -v}} コマンドの出力をチェックしてください。カーネルドライバーが使われているなら、例えば以下のように表示されるはずです:
+
あなたのカード用のドライバーがロードされていることを確認するには、{{ic|lspci -k}} {{ic|lsusb -v}} の出力をてください (カードが PCI(e) と USB のどちらに接続されているかに依存します)。カーネルドライバーが使われているなら、例えば以下のように表示されるはずです:
   
{{hc|$ lspci -k|<nowiki>
+
{{hc|$ lspci -k|
 
06:00.0 Network controller: Intel Corporation WiFi Link 5100
 
06:00.0 Network controller: Intel Corporation WiFi Link 5100
 
Subsystem: Intel Corporation WiFi Link 5100 AGN
 
Subsystem: Intel Corporation WiFi Link 5100 AGN
 
Kernel driver in use: iwlwifi
 
Kernel driver in use: iwlwifi
 
Kernel modules: iwlwifi
 
Kernel modules: iwlwifi
  +
}}
</nowiki>}}
 
   
  +
{{Note|
{{Note|カードが USB デバイスの場合、{{ic|<nowiki>dmesg | grep usbcore</nowiki>}} を実行すると {{ic|usbcore: registered new interface driver rtl8187}} のように表示されるはずです。}}
 
  +
* カードが USB デバイスの場合、{{ic|dmesg {{!}} grep usbcore}} を root ユーザーとして実行すると {{ic|usbcore: registered new interface driver rtl8187}} のように表示されるはずです。
  +
* カードを全く確認できない場合、PCI(e) スロット/USB ポートに適切に接続されていないのかもしれません。もう一度、デバイスを接続し直してみてください。
  +
}}
   
また、{{ic|ip link}} コマンドの出力をックして無線インターフェイス (例: {{ic|wlan0}}, {{ic|wlp2s1}}, {{ic|ath0}}) が作成されているか確認してください。そして、{{ic|ip link set <interface> up}} を実行してインターフェイスを立ち上げさい。例えば、インターフェイスが {{ic|wlan0}} の場合:
+
また、{{ic|ip link}} コマンドの出力を確認し、ワイヤレスインターフイスが作成されたことを確認してください。通常、ワイヤレス[[ネットワークインターフェイス]]の名前は "w" で始まります (例: {{ic|wlan0}}{{ic|wlp2s0}})。そして、以下のコマンドでそのインターフェイスを up 状態にしください:
   
# ip link set wlan0 up
+
# ip link set ''interface'' up
   
  +
例えば、インターフェイスが {{ic|wlan0}} である場合、実行すべきコマンドは {{ic|ip link set wlan0 up}} となります。
次のエラーメッセージが表示される場合: {{ic|SIOCSIFFLAGS: No such file or directory}}、おそらくチップセットを機能させるためにファームウェアが必要です。
 
   
  +
{{Note|
ファームウェアがロードされているかカーネルメッセージを確認してください:
 
  +
* {{ic|RTNETLINK answers: Operation not possible due to RF-kill}} のようなエラーが発生する場合、デバイスがハードロックまたはソフトロックされていないことを確認してください。詳細は [[#Rfkill の注意点]] を参照してください。
  +
* {{ic|SIOCSIFFLAGS: No such file or directory}} というエラーメッセージが発生する場合、ほぼ確実に、あなたのワイヤレスチップセットが機能するにはファームウェアが必要であることを意味します。
  +
}}
   
  +
ファームウェアがロードされたことを示すカーネルメッセージを確認してください:
{{hc|<nowiki>$ dmesg | grep firmware</nowiki>|<nowiki>
 
  +
  +
{{hc|# dmesg {{!}} grep firmware|
 
[ 7.148259] iwlwifi 0000:02:00.0: loaded firmware version 39.30.4.1 build 35138 op_mode iwldvm
 
[ 7.148259] iwlwifi 0000:02:00.0: loaded firmware version 39.30.4.1 build 35138 op_mode iwldvm
  +
}}
</nowiki>}}
 
   
出力がない場合、先に確かめたモジュール (この例では {{ic|iwlwifi}}) の完全な出力メッセージをチェックして関連するメッセージや問題を確認してください:
+
関連する出力がない場合、先ほど特定したモジュール (この例では {{ic|iwlwifi}}) の完全な出力メッセージを確認して関連するメッセージやさらなる問題を見つけてください:
   
{{hc|<nowiki>$ dmesg | grep iwlwifi</nowiki>|<nowiki>
+
{{hc|# dmesg {{!}} grep iwlwifi|2=
 
[ 12.342694] iwlwifi 0000:02:00.0: irq 44 for MSI/MSI-X
 
[ 12.342694] iwlwifi 0000:02:00.0: irq 44 for MSI/MSI-X
 
[ 12.353466] iwlwifi 0000:02:00.0: loaded firmware version 39.31.5.1 build 35138 op_mode iwldvm
 
[ 12.353466] iwlwifi 0000:02:00.0: loaded firmware version 39.31.5.1 build 35138 op_mode iwldvm
71行目: 70行目:
 
...
 
...
 
[ 12.430341] iwlwifi 0000:02:00.0: Detected Intel(R) Corporation WiFi Link 5100 AGN, REV=0x6B
 
[ 12.430341] iwlwifi 0000:02:00.0: Detected Intel(R) Corporation WiFi Link 5100 AGN, REV=0x6B
  +
}}
</nowiki>}}
 
   
カーネルモジュールが正しくロードされ、インターフェイスが立ち上がっている場合、次のセクションを飛ばしてかまいせん
+
カーネルモジュールロードに成功し、インターフェイスが up 状態になっている場合、次のセクションはスキップすることができ
   
 
=== ドライバー・ファームウェアをインストールする ===
 
=== ドライバー・ファームウェアをインストールする ===
   
あなたのカードがサポートされているかどうか調べるために以下のリストを確認してください:
+
以下のリストを確認し、あなたのカードがサポートされているか確認してください:
   
* [https://wireless.wiki.kernel.org/en/users/drivers 既存の Linux ワイヤレスドライバー] から飛べる各ドライバーページにはサポートているデバイスのリストが載っています。[https://wikidevi.com/wiki/List_of_Wi-Fi_Device_IDs_in_Linux Linux における Wi-Fi デバイスの ID リスト] も存在します。
+
* [https://wireless.wiki.kernel.org/en/users/drivers 既存の Linux ワイヤレスドライバー]の表を参照し、サポートされているデバイスのリストを含む特定のドライバーのページにアクセスしください。[https://wikidevi.wi-cat.ru/List_of_Wi-Fi_Device_IDs_in_Linux List of Wi-Fi Device IDs in Linux] もあります。
* [https://help.ubuntu.com/community/WifiDocs/WirelessCardsSupported Ubuntu Wiki] にはワイヤレスカードの一覧と、Linux カーネルユーザースペースドライバによってサポートされているかの情報あります (ドライバ名含)。
+
* [https://help.ubuntu.com/community/WifiDocs/WirelessCardsSupported Ubuntu Wiki] にはワイヤレスカードと、そのカードが Linux カーネルユーザ空間のドライバによってサポートされているかどうかの良質な一覧が (ドライバ名めて) あります
* [http://linux-wless.passys.nl/ Linux Wireless Support] と Linux Questions の [https://www.linuxquestions.org/hcl/index.php?cat=10 Hardware Compatibility List] (HCL) にもカーネルで利用できるハードウェアのデータベースがあります。
+
* [http://linux-wless.passys.nl/ Linux Wireless Support] と Linux Questions の [https://web.archive.org/web/20110711100256/http://www.linuxquestions.org/hcl/index.php?cat=10 Hardware Compatibility List] (HCL) にもカーネルフレンドリーなハードウェアの良質なデータベースがあります。
   
  +
注意点として、一部のベンダーは、異なるチップセットを含む製品を出荷しています (その製品の識別子が同じであるとしてもです)。(USB デバイスの場合) usb-id や (PCI デバイスの場合) pci-id のみが信頼できます。
あなたのワイヤレスカードが上記のリストにあった場合、このページの [[#ドライバとファームウェアのトラブルシューティング]] サブセクションを見て下さい、特定のワイヤレスカードのドライバーやファームウェアのインストール情報が載っています。インストールした後、また[[#ドライバーの状態を確認する|ドライバーの状態を確認]]してください。
 
   
ワイヤレスードウェアが上記のリストになかった場合、おそらくサポトしている Windows のみだ思われます (Broadcom, 3com, etc)。そうったカードについては、[http://ndiswrapper.sourceforge.net/wiki/index.php/List ndiswrapper] を使う必要あります。詳しくは [[#ndiswrapper]] を見さい。
+
あなたのワイヤレスードが上記のリストにった場合、このペ[[#ドライバファームウェアのトラブルシューティング]] サブセクションを見て下さ、特定のワイヤレスカードのドライバーやファームウェアのインストール情報載っています。その後、また[[#ドライバーの状態を確認する|ドライバーの状態を確認]]ください。
   
  +
ワイヤレスハードウェアが上記のリストになかった場合、おそらくサポートしているのが Windows のみだと思われます (一部の Broadcom、3com など)。その場合、[[#ndiswrapper|ndiswrapper]] を使用してみてください。
== ワイヤレス管理 ==
 
   
  +
== ユーティリティ ==
ドライバがインストールされ正しく動作しているとして、次にワイヤレス接続を管理するための方法を選ぶ必要があります。次のサブセクションが方法を決めるのに役立つでしょう。
 
   
  +
他のネットワークインターフェイスと同じように、ワイヤレスインターフェイスも {{Pkg|iproute2}} パッケージの ''ip'' でコントロールします。
複数の理由によって手順とツールが必要になるでしょう:
 
   
  +
ワイヤレス接続は、ワイヤレス認証に [[wpa_supplicant]] や [[iwd]] を使用する[[ネットワークマネージャ]]を使うか、''wpa_supplicant'' や ''iwd'' を直接使うことによって、管理することができます。より低レベルな設定を行いたい場合や、レガシーなドライバやレガシーな認証方式を使用している場合には、{{Pkg|iw}} や非推奨の {{Pkg|wireless_tools}} を使用できます。
* 望む設定管理の種類; 完全に手動なコマンドラインによる設定方法から、グラフィカルフロントエンドによる自動設定まで。
 
* ワイヤレスネットワークを保護する暗号化方式。
 
* コンピュータが使うネットワークを頻繁に変える場合 (ラップトップなど)、ネットワークプロファイルの必要性。
 
   
  +
=== iw と wireless_tools の比較 ===
マニュアル設定はあなたに多くの仕事を課しますが、設定のよりよいコントロールが得られます。
 
一般に、永続的な効果のないコマンドセットを入力する必要があるでしょう、つまり、再起動後に適用はされないでしょう。
 
起動毎にコマンドを入力するのがやっかいな場合は、コマンドをシェルスクリプトに入れて手順を自動化することができます。スクリプトは起動時に自動で実行されるでしょう。[[Arch ブートプロセス]]を見て下さい。
 
   
  +
{| class="wikitable"
{{Tip|
 
  +
! ソフトウェア !! パッケージ !! [https://wireless.wiki.kernel.org/en/developers/documentation/wireless-extensions WEXT]<sup>2</sup> !! [https://wireless.wiki.kernel.org/en/developers/documentation/nl80211 nl80211] !! WEP !! WPA/WPA2/WPA3 !! [[Archiso]]
* どの方法を選ぶにせよ、'''まずは手動で接続を試行するべきです'''。問題がおこったときに必要なことは何でどのようにデバッグすればいいかを知るのに役に立つでしょう。
 
  +
|-
* 可能であれば (例: あなたが Wi-Fi アクセスポイントを管理している場合)、暗号化なしで接続してみて、全てが動作するか確認してください。それから、WEP (設定がシンプルですが数秒でクラックできます)、WPA、WPA2 などの暗号化を使ってみてください。
 
  +
| [https://wireless.wiki.kernel.org/en/users/documentation/iw iw] || {{Pkg|iw}} || {{No}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}}
* マシンを様々な無線ネットワークに接続することが予想される場合、独自の接続管理を提供するツールを使用するほうが楽かもしれません。
 
  +
|-
}}
 
  +
| [https://hewlettpackard.github.io/wireless-tools/Tools.html wireless_tools]<sup>1</sup> || {{Pkg|wireless_tools}} || {{Yes}} || {{no}} || {{Yes}} || {{No}} || {{Yes}}
  +
|}
   
  +
# 非推奨
以下の表はワイヤレスネットワーク接続を有効化・管理するために使われる方法を、暗号化と管理方式、必要になるツールによってまとめています。他の方法も存在しますが、よく使われるのはこの通りです:
 
  +
# 一部の古いドライバは WEXT しかサポートしていないことに注意してください。
   
  +
以下の表は ''iw'' と ''wireless_tools'' の比較可能なコマンドの概要です。さらなる例は [https://wireless.docs.kernel.org/en/latest/en/users/documentation/iw/replace-iwconfig.html Replacing iwconfig with iw] を見てください。
{| class="wikitable" border="1"
 
  +
! 管理方法 || インターフェイスの有効化 || ワイヤレス接続管理 <br>(/=代替) || IP アドレスの取得 <br>(/=代替)
 
  +
{| class="wikitable"
  +
! ''iw'' コマンド
  +
! ''wireless_tools'' コマンド
  +
! 説明
 
|-
 
|-
  +
| iw dev ''wlan0'' link
| [[#手動セットアップ|手動管理]], <br>暗号化なしか WEP || [[Core Utilities#ip|ip]] || {{Pkg|iw}} / [https://www.archlinux.org/packages/?name=wireless_tools iwconfig] || [[Core Utilities#ip|ip]] / [[dhcpcd]] / {{Pkg|dhclient}} / [[systemd-networkd|networkd]]
 
  +
| iwconfig ''wlan0''
  +
| リンクの状態を取得。
 
|-
 
|-
  +
| iw dev ''wlan0'' scan
| [[#手動セットアップ|手動管理]], <br>WPA か WPA2 PSK || [[Core Utilities#ip|ip]] || {{Pkg|iw}} / [https://www.archlinux.org/packages/?name=wireless_tools iwconfig] + [[WPA supplicant|wpa_supplicant]] || [[Core Utilities#ip|ip]] / [[dhcpcd]] / {{Pkg|dhclient}} / [[systemd-networkd|networkd]]
 
  +
| iwlist ''wlan0'' scan
  +
| 利用可能なアクセスポイントをスキャン。
 
|-
 
|-
  +
| iw dev ''wlan0'' set type ibss
| [[#自動セットアップ|自動管理]], <br>ネットワークプロファイルのサポート || colspan="3" align="center" | [[netctl]], [[Wicd]], [[NetworkManager]] など。これらのツールは手動の方法にあるパッケージのリストから必要な依存パッケージを追加でインストールします。
 
  +
| iwconfig ''wlan0'' mode ad-hoc
  +
| 動作モードを ''ad-hoc'' に設定。
  +
|-
  +
| iw dev ''wlan0'' connect ''your_essid''
  +
| iwconfig ''wlan0'' essid ''your_essid''
  +
| 接続してネットワークを開く。
  +
|-
  +
| iw dev ''wlan0'' connect ''your_essid'' 2432
  +
| iwconfig ''wlan0'' essid ''your_essid'' freq 2432M
  +
| 接続して指定したチャンネルのネットワークを開く。
  +
|-
  +
| rowspan="2" | iw dev ''wlan0'' connect ''your_essid'' key 0:''your_key''
  +
| iwconfig ''wlan0'' essid ''your_essid'' key ''your_key''
  +
| 16進数のキーを使って WEP で暗号化されたネットワークに接続。
  +
|-
  +
| iwconfig ''wlan0'' essid ''your_essid'' key s:''your_key''
  +
| ASCII 文字のキーを使って WEP で暗号化されたネットワークに接続。
  +
|-
  +
| iw dev ''wlan0'' set power_save on
  +
| iwconfig ''wlan0'' power on
  +
| 省電力機能を有効にする。
 
|}
 
|}
   
  +
== iw ==
===手動セットアップ===
 
 
他のネットワークインターフェイスと同じように、無線インターフェイスは {{Pkg|iproute2}} パッケージの ''ip'' で操作します。さらに {{Pkg|iw}} パッケージはワイヤレス接続を管理する基本的なツールのセットを提供します。あなたのカードで ''iw'' が動かない場合は、昔の {{Pkg|wireless_tools}} を使ってみて下さい。[[#iw と wireless_tools の比較表]]を参照。また、WPA/WPA2 暗号化を使うには、{{pkg|wpa_supplicant}} パッケージをインストールする必要があります。これらのパワフルなユーザースペースのツールはすこぶる良く動作し、ワイヤレス接続を完全に手動で操作できます。
 
   
 
{{Note|
 
{{Note|
* 手動で設定するツールや {{Pkg|netctl}} は[[:カテゴリ:Arch の入手とインストール|インストールメディア]]に同梱されています。
 
* このセクションに出てくる例ではあなたのワイヤレスデバイスを ''wlan0''、wifi のアクセスポイントを {{ic|''your_essid''}} と仮定しています。それぞれ適切な文字列に置き換えて下さい。
 
 
* ほとんどのコマンドは [[ユーザーとグループ|root 権限]]で実行する必要があることに注意してください。通常ユーザーで実行すると、コマンドによっては (例: ''iwlist'') エラーを出さずに終了して正しい出力をしないため、混乱をきたすおそれが有ります。
 
* ほとんどのコマンドは [[ユーザーとグループ|root 権限]]で実行する必要があることに注意してください。通常ユーザーで実行すると、コマンドによっては (例: ''iwlist'') エラーを出さずに終了して正しい出力をしないため、混乱をきたすおそれが有ります。
 
* ハードウェアや暗号化方式によっては、手順のいくつかは必要ありません。カードによってはアクセスポイントに関連付けをして IP アドレスを取得する前に、インターフェースの有効化やアクセスポイントのスキャニングが必要なことがあります。実験が必要かもしれません。例えば、WPA/WPA2 ユーザーは [[#関連付け]] の手順から直接ワイヤレスネットワークを有効化できます。}}
 
* ハードウェアや暗号化方式によっては、手順のいくつかは必要ありません。カードによってはアクセスポイントに関連付けをして IP アドレスを取得する前に、インターフェースの有効化やアクセスポイントのスキャニングが必要なことがあります。実験が必要かもしれません。例えば、WPA/WPA2 ユーザーは [[#関連付け]] の手順から直接ワイヤレスネットワークを有効化できます。}}
   
  +
このセクションに出てくる例ではあなたのワイヤレスデバイスを {{ic|''interface''}}、wifi のアクセスポイントを {{ic|''your_essid''}} と仮定しています。それぞれ適切な文字列に置き換えて下さい。
==== 情報を取得する ====
 
   
  +
=== インターフェイス名の取得 ===
{{Tip|''iw'' ツールの [https://wireless.kernel.org/en/users/Documentation/iw 公式ドキュメント] により多くのサンプルがあります。}}
 
   
  +
{{Tip|''iw'' ツールの [https://wireless.wiki.kernel.org/en/users/documentation/iw 公式ドキュメント] により多くのサンプルがあります。}}
* まず無線インターフェイスの名前を調べる必要があります。次のコマンドを使って確認できます:
 
   
  +
ワイヤレスインターフェイスの名前を取得するには:
{{hc|$ iw dev|
 
phy#0
 
Interface '''wlan0'''
 
ifindex 3
 
wdev 0x1
 
addr 12:34:56:78:9a:bc
 
type managed
 
channel 1 (2412 MHz), width: 40 MHz, center1: 2422 MHz
 
}}
 
   
  +
$ iw dev
* リンクの状態を確認するには、次のコマンドを使って下さい。アクセスポイント (AP) に接続されていないと以下のように表示されます:
 
   
  +
インターフェイス名は "Interface" という単語のあとに出力されます。例えば、インターフェイス名は {{ic|wlan0}} が一般的です。
{{hc|$ iw dev wlan0 link|
 
Not connected.
 
}}
 
   
  +
=== インターフェイスの状態の取得 ===
AP に接続されている場合は、以下のように表示されるはずです:
 
   
  +
リンクの状態を確認するには、次のコマンドを使ってください。
{{hc|$ iw dev wlan0 link|
 
Connected to 12:34:56:78:9a:bc (on wlan0)
 
SSID: MyESSID
 
freq: 2412
 
RX: 33016518 bytes (152703 packets)
 
TX: 2024638 bytes (11477 packets)
 
signal: -53 dBm
 
tx bitrate: 150.0 MBit/s MCS 7 40MHz short GI
 
   
  +
$ iw dev ''interface'' link
bss flags: short-preamble short-slot-time
 
dtim period: 1
 
beacon int: 100
 
}}
 
   
* 次のコマンドで tx/rx バイトの総量やシグナルの強さとった統計値を取得することができます:
+
次のコマンドで tx/rx バイトの総量やシグナルの強さとった統計値を取得することができます:
   
{{hc|$ iw dev wlan0 station dump|
+
$ iw dev ''interface'' station dump
Station 12:34:56:78:9a:bc (on wlan0)
 
inactive time: 1450 ms
 
rx bytes: 24668671
 
rx packets: 114373
 
tx bytes: 1606991
 
tx packets: 8557
 
tx retries: 623
 
tx failed: 1425
 
signal: -52 dBm
 
signal avg: -53 dBm
 
tx bitrate: 150.0 MBit/s MCS 7 40MHz short GI
 
authorized: yes
 
authenticated: yes
 
preamble: long
 
WMM/WME: yes
 
MFP: no
 
TDLS peer: no
 
}}
 
   
====インターフェスの有効化====
+
=== インターフェスの有効化 ===
   
''(通常は不要)''
+
{{Tip| 通常、この手順は不要です。}}
   
カードによっては {{ic|iw}}{{ic|wireless_tools}} を使う前にカーネルインターフェースを初期化する必要があります:
+
カードによっては ''iw''''wireless_tools'' を使う前にカーネルインターフェースをアクティブ化する必要があります:
   
# ip link set wlan0 up
+
# ip link set ''interface'' up
   
{{Note|{{ic|RTNETLINK answers: Operation not possible due to RF-kill}} のようなエラーが表示される場合、ハードウェアのスイッチが''オン''になっているか確認してください。また、あなたの無線ネットワークカードがソフトブロックされている可能性もあります。詳しくは [[#Rfkill によるブロック]] を見てさい。}}
+
{{Note|{{ic|RTNETLINK answers: Operation not possible due to RF-kill}}のようなエラーが表示される場合、ハードウェアのスイッチが''オン''になっているか確認してください。詳は [[#Rfkill の注意点]] を見てください。}}
   
 
インターフェイスが立ち上がっているか確認するには、次のコマンドの出力を見て下さい:
 
インターフェイスが立ち上がっているか確認するには、次のコマンドの出力を見て下さい:
   
{{hc|# ip link show wlan0|
+
{{hc|$ ip link show ''interface''|
 
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000
 
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000
 
link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff
 
link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff
208行目: 193行目:
 
{{ic|<BROADCAST,MULTICAST,UP,LOWER_UP>}} にある {{ic|UP}} がインターフェイスが立ち上がっていることを示しています。後ろにある {{ic|state DOWN}} は関係ありません。
 
{{ic|<BROADCAST,MULTICAST,UP,LOWER_UP>}} にある {{ic|UP}} がインターフェイスが立ち上がっていることを示しています。後ろにある {{ic|state DOWN}} は関係ありません。
   
====アクセスポイント検索====
+
=== アクセスポイント検索 ===
   
 
利用できるアクセスポイントを見るには:
 
利用できるアクセスポイントを見るには:
   
# iw dev wlan0 scan | less
+
# iw dev ''interface'' scan | less
   
{{Note|{{ic|Interface doesn't support scanning}} と表示される場合、おそらくファームウェアのインストールを忘れているはずです。''iw'' が root 権限で実行されていない時にもこのメッセージが表示されることがあります。}}
+
{{Note|{{ic|Interface does not support scanning}} と表示される場合、おそらくファームウェアのインストールを忘れているはずです。''iw'' が root 権限で実行されていない時にもこのメッセージが表示されることがあります。}}
   
{{Tip|住んでいる地域によっては、利用できるネットワークを全て表示するために[[#規制範囲|規制範囲]]を正しく設定する必要があります。}}
+
{{Tip|住んでいる地域によっては、利用できるネットワークを全て表示するために[[#規制範囲に従う|規制範囲]]を正しく設定する必要があります。}}
   
 
チェックするべきポイント:
 
チェックするべきポイント:
   
* SSID: ネットワークの名前。
+
* '''SSID:''' ネットワークの名前。
* Signal: dBm 単位ワイヤレス出力 (例: -100 から 0)。負のが0に近づくほど、信号が良いことをています。
+
* '''Signal:''' は dBm 単位ワイヤレスの信号強度を報告します(例: -100 から 0)。負の 0 に近づくほど、信号の品質が良いことをます。良質なリンクや低品質なリンクで報告された強度を観察することで、それぞれの範囲を知ることができます。
* Security: 直接は報告されません、{{ic|capability}} から始まる行を見て下さい。{{ic|capability: ESS Privacy ShortSlotTime (0x0411)}} のように {{ic|Privacy}} が含まれている場合、そのネットワークは保護されています。
+
* '''Security:''' 直接は報告されません、{{ic|capability}} から始まる行を見て下さい。{{ic|capability: ESS Privacy ShortSlotTime (0x0411)}} のように {{ic|Privacy}} が含まれている場合、そのネットワークは保護されています。
** {{ic|RSN}} 情報ブロックがある場合、そのネットワークは [[Wikipedia:Robust Security Network|Robust Security Network]] プロトコル、別名 WPA2 によって保護されています。
+
** {{ic|RSN}} 情報ブロックがある場合、そのネットワークは [[Wikipedia:IEEE 802.11i-2004|Robust Security Network]] プロトコル、別名 WPA2 によって保護されています。
** {{ic|WPA}} 情報ブロックがある場合、そのネットワークは [[Wikipedia:Wi-Fi Protected Access|Wi-Fi Protected Access]] プロトコルによって保護されています。
+
** {{ic|WPA}} 情報ブロックがある場合、そのネットワークは [[Wikipedia:Wi-Fi Protected Access|Wi-Fi Protected Access]] プロトコルによって保護されています。
 
** {{ic|RSN}} や {{ic|WPA}} ブロックには以下の情報が含まれていることがあります:
 
** {{ic|RSN}} や {{ic|WPA}} ブロックには以下の情報が含まれていることがあります:
*** Group cipher: 値は TKIP, CCMP, その両方, もしくはその他。
+
*** '''Group cipher:''' 値は TKIP, CCMP, その両方, もしくはその他。
*** Pairwise ciphers: 値は TKIP, CCMP その両方, もしくはその他。Group cipher と同じ値である必要はありません。
+
*** '''Pairwise ciphers:''' 値は TKIP, CCMP その両方, もしくはその他。Group cipher と同じ値である必要はありません。
*** Authentication Suites: 値は PSK, 802.1x, もしくはその他。家庭用ルーターでは、一般的に PSK になるでしょう (''つまり''パスフレーズ)。大学などでは、ログインとパスワードが必要な 802.1x スイートになると思われます。利用するためにはどのキーマネージメント (例: EAP) とカプセル化 (例: PEAP) が使われているか知る必要があります。詳しくは [[Wikipedia:Authentication protocol]] と関連記事を見て下さい。
+
*** '''Authentication Suites:''' 値は PSK, 802.1x, もしくはその他。家庭用ルーターでは、一般的に PSK になるでしょう (''つまり''パスフレーズ)。大学などでは、ログインとパスワードが必要な 802.1x スイートになると思われます。利用するためにはどのキーマネージメント (例: EAP) とカプセル化 (例: PEAP) が使われているか知る必要があります。詳しくは [[Wikipedia:Authentication protocol]] と関連記事を見て下さい。
 
** {{ic|Privacy}} があるのに {{ic|RSN}} や {{ic|WPA}} ブロックがない場合、WEP が使われています。
 
** {{ic|Privacy}} があるのに {{ic|RSN}} や {{ic|WPA}} ブロックがない場合、WEP が使われています。
   
====動作モード====
+
=== 動作モードの設定 ===
 
''(任意、または必須)''
 
   
 
ワイヤレスカードの正しい動作モードを設定する必要があるかもしれません。具体的に言うと、[[アドホックネットワーク|アドホック]]ネットワークに接続したい場合、動作モードを {{ic|ibss}} に設定する必要があります:
 
ワイヤレスカードの正しい動作モードを設定する必要があるかもしれません。具体的に言うと、[[アドホックネットワーク|アドホック]]ネットワークに接続したい場合、動作モードを {{ic|ibss}} に設定する必要があります:
   
# iw dev wlan0 set type ibss
+
# iw dev ''interface'' set type ibss
   
{{Note|カードによっては、動作モードを変更するためにワイヤレスインターフェースを ''down'' させておく必要があるかもしれません ({{ic|ip link set wlan0 down}})。}}
+
{{Note|カードによっては、動作モードを変更するためにワイヤレスインターフェースを ''down'' させておく必要があるかもしれません ({{ic|ip link set ''interface'' down}})。}}
   
  +
{{Note|動作モードを AP に変更する間 ({{ic|iw ''interface'' set type ap}})、以下のようなエラーが発生するでしょう:
====関連付け====
 
  +
You need to run a management daemon, e.g. hostapd,
  +
see https://wireless.wiki.kernel.org/en/users/documentation/hostapd
  +
for more information on how to do that.
   
  +
これは、動作モードを {{ic|__ap}} に変更することによりバイパス可能です ({{ic|iw ''interface'' set type __ap}})。
暗号化方式によって、利用するアクセスポイントと暗号化キーをワイヤレスデバイスに関連付ける必要があります。
 
  +
}}
   
  +
=== アクセスポイントへの接続 ===
* '''暗号化なし'''
 
   
  +
暗号化方式によっては、使用するワイヤレスデバイスをアクセスポイントと関連付けて、暗号化キーを渡す必要があります:
# iw dev wlan0 connect ''your_essid''
 
   
  +
* '''暗号化なし''' {{bc|# iw dev ''interface'' connect "''your_essid''"}}
 
* '''WEP'''
 
* '''WEP'''
  +
** 16進数、または ASCII キーを使用する(WEP のキーは固定長なので、キーの形式は自動的に判別されます): {{bc|# iw dev ''interface'' connect "''your_essid''" key 0:''your_key''}}
  +
** 16進数、または ASCII キーを使用し、3番目に設定したキーをデフォルトとして指定する(キーは 0 からカウントされます。4 つまで可能です): {{bc|# iw dev ''interface'' connect "''your_essid''" key d:2:''your_key''}}
  +
* '''その他'''
  +
** ''iw'' は WEP のみを扱えます。他の暗号化スキームを使用して接続する場合、下記の [[#認証]] を見てください。
   
  +
どの方法を使用しても、正しく関連付けできたかどうかは以下で確認できます:
十六進数キーか ASCII キーを使う (WEP キーは長さが固定されているため、どちらの形式かは自動で識別されます):
 
   
# iw dev wlan0 connect ''your_essid'' key 0:''your_key''
+
# iw dev ''interface'' link
   
  +
== 認証 ==
十六進数キーか ASCII キーを使う、3番目に設定したキーをデフォルトとして指定する (キーは0からカウントされます):
 
   
  +
Linux で Wi-Fi 認証を行う方法としては主に [[wpa_supplicant]] と [[iwd]] があります。
# iw dev wlan0 connect ''your_essid'' key d:2:''your_key''
 
   
  +
=== WPA2 Personal ===
* '''WPA/WPA2'''
 
   
  +
WPA2 Personal(別名: WPA2-PSK)は [[Wikipedia:Wi-Fi Protected_Access|Wi-Fi Protected Access]] のモードの1つです。
[[WPA supplicant]] で説明されているように [[#アクセスポイント検索]] で得られた結果にあわせて {{ic|/etc/wpa_supplicant.conf}} ファイルを編集する必要があります。それができたら、次のコマンドを実行してください:
 
   
  +
[[wpa_supplicant]] や [[iwd]] を用いて WPA2 Personal ネットワークに認証したり、[[ネットワークマネージャ]]を用いて接続したりできます。ネットワークに認証しただけの場合、接続はまだ完全には機能せず、[[ネットワーク設定#固定 IP アドレス|手動]]または[[DHCP]]クライアントを用いて IP アドレスとルートを割り当てる必要があります。
# wpa_supplicant -D nl80211,wext -i wlan0 -c /etc/wpa_supplicant.conf
 
   
  +
=== WPA2 Enterprise ===
ここではあなたのデバイスが {{ic|wext}} ドライバを使うと仮定しています。これで動かない場合、オプションを修正しなくてはならないかもしれません。
 
接続に成功したなら、新しいターミナルで次に進んでください (もしくは {{ic|Ctrl+c}} で {{ic|wpa_supplicant}} を終了し上記のコマンドに {{ic|-B}} スイッチを付けてバックグラウンドで実行してください)。[[WPA supplicant]] にはより詳しい情報とトラブルシューティングが載っています。
 
   
  +
''WPA2 Enterprise'' は [[Wikipedia:Wi-Fi_Protected_Access|Wi-Fi Protected Access]] のモードの1つです。''WPA2 Personal'' よりも優れたセキュリティとキー管理を提供し、VLAN や [[wikipedia:Network Access Protection|NAP]] といった他のエンタープライズタイプの機能を提供します。しかし、ユーザの認証を処理するために [[wikipedia:RADIUS|RADIUS]] サーバと呼ばれる外部の認証サーバを必要とします。これは、ワイヤレスルータとアクセスポイント(AP)の他に何も必要とせず、すべてのユーザに対して1つのパスフレーズかパスワードを使用する Personal モードとは対照的です。
使う方法によらず、関連付けが成功しているかどうかは次を実行することで確かめられます:
 
   
  +
Enterprise モードでは、ユーザはユーザ名とパスワード、もしくはデジタル証明書、もしくはその両方を用いて Wi-Fi ネットワークにログインできます。それぞれのユーザは動的でユニークな暗号鍵を持っているため、ワイヤレスネットワーク上のユーザからユーザへの盗聴防止や暗号強度の向上に役立ちます。
# iw dev wlan0 link
 
   
  +
このセクションでは、WPA2 Enterprise モードを用いてワイヤレスアクセスポイントに接続するための[[ネットワーク設定#ネットワークマネージャ|ネットワーククライアント]]の設定について説明します。アクセスポイントそのもののセットアップに関する情報は [[ソフトウェアアクセスポイント#RADIUS]] を見てください。
====IP アドレスを取得====
 
   
  +
{{Note|Personal モードでは要求された時に単にパスフレーズを入力する必要があるだけですが、Enterprise モードではより複雑なクライアントの設定が必要です。クライアントはおそらくサーバの CA 証明書を(EAP-TLS を使用する場合はユーザごとの証明書も)インストールし、手動でワイヤレスセキュリティと 802.1X 認証を設定する必要があるでしょう。}}
{{Note|詳しくは[[ネットワーク設定#IP アドレスの設定]]を見て下さい。この部分は全く同じです。}}
 
   
  +
プロトコル間の比較は[https://deployingradius.com/documents/protocols/compatibility.html この表]を見てください。
最後に、ネットワークインターフェースに IP アドレスを与えます。例えば DHCP を使って:
 
   
  +
{{Warning|クライアントがサーバの CA 証明書を確認せずに WPA2 Enterprise を使用することは可能ですが、常に確認すべきです。なぜなら、アクセスポイントの認証なしでは、接続が中間者攻撃の対象となる可能性があるからです。このようなことが起こりうる理由は、接続のハンドシェイク自体を暗号化することはできる一方、広く使用されているセットアップでは平文または簡単に破れる [[#MS-CHAPv2]] を使用してパスワード自体を送信するからです。ゆえに、クライアントはパスワードを悪意のあるアクセスポイントに送信するかもしれません。その結果、そのアクセスポイントは接続をプロキシすることができてしまいます。}}
# dhcpcd wlan0
 
   
  +
==== MS-CHAPv2 ====
または
 
   
  +
PEAP の MSCHAPv2 type-2 認証を要求する WPA2-Enterprise ワイヤレスネットワークは時々、{{Pkg|ppp}} パッケージに加えて {{Pkg|pptpclient}} パッケージを必要とします。しかし、[[netctl]] は ppp-mppe 無しでも動作するようです。いずれの場合でも、MSCHAPv2 は非常に脆弱であるため、使用は推奨されません。しかし、他の手段は通常選択肢になりません。
# dhclient wlan0
 
   
  +
==== eduroam ====
固定 IP アドレスの場合:
 
   
  +
[[Wikipedia:eduroam|eduroam]] は研究、高等教育、継続教育のユーザー向けの、WPA2 Enterprise ベースの国際ローミングサービスです。
# ip addr add 192.168.0.2/24 dev wlan0
 
# ip route add default via 192.168.0.1
 
   
  +
{{Note|1=<nowiki/>
{{Tip|[[dhcpcd]] には自動的に無線インターフェイスで [[WPA supplicant]] を起動するフックが含まれています (デフォルトで有効になっています)。}}
 
  +
* このセクションにある如何なるプロファイルを適用する前に'''始めに'''機関の接続の詳細を確認してください。プロファイル例は機能することもセキュリティ要件を満たすことも保証されません。
  +
* 接続プロファイルを暗号化せずに保存する場合、root として {{ic|chmod 600 ''profile''}} を実行して、ファイルへの読み込みアクセスを root アカウントに制限することを推奨します。
  +
* NetworkManager で認証が失敗し続ける場合、TLS 1.0 に対しては {{ic|1=phase1-auth-flags=32}} を、TLS 1.1 に対しては {{ic|1=phase1-auth-flags=64}} を設定してみてください。これは [https://bbs.archlinux.org/viewtopic.php?pid=2104709#p2104709] と [[NetworkManager#OpenSSL の "unsupported protocol" エラーで WPA Enterprise の接続の認証に失敗する]] で説明されています。
  +
}}
   
  +
{{Tip|[[NetworkManager]] 向けの設定は [https://cat.eduroam.org/ eduroam Configuration Assistant Tool] で生成できます。このツールは、{{Pkg|python}} と {{Pkg|python-dbus}} を必要とします。}}
==== カスタムスタートアップスクリプト・サービス ====
 
   
  +
==== 手動/自動 セットアップ ====
手動設定はワイヤレスに関する問題のトラブルシューティングに役立ちますが、再起動する毎にコマンドを再入力する必要があります。全体のプロセスを自動で行うシェルスクリプトを書けば、設定の全てのコントロールを維持しながらネットワーク管理をとても便利にすることができます。
 
   
  +
* [[wpa_supplicant#高度な使用方法|wpa_supplicant]] は、設定ファイルを直接編集するか CLI/GUI フロントエンドを使用することで設定できます。また、DHCP クライアントと組み合わせて使うことができます。接続の詳細を設定するには {{ic|/usr/share/doc/wpa_supplicant/wpa_supplicant.conf}} の例を見てください。
=====systemd と dhcpcd を使って起動時に手動でワイヤレス接続=====
 
  +
* [[iwd#WPA Enterprise]]
  +
* [[NetworkManager]] は、''nmcli'' や ''nmtui''、[[NetworkManager#フロントエンド|グラフィカルなフロントエンド]]を使用して WPA2 Enterprise プロファイルを作成できます。
  +
* [[ConnMan]] は、ネットワークに[[ConnMan#Wi-Fi|接続]]する前に、別の設定ファイルを必要とします。詳細は {{man|5|connman-service.config}} と [[ConnMan#eduroam に接続]] を見てください。
  +
* [[netctl]] は、{{ic|1=WPAConfigSection=}} に含まれるブロックを通して wpa_supplicant の設定をサポートします。詳細は {{man|5|netctl.profile}} を見てください。
  +
: {{Note|特殊な引用符の規則が適用されます。{{man|5|netctl.profile|SPECIAL QUOTING RULES}} を見てください。}}
  +
: {{Tip|{{ic|WPAConfigSection}} に {{ic|1='ca_cert="/path/to/special/certificate.cer"'}} の行を追加することでカスタムの証明書を指定できます。}}
   
  +
=== WPA3 Personal ===
この例ではスタートアップに [[systemd]] を、接続に [[WPA supplicant]] を、IP アドレスの取得に [[dhcpcd]] を使っています。
 
   
  +
WPA3 Personal (別名 WPA3-SAE) は、[[Wikipedia:Wi-Fi Protected Access#WPA3|Wi-Fi Protected Access]] のモードの1つです。
{{Note|あらかじめ {{Pkg|wpa_supplicant}} をインストールして {{ic|/etc/wpa_supplicant.conf}} を作成してください。詳しくは [[WPA supplicant]] を見て下さい。}}
 
   
  +
[[wpa_supplicant]] と [[iwd]] の両方が WPA3 Personal をサポートしています。
systemd のユニットを作成してください、例: {{ic|/etc/systemd/system/network-wireless@.service}}:
 
   
  +
=== WPA3 Enterprise ===
{{hc|/etc/systemd/system/network-wireless@.service|<nowiki>
 
[Unit]
 
Description=Wireless network connectivity (%i)
 
Wants=network.target
 
Before=network.target
 
BindsTo=sys-subsystem-net-devices-%i.device
 
After=sys-subsystem-net-devices-%i.device
 
   
  +
WPA3 Enterprise は [[Wikipedia:Wi-Fi Protected Access#WPA3|Wi-Fi Protected Access]] のモードの1つです。
[Service]
 
Type=oneshot
 
RemainAfterExit=yes
 
   
  +
[[wpa_supplicant]] (バージョン 2:2.10-8 以降) は、WPA3 Enterprise をサポートしています。{{Bug|65314}} を参照してください。
ExecStart=/usr/bin/ip link set dev %i up
 
ExecStart=/usr/bin/wpa_supplicant -B -i %i -c /etc/wpa_supplicant.conf
 
ExecStart=/usr/bin/dhcpcd %i
 
   
  +
== ヒントとテクニック ==
ExecStop=/usr/bin/ip link set dev %i down
 
   
  +
=== 規制範囲に従う ===
[Install]
 
WantedBy=multi-user.target
 
</nowiki>}}
 
   
  +
[[wikipedia:IEEE_802.11#Regulatory_domains_and_legal_compliance|規制範囲(regdomain)]] は、ワイヤレスハードウェアの動作が FCC や ETSI、他の組織により定められた地域の法律に準拠するようにワイヤレスドライバを設定する際に用いられます。規制範囲では [[wikipedia:ISO_3166-1_alpha-2|ISO 3166-1 alpha-2 国名コード]]を使用します。例えば、米国は "US"、中国は "CN"、日本は "JP" となります。
ユニットを有効にして起動してください (インターフェイスの名前を指定します):
 
   
  +
規制範囲は、どのワイヤレスチャネルが利用できるかに関与します。2.4GHz 帯で許可されているチャネルは、米国では 1~11、日本では 1~14、他の殆どの国では 1~13 です。5Ghz 帯では、許可されるチャネルの規則は非常に複雑です。どちらの場合でも、より詳細な情報は[[wikipedia:List_of_WLAN_channels|この WLAN チャネルのリスト]]を見てください。
# systemctl enable network-wireless@wlan0.service
 
# systemctl start network-wireless@wlan0.service
 
   
  +
規制範囲はまた、ワイヤレスデバイスから放射される電波の[[wikipedia:Equivalent_isotropically_radiated_power|実効輻射電力(EIRP)]]の制限にも関与します。これは送信パワー(Tx Power)から算出され、[[wikipedia:DBm|dBm/mBm (1dBm=100mBm) または mW (対数スケール)]]により測られます。2.4Ghz 帯では、米国とカナダでは最大が 30dBm、ヨーロッパのほとんどの地域では 20dBm、その他の地域では 20dBm~30dBm です。通常、5Ghz 帯では、最大値はより低く規定されます。より詳細な情報は [https://git.kernel.org/cgit/linux/kernel/git/wens/wireless-regdb.git/tree/db.txt wireless-regdb] を見てください(EIRP の dBm 値はそれぞれの行の2番めのカッコの中にあります)。
=====Systemd と wpa_supplicant と固定 IP=====
 
   
  +
規制範囲の設定を誤ると便利である場合があります(例えば、チャネルが混雑している時に未使用のチャネルを利用できたり、送信パワーを増やして送信範囲を広げたり)。しかし、地域の法律に違反したり、他の無線機器と干渉する可能性があるので、'''推奨されません'''。
{{Note|あらかじめ {{Pkg|wpa_supplicant}} をインストールして {{ic|/etc/wpa_supplicant.conf}} を作成してください。詳しくは [[WPA supplicant]] を見て下さい。}}
 
   
  +
{{Pkg|wireless-regdb}} が[[インストール]]されていれば、カーネルは規制範囲のデータベースを直接読み込みます。直接読み込むため、セキュリティ上の理由により、カーネルは {{ic|CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS}} を yes に設定して、データベースの暗号検証を有効化してあるべきです。これは Arch のカーネルには有効化されていますが、他のカーネルを使用していたり自分でコンパイルしている場合、これを確認するべきです。さらなる情報は[http://docker.hd-wireless.com/Support/WifiRegulatoryDomainsinLinux このガイド]{{Dead link|2024|07|30|status=domain name not resolved}}で見られます。
まず [[systemd]] サービスの設定ファイルを作成してください ({{ic|<interface>}} は適切なインターフェイス名に置き換えて下さい):
 
   
  +
regdomain を設定するには、{{Pkg|wireless-regdb}} をインストールし、再起動してください。そして、{{ic|/etc/conf.d/wireless-regdom}} を編集し、適切なドメインをアンコメントしてください。
{{hc|/etc/conf.d/network-wireless@<interface>|<nowiki>
 
address=192.168.0.10
 
netmask=24
 
broadcast=192.168.0.255
 
gateway=192.168.0.1
 
</nowiki>}}
 
   
  +
現在の規制範囲を一時的に日本に設定するには:
systemd のユニットファイルを作成してください:
 
   
  +
# iw reg set JP
{{hc|/etc/systemd/system/network-wireless@.service|<nowiki>
 
[Unit]
 
Description=Wireless network connectivity (%i)
 
Wants=network.target
 
Before=network.target
 
BindsTo=sys-subsystem-net-devices-%i.device
 
After=sys-subsystem-net-devices-%i.device
 
   
  +
情報を見るには:
[Service]
 
Type=oneshot
 
RemainAfterExit=yes
 
EnvironmentFile=/etc/conf.d/network-wireless@%i
 
   
  +
$ iw reg get
ExecStart=/usr/bin/ip link set dev %i up
 
ExecStart=/usr/bin/wpa_supplicant -B -i %i -c /etc/wpa_supplicant.conf
 
ExecStart=/usr/bin/ip addr add $address/$netmask broadcast $broadcast dev %i
 
ExecStart=/usr/bin/ip route add default via $gateway
 
   
  +
{{Note|デバイスが国名コード "00" に設定されている場合があります(これは "world regulatory domain" で、一般的な設定が含まれています)。この設定を解除できない場合、以下で説明されているように設定を確認してください。}}
ExecStop=/usr/bin/ip addr flush dev %i
 
ExecStop=/usr/bin/ip link set dev %i down
 
   
  +
しかし、規制範囲を設定しても設定が変わらない場合があります。一部のデバイスは、デバイスの制限を規定する firmware/EEPROM で規制範囲が設定されています。これは、ソフトウェアでは[https://wiki.openwrt.org/doc/howto/wireless.utilities#iw 制限を増やすことしかできず]、制限を減らすことができないことを意味します。例えば、中国のデバイスはソフトウェアで米国の規制範囲に設定できるでしょうが、中国では EIRP の最大値が 20dBm と規定されているので、デバイスは米国の最大 EIRP である 30dBm で送信を行うことはできません。
[Install]
 
WantedBy=multi-user.target
 
</nowiki>}}
 
   
  +
例えば、Atheros デバイスのファームウェアで規制範囲が設定されているかどうか確認するには:
ユニットを有効にして起動してください (インターフェイスの名前を指定します):
 
   
  +
# dmesg | grep ath:
# systemctl enable network-wireless@wlan0.service
 
# systemctl start network-wireless@wlan0.service
 
   
  +
他のチップセットの場合、"EEPROM" や "regdomain"、デバイスドライバの名前で検索すると良いかもしれません。
===自動セットアップ===
 
様々な方法を選ぶことができますが、相互に相容れないことを忘れないで下さい; 2つのデーモンを同時に実行してはいけません。下の表は接続マネージャを比較しています。それぞれの詳細は下のサブセクションにあります。
 
   
  +
規制範囲が正しく変更されたかどうかを確認し、利用可能なチャネル数や許可されている送信パワーを確認するには:
{| class="wikitable" border="1"
 
! 接続マネージャ || ネットワーク <br>プロファイル <br>サポート || ローミング <br>(切断したり場所を変更した時の <br>自動接続) || [[Wikipedia:ja:Point-to-Point Protocol|PPP]] サポート <br>(例: 3G モデム) || [[Archiso]] [https://git.archlinux.org/archiso.git/tree/configs/releng/packages.both] || 公式 <br>GUI || コンソールツール || Systemd ユニット
 
|-
 
| [[ConnMan]] || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{ic|connmanctl}} || {{ic|connman.service}}
 
|-
 
| [[netctl]] || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} ({{grp|base}}) || {{No}} || {{ic|netctl}},{{ic|wifi-menu}} || {{ic|netctl-auto@''interface''.service}}
 
|-
 
| [[NetworkManager]] || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} || {{ic|nmcli}},{{ic|nmtui}} || {{ic|NetworkManager.service}}
 
|-
 
| [[Wicd]] || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{Yes}} || {{ic|wicd-curses}} || {{ic|wicd.service}}
 
|-
 
| [[Wifi Radar]] || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{Yes}} || {{ic|wifi-radar}} ||
 
|}
 
   
  +
$ iw list | grep -A 15 Frequencies:
====Netctl====
 
   
  +
[[wpa_supplicant]] でも、{{ic|/etc/wpa_supplicant/wpa_supplicant.conf}} の {{ic|1=country=}} 行で規制範囲を設定できます。
''netctl'' は ''netcfg'' の後継で systemd で動作するように設計されています。設定にプロファイルを使い、幅広いタイプのネットワークを検知・接続することができます。グラフィカルツールを使うのと難易度は大して変わりません。
 
   
  +
[https://wireless.wiki.kernel.org/en/developers/documentation/cfg80211 cfg80211] カーネルモジュールでも[[カーネルモジュール#モジュールオプションを設定する|モジュールオプション]]を追加することで特定の規制範囲を使用するように設定できます(例: {{ic|1=options cfg80211 ieee80211_regdom=JP}})。このモジュールオプションは [https://wireless.wiki.kernel.org/en/developers/regulatory#the_ieee80211_regdom_module_parameter 古い規制範囲の実装]から継承されたもので、最近のカーネルでは {{ic|iw}} や {{ic|wpa_supplicant}} のようなユーティリティから {{ic|nl80211}} を通して来たようなユーザスペースの規制ヒントとして振る舞います。
参照: [[Netctl]]
 
   
====Wicd====
+
=== Rfkill の注意点 ===
   
  +
多くのノート PC にはワイヤレスカードの電源を切るハードウェアボタン/スイッチがあります。しかし、カードがカーネルによってブロックされている場合があります。これは {{man|8|rfkill}} によって操作できます。現在の状態を確認するには以下のコマンドを使用してください:
Wicd は無線・有線両方の接続を管理することができるネットワークマネージャです。Python と Gtk で書かれており NetworkManager よりも依存ライブラリがすくなく、軽量なデスクトップを使うユーザーにとって理想的な選択肢になるかもしれません。
 
   
  +
{{hc|$ rfkill|
参照: [[Wicd]]
 
  +
ID TYPE DEVICE SOFT HARD
 
  +
0 bluetooth hci0 unblocked unblocked
{{Note|ドライバーによっては [[NetworkManager]] で問題なく動くものが、[[wicd]] では何度も切断することがあります。}}
 
  +
1 wlan phy0 unblocked unblocked
 
  +
}}
====NetworkManager====
 
 
NetworkManager は高度なネットワーク管理ツールであり、人気のある GNU/Linux ディストーションのほとんどでデフォルトで有効にされています。有線接続の管理に加えて、NetworkManager は、GUI プログラムで利用したいネットワークを選択する、使いやすくて、心配のないワイヤレスローミングを提供します。
 
 
参照: [[NetworkManager]]
 
 
====WiFi Radar====
 
 
WiFi Radar はワイヤレスプロファイルを管理する Python/PyGTK2 ユーティリティです(ワイヤレス''だけ''をサポートしています)。利用できるネットワークのスキャンとネットワークのプロファイルの作成ができます。
 
 
参照: [[Wifi Radar]]
 
 
=== WPA2 Enterprise ===
 
 
[[WPA2 Enterprise]] のページを見てください。
 
 
== ヒントとテクニック ==
 
   
  +
カードが ''hard-blocked'' である場合、ハードウェアボタン/スイッチを使ってカードをアンロックできます。カードが ''hard-blocked'' でなく、''soft-blocked'' である場合、以下のコマンドを使用してください:
=== 規制範囲 ===
 
   
  +
# rfkill unblock wlan
法的に許可されている無線周波数はデバイスが使われる地域によって異なるため、無線ドライバーに地域を設定する必要があります。これは規制範囲 (regulatory domain) と呼ばれます。
 
   
  +
{{Note|ハードウェアボタンを押すと、カードが ''hard-blocked'' と ''soft-unblocked'' の状態から ''hard-unblocked'' と ''soft-blocked'' の状態になることがあります(つまり、''soft-blocked'' のビットがなんであっても切り替わるということです)。これは {{ic|rfkill}} [[カーネルモジュール]]のいくつかのオプションを切り替えることで調整できます。}}
例えば、{{ic|iwl3945}} ドライバーはデフォルトでチャネル 1-11 のネットワークだけで動作するように設定されています。世界の一部地域ではこれよりも高い周波数帯は許可されていません (例: アメリカ)。しかしながら EU では、チャネル 12 と 13 も広く一般的に使われています (そして日本ではチャネル 14 も許可されています)。規制範囲を例えばアメリカに設定した場合、高チャネルのネットワークはスキャンしても表示されません。同じように、規制範囲を正しく設定しないと、5 Mhz モードも制限を受けることがあります。
 
   
  +
ワイヤレスカードを切り替えるハードウェアボタンはベンダー固有の[[カーネルモジュール]]によって操作されます。これらは [https://lwn.net/Articles/391230/ WMI] モジュールであることが多いです。非常に新しいハードウェアモデルでは特に、最新の安定版カーネルでモデルが完全にサポートされていないことがあります。この場合、カーネルのバグトラッカーで情報を探し、まだ報告されていない場合は各ベンダーのカーネルモジュールのメンテナにモデルを報告することが役に立ちます。
{{ic|1=options cfg80211 ieee80211_regdom=EU}} などの[[カーネルモジュール#モジュールオプションを設定する|モジュールオプション]]を追加することで特定の規制範囲を使用して [https://wireless.kernel.org/en/developers/Documentation/cfg80211 cfg80211] カーネルモジュールを設定することが可能です。設定方法の詳細は[[カーネルモジュール]]を見て下さい。
 
   
  +
[https://askubuntu.com/questions/62166/siocsifflags-operation-not-possible-due-to-rf-kill] も参照してください。
{{Tip|あなたのカードで使用できる周波数を確認するには {{ic|iw list}} コマンドで出力された {{ic|Frequencies:}} ブロックを見て下さい。}}
 
   
  +
=== 省電力 ===
他にも {{Pkg|crda}} パッケージをインストールして {{ic|/etc/conf.d/wireless-regdom}} を編集するという設定方法もあります (このファイルは実際は {{Pkg|crda}} の依存パッケージである {{Pkg|wireless-regdb}} に含まれています)。
 
   
  +
[[電源管理#ネットワークインターフェイス]] を見てください。
=== iw と wireless_tools の比較表 ===
 
   
  +
==トラブルシューティング==
下の表は両方のツールのコマンドの簡単な比較です ([https://wireless.kernel.org/en/users/Documentation/iw/replace-iwconfig] にもっと詳しい例があります)。
 
   
  +
このセクションには、ドライバやファームウェアに強く関連しない問題のトラブルシューティングの一般的なヒントを含んでいます。ドライバやファームウェアに関するトピックは次のセクション [[#ドライバとファームウェアのトラブルシューティング]] を見てください。
{| class="wikitable" border="1"
 
! ''iw'' コマンド
 
! ''wireless_tools'' コマンド
 
! 説明
 
|-
 
| iw dev wlan0 link
 
| iwconfig wlan0
 
| リンクの状態を取得。
 
|-
 
| iw dev wlan0 scan
 
| iwlist wlan0 scan
 
| 利用可能なアクセスポイントをスキャン。
 
|-
 
| iw dev wlan0 set type ibss
 
| iwconfig wlan0 mode ad-hoc
 
| 動作モードを ''ad-hoc'' に設定。
 
|-
 
| iw dev wlan0 connect ''your_essid''
 
| iwconfig wlan0 essid ''your_essid''
 
| 接続してネットワークを開く。
 
|-
 
| iw dev wlan0 connect ''your_essid'' 2432
 
| iwconfig wlan0 essid ''your_essid'' freq 2432M
 
| 接続して指定したチャンネルのネットワークを開く。
 
|-
 
| rowspan="2" | iw dev wlan0 connect ''your_essid'' key 0:''your_key''
 
| iwconfig wlan0 essid ''your_essid'' key s:''your_key''
 
| 十六進数のキーを使って WEP で暗号化されたネットワークに接続。
 
|-
 
| iwconfig wlan0 essid ''your_essid'' key s:''your_key''
 
| ASCII 文字のキーを使って WEP で暗号化されたネットワークに接続。
 
|-
 
| iw dev wlan0 set power_save on
 
| iwconfig wlan0 power on
 
| 省電力機能を有効にする。
 
|}
 
 
==トラブルシューティング==
 
   
 
=== 一時的にネットワークにアクセス ===
 
=== 一時的にネットワークにアクセス ===
483行目: 383行目:
 
ハードウェアに問題があるときに、インターネットに接続してソフトウェアをダウンロードしたりフォーラムでヘルプを得たい場合、Android に内蔵されている機能を使って USB ケーブルでインターネット共有をすることができます。詳しくは [[Android テザリング#USB テザリング]]を見て下さい。
 
ハードウェアに問題があるときに、インターネットに接続してソフトウェアをダウンロードしたりフォーラムでヘルプを得たい場合、Android に内蔵されている機能を使って USB ケーブルでインターネット共有をすることができます。詳しくは [[Android テザリング#USB テザリング]]を見て下さい。
   
=== Rfkill によるブック ===
+
=== ログの取得 ===
   
  +
トラブルシューティングで一番初めにするべきなのはシステムのログファイルを解析することです。全部を手でパースしないために、新しいターミナル(コンソール)を開いて、接続を試行している間のカーネルメッセージを次のコマンドで見ると良いでしょう:
多くのノートパソコンには無線カードをオフにするための物理ボタン(スイッチ)が付いていますが、カーネルからカードをブロックすることも可能です。これは {{Pkg|rfkill}}{{Broken package link|置換パッケージ: {{Pkg|util-linux}}}} によって行うことができます。''rfkill'' を使って現在の状態を表示してみてください:
 
   
  +
$ dmesg -w
{{hc|# rfkill list|
 
0: phy0: Wireless LAN
 
Soft blocked: yes
 
Hard blocked: yes
 
}}
 
   
  +
ネットワーク管理にツールを使っている場合、systemd でも同じことができます:
カードが ''hard-blocked'' になっている場合、物理ボタン(スイッチ)を使ってブロックを解除してください。カードが ''hard-blocked'' ではなく ''soft-blocked'' されている場合、次のコマンドを使ってください:
 
   
  +
# journalctl -f
# rfkill unblock wifi
 
   
  +
特定の理由コードによる認証解除を伴うワイヤレスエラーがよく起こります。例えば:
{{Note|物理ボタンを押すことでカードの状態を ''hard-blocked'' と ''soft-unblocked'' から ''hard-unblocked'' と ''soft-blocked'' に変えることができます (''soft-blocked'' ビットも切り替わります)。これは {{ic|rfkill}} [[カーネルモジュール]]のオプションを設定することで調整することが可能です。}}
 
   
  +
wlan0: deauthenticating from XX:XX:XX:XX:XX:XX by local choice (reason=3)
ワイヤレスカードのオンオフを切り替えるハードウェアボタンはメーカー別の[[カーネルモジュール]]によって処理されます。大抵は [https://lwn.net/Articles/391230/ WMI] モジュールです。特に最近のハードウェアでは、安定版のカーネルではまだサポートが完全には実装されていない可能性があります。そのような場合、カーネルのバグトラッカーを検索したりカーネルモジュールのメンテナにモデルを報告してください。
 
   
  +
[http://www.aboutcher.co.uk/2012/07/linux-wifi-deauthenticated-reason-codes/ 理由コード]を見ることでヒントを得られるかもしれません。コントロールメッセージの [https://wireless.wiki.kernel.org/en/developers/documentation/mac80211/auth-assoc-deauth flowchart] を見ることも役に立つかもしれません。ジャーナルのメッセージはこれに従って出力されます。
詳細: https://askubuntu.com/questions/62166/siocsifflags-operation-not-possible-due-to-rf-kill
 
 
=== ログの取得 ===
 
 
トラブルシューティングで一番初めにするべきなのはシステムのログファイルを解析することです。全部を手でパースしないために、新しいターミナル(コンソール)を開いて、接続を試行している間のカーネルメッセージを次のコマンドで見ると良いでしょう:
 
$ dmesg -w
 
 
ネットワーク管理にツールを使っている場合、systemd でも同じことができます:
 
# journalctl -f
 
   
 
この記事にあるそれぞれのツールは詳細なデバッグ出力をするオプションを用意しているので、必要ならば、解析の第二段階としてそれを使うことができます。
 
この記事にあるそれぞれのツールは詳細なデバッグ出力をするオプションを用意しているので、必要ならば、解析の第二段階としてそれを使うことができます。
 
===省電力機能===
 
 
[[省電力設定#ネットワークインターフェイス]]を見て下さい。
 
   
 
=== IP アドレスの取得に失敗する ===
 
=== IP アドレスの取得に失敗する ===
   
  +
{{Out of date|''iwconfig'' は非推奨となりました。[[#iw と wireless_tools の比較]] を参照してください。([[:en:talk:Network_configuration/Wireless#wireless_tools]])}}
* デフォルトの [[dhcpcd]] クライアントでは IP アドレスの取得に何度も失敗する場合、代わりに {{Pkg|dhclient}} をインストールして使用してみて下さい。あなたの使っている[[#自動セットアップ|接続マネージャ]]で DHCP クライアントとして ''dhclient'' を忘れずに選択してください。
 
   
* 有線インターフェイスでは IP アドレスを取得できるのに、無線インターフェイスでは出来ない場合、ワイヤレスカードの省電力機能を無効にしてみてください:
+
* 有線インターフェイスでは IP アドレスを取得できるのに、無線インターフェイスではできない場合、ワイヤレスカードの[[#省電力|省電力機能]]を無効にしてみてください({{ic|on}} ではなく {{ic|off}} を指定してください)。
 
# iwconfig wlan0 power off
 
   
 
* ''waiting for carrier'' の問題でタイムアウトエラーになる場合、特定のデバイスのチャンネルモードを {{ic|auto}} に設定する必要があるかもしれません:
 
* ''waiting for carrier'' の問題でタイムアウトエラーになる場合、特定のデバイスのチャンネルモードを {{ic|auto}} に設定する必要があるかもしれません:
   
# iwconfig wlan0 channel auto
+
# iwconfig ''wlan0'' channel auto
   
 
チャンネルを auto に変える前に、あなたのワイヤレスインターフェースが止まっていることを確認してください。変更が成功したら、インターフェースを立ち上げなおして次の手順に進んで下さい。
 
チャンネルを auto に変える前に、あなたのワイヤレスインターフェースが止まっていることを確認してください。変更が成功したら、インターフェースを立ち上げなおして次の手順に進んで下さい。
533行目: 415行目:
 
=== IP アドレスは取得できるのにホスト解決ができない ===
 
=== IP アドレスは取得できるのにホスト解決ができない ===
   
公共の無線ネットワークを使っている場合 [[wikipedia:Captive_portal|Captive Portal]] が存在することがあります場合、[[resolv.conf]] からカスタム DNS サーバー削除する必要があります。
+
[[wikipedia:Captive_portal|Captive Portal]] が存在する可能性のある公共の無線ネットワークを使っている場合、Web ブラウザから(HTTPS ではなく)HTTP ページをクエリしていることを確認してください一部captive portal は HTTP のみリダイレクトするためです。
  +
これが原因ではない場合、[[ドメイン名前解決|ドメイン名を解決できることを確認してください]]。DHCP を通して広告した DNS サーバを使用することが必須である場合があります。
 
=== 接続がいつもタイムアウトになる ===
 
 
何らかの理由で tx excessive retries や invalid misc などのエラーが大量に発生すると、パケットをロスしたり接続が切れたりすることがあります。以下のヒントが役に立つかもしれません。
 
 
==== レートを下げる ====
 
   
  +
=== RTS や fragmentation のしきい値を設定する ===
低いレートに設定してみてください (例: 5.5M):
 
 
# iwconfig wlan0 rate 5.5M auto
 
 
fixed オプションを使うことでドライバーによってレートが変わらないようにすることができ、接続が少しだけ安定します:
 
 
# iwconfig wlan0 rate 5.5M fixed
 
 
==== txpower を下げる ====
 
 
出力も同じように下げることができます。出力を下げると電力も節約できます:
 
 
# iwconfig wlan0 txpower 5
 
 
利用できる設定は {{ic|0}} から {{ic|20}} までと {{ic|auto}} または {{ic|off}} です。
 
 
==== RTS や fragmentation のしきい値を設定する ====
 
   
 
無線ハードウェアはデフォルトでは RTS と fragmentation を無効化しています。帯域幅を犠牲にスループットを高める方法は2つ存在します。近隣にアクセスポイントが多く存在する環境で、干渉によってタイムアウトが発生したり接続が途切れる場合、設定によって改善する可能性があります。
 
無線ハードウェアはデフォルトでは RTS と fragmentation を無効化しています。帯域幅を犠牲にスループットを高める方法は2つ存在します。近隣にアクセスポイントが多く存在する環境で、干渉によってタイムアウトが発生したり接続が途切れる場合、設定によって改善する可能性があります。
569行目: 430行目:
 
# iw phy0 set rts 500
 
# iw phy0 set rts 500
   
{{Note|{{ic|phy0}} は {{ic|$ iw phy}} で確認できるワイヤレスデバイスの名前に置き換えてください。}}
+
{{Note|{{ic|phy0}} は {{ic|iw phy}} で確認できるワイヤレスデバイスの名前に置き換えてください。}}
   
 
=== ランダムに切断する ===
 
=== ランダムに切断する ===
575行目: 436行目:
 
==== 原因 #1 ====
 
==== 原因 #1 ====
   
dmesg に {{ic|1=wlan0: deauthenticating from MAC by local choice (reason=3)}} と表示され Wi-Fi 接続が失われる場合は、おそらく Wi-Fi カードの省電力機能がアグレッシブすぎるのが原因です [http://us.generation-nt.com/answer/gentoo-user-wireless-deauthenticating-by-local-choice-help-204640041.html]。無線カードの省電力機能を無効化してみてください:
+
[[Journal]] に {{ic|1=wlan0: deauthenticating from MAC by local choice (reason=3)}} と表示され Wi-Fi 接続が失われる場合は、おそらく Wi-Fi カードの省電力機能がアグレッシブすぎるのが原因です。無線カードの[[電源管理#ネットワークインターフェイス|省電力機能]]を無効化してみてください({{ic|on}} ではなく {{ic|off}} を指定してください)。
 
# iwconfig wlan0 power off
 
 
この設定を永続化する方法は[[省電力設定]]を見て下さい ({{ic|on}} の代わりに {{ic|off}} を指定)。
 
   
 
あなたのカードが {{ic|iwconfig wlan0 power off}} をサポートしていない場合は、BIOS の電源管理のオプションを確認してください。Lenovo W520 では BIOS にある PCI-Express の電源管理を無効化すると問題が解決します。
 
あなたのカードが {{ic|iwconfig wlan0 power off}} をサポートしていない場合は、BIOS の電源管理のオプションを確認してください。Lenovo W520 では BIOS にある PCI-Express の電源管理を無効化すると問題が解決します。
585行目: 442行目:
 
==== 原因 #2 ====
 
==== 原因 #2 ====
   
頻繁に切断が発生し、dmesg で以下のようなメッセージが表示される場合:
+
頻繁に切断が発生し、[[Journal]] で以下のようなメッセージが表示される場合:
   
 
{{ic|1=ieee80211 phy0: wlan0: No probe response from AP xx:xx:xx:xx:xx:xx after 500ms, disconnecting}}
 
{{ic|1=ieee80211 phy0: wlan0: No probe response from AP xx:xx:xx:xx:xx:xx after 500ms, disconnecting}}
604行目: 461行目:
 
* ルーターが(クライアントで使っている)無線デバイスと比べて相当に旧式である場合、ルーターを別のワイヤレスモードに設定して動作するかテストする
 
* ルーターが(クライアントで使っている)無線デバイスと比べて相当に旧式である場合、ルーターを別のワイヤレスモードに設定して動作するかテストする
 
* mixed-mode 認証を無効化 (例: WPA2 と AES、またはルーターが古い場合 TKIP)
 
* mixed-mode 認証を無効化 (例: WPA2 と AES、またはルーターが古い場合 TKIP)
* "auto" チャンネル以外のチャンネルを使ってみる (隣家のルーターが古くて干渉している可能性があります)
+
* "auto" チャンネル以外の固定/自由チャンネルを使ってみる (隣家のルーターが古くて干渉している可能性があります)
* WPS を無効化
+
* [[Wikipedia:Wi-Fi Protected Setup|WPS]] を無効化
  +
* ルータの 5Ghz チャネルから [[Wikipedia:List of WLAN channels#5 GHz (802.11a/h/j/n/ac/ax)|non-DFS (Dynamic Frequency Selection) チャネル]] に変更する。そのようなチャネルでは、近くの気象レーダとの干渉により接続が[https://wifinigel.blogspot.com/2018/05/the-5ghz-problem-for-wi-fi-networks-dfs.html 落ちたり、いきなり切り替わったり]する場合があります。
* {{ic|40Mhz}} 周波数帯を無効化 (スループットは悪くなりますが衝突は起きにくくなります)
 
  +
* クライアントに 5Ghz と 2.4Ghz のどちらが良いかを選ばせるのではなく 2.4Ghz のみに設定してみる。(後者はスループットが低いですが、遠距離からの接続でも安定した接続を得られます)
  +
* {{ic|1=cfg80211.cfg80211_disable_40mhz_24ghz=1}} を指定して {{ic|40Mhz}} 周波数帯を無効化 (スループットは悪くなりますが衝突は起きにくくなります)
 
* ルーターにサービス品質に関する設定がある場合、設定が完全であることを確認 (例: Wi-Fi Multimedia (WMM) は任意の QoS フロー制御の一部です。問題のあるルーターファームウェアは設定が有効になっていない場合も有効であるかのように見せかけてくることがあります)
 
* ルーターにサービス品質に関する設定がある場合、設定が完全であることを確認 (例: Wi-Fi Multimedia (WMM) は任意の QoS フロー制御の一部です。問題のあるルーターファームウェアは設定が有効になっていない場合も有効であるかのように見せかけてくることがあります)
  +
  +
==== 原因 #5 ====
  +
  +
一部のワイヤレスアダプタ(例: Qualcomm Atheros AR9485)では、DMA エラーによりランダムな接続断が起こる可能性があります:
  +
  +
{{hc|# journalctl -xb|2=
  +
ath: phy0: DMA failed to stop in 10 ms AR_CR=0x00000024 AR_DIAG_SW=0x02000020 DMADBG_7=0x0000a400
  +
wlp1s0: authenticate with 56:e7:ee:7b:55:bc
  +
wlp1s0: send auth to 56:e7:ee:7b:55:bc (try 1/3)
  +
wlp1s0: send auth to 56:e7:ee:7b:55:bc (try 2/3)
  +
wlp1s0: send auth to 56:e7:ee:7b:55:bc (try 3/3)
  +
wlp1s0: authentication with 56:e7:ee:7b:55:bc timed out
  +
}}
  +
  +
可能な回避策は [https://docs.kernel.org/arch/x86/iommu.html Intel IOMMU driver (DMA)] を無効化することです。[[カーネルパラメータ]]に {{ic|1=intel_iommu=off}} を追加してください[https://bbs.archlinux.org/viewtopic.php?pid=1907446#p1907446]。
  +
  +
{{Note|Intel IOMMU ドライバは一部の高度な仮想マシン機能において必要です。(例: PCI パススルー)}}
  +
  +
==== 原因 #6 ====
  +
  +
ワイヤレス接続のための {{ic|iwlwifi}} と {{ic|iwlmvm}} のあるデバイスを使用していて、Wi-Fi カードがバッテリー駆動時に消えたように見える場合、iwlmvm で省電力設定を変更することでこれを修正できます。
  +
  +
{{ic|/etc/modprobe.d/iwlmvm.conf}} ファイルが存在しなければ作成し、以下の行を追加してください:
  +
  +
{{hc|/etc/modprobe.d/iwlmvm.conf|2=
  +
options iwlmvm power_scheme=1
  +
}}
  +
  +
{{ic|power_scheme}} の 1 という数値は iwlmvm が "常に有効" になります。利用可能なオプションは以下のとおりです:
  +
  +
{| class="wikitable"
  +
! 値 !! 説明
  +
|-
  +
| 1 || 常に有効
  +
|-
  +
| 2 || バランス
  +
|-
  +
| 3 || 低パワー
  +
|}
  +
  +
この修正法は [https://forums.debian.net/viewtopic.php?t=121696#p576208] で発見されました。
  +
  +
==== 原因 #7 ====
  +
  +
デバイスが長時間使用されなかった場合(例: ファイルサーバ)、省電力機能により接続断が発生する場合があります。これにより、受信トラフィックがブロックされ、接続が妨げられます。"interface" の省電力機能を無効化してみてください:
  +
  +
# iw dev ''interface'' set power_save off
  +
  +
udev ルールを作成してこれを起動時に行うこともできます。[[電源管理#ネットワークインターフェイス]] を見てください。
  +
  +
==== 原因 #8 ====
  +
  +
メッシュネットワーク (WiFi6 など) に接続している時に接続が時々途切れ、以下のようなメッセージが出力される場合:
  +
  +
{{hc|# journalctl -b|
  +
kernel: wlan0: disconnect from AP aa:bb:cc:dd:ee:ff for new auth to 11:22:33:44:55:66
  +
}}
  +
  +
ローミングの問題が発生しています。接続の方法と実際の問題に応じて、以下のことができます:
  +
  +
* ローミングが望ましくない場合、NetworkManager で BSSID (上記の {{ic|aa:bb:cc:dd:ee:ff}}) をロックする ([[NetworkManager#定期的なネットワーク接続断、遅延、パケットロス (WiFi)]] を参照)。
  +
* [[Wpa_supplicant#ローミング]] で {{ic|bgscan}} の設定を調整する。
   
 
=== 規制範囲が間違っているために Wi-Fi ネットワークが認識されない ===
 
=== 規制範囲が間違っているために Wi-Fi ネットワークが認識されない ===
   
コンピュータの Wi-Fi チャンネルがユーザーの居住国の規制範囲に一致していない場合、Wi-Fi ネットワークが認識されないことがあります。[[#規制範囲]]を参照して設定を行ってください。
+
コンピュータの Wi-Fi チャンネルがユーザーの居住国の規制範囲に一致していない場合、Wi-Fi ネットワークが認識されないことがあります。[[#規制範囲に従う]]を参照して設定を行ってください。
   
 
==ドライバとファームウェアのトラブルシューティング==
 
==ドライバとファームウェアのトラブルシューティング==
621行目: 542行目:
 
=== Ralink/Mediatek ===
 
=== Ralink/Mediatek ===
   
====rt2x00====
+
==== rt2x00 ====
   
 
Ralink のチップセット用の統合ドライバー ({{ic|rt2500}}, {{ic|rt61}}, {{ic|rt73}} などを置き換えます)。このドライバーは Linux カーネル 2.6.24 から含まれており、チップに合わせて適切なモジュールをロードするだけで問題なく使うことができます: {{ic|rt2400pci}}, {{ic|rt2500pci}}, {{ic|rt2500usb}}, {{ic|rt61pci}}, {{ic|rt73usb}} は {{ic|rt2x00}} モジュールもそれぞれ自動でロードします。
 
Ralink のチップセット用の統合ドライバー ({{ic|rt2500}}, {{ic|rt61}}, {{ic|rt73}} などを置き換えます)。このドライバーは Linux カーネル 2.6.24 から含まれており、チップに合わせて適切なモジュールをロードするだけで問題なく使うことができます: {{ic|rt2400pci}}, {{ic|rt2500pci}}, {{ic|rt2500usb}}, {{ic|rt61pci}}, {{ic|rt73usb}} は {{ic|rt2x00}} モジュールもそれぞれ自動でロードします。
   
このモジュールでサポートされているデバイスの一覧はプロジェクトの [http://rt2x00.serialmonkey.com/wiki/index.php/Hardware ホームページ] で見ることができます。
+
このモジュールでサポートされているデバイスの一覧はプロジェクトの [https://web.archive.org/web/20150507023412/http://rt2x00.serialmonkey.com/wiki/index.php/Hardware ホームページ] で見ることができます。
   
 
; 追加情報
 
; 追加情報
 
* カーネル 3.0 から、rt2x00 は次のドライバーを含んでいます: {{ic|rt2800pci}}, {{ic|rt2870usb}}。
 
* カーネル 3.0 から、rt2x00 は次のドライバーを含んでいます: {{ic|rt2800pci}}, {{ic|rt2870usb}}。
* カーネル 3.0 から、staging ドライバー {{ic|rt2860sta}} と {{ic|rt2870sta}} は mainline ドライバー {{ic|rt2800pci}} と {{ic|rt2800usb}} によって置き換えられました<sup>[https://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=fefecc6989b4b24276797270c0e229c07be02ad3]</sup>
+
* カーネル 3.0 から、staging ドライバー {{ic|rt2860sta}} と {{ic|rt2870sta}} は mainline ドライバー {{ic|rt2800pci}} と {{ic|rt2800usb}} によって置き換えられました[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fefecc6989b4b24276797270c0e229c07be02ad3]。
* デバイスによっては {{ic|iwpriv}} を使って様々なオプションを設定することができます。これらのオプションについては Ralink から入手できる [http://web.ralinktech.com/ralink/Home/Support/Linux.html source tarballs] にまとめられています。
+
* デバイスによっては {{ic|iwpriv}} を使って様々なオプションを設定することができます。これらのオプションについては Ralink から入手できる [https://web.archive.org/web/20111105120212/http://web.ralinktech.com:80/ralink/Home/Support/Linux.html source tarballs] にまとめられています。
   
====rt3090====
+
==== rt3090 ====
   
 
rt3090 を使っているデバイスには {{ic|rt2800pci}} ドライバを使うことができますが、うまく動作しないことがあります (例えば、時々 2Mb/s 以上の速度が出なくなります)。
 
rt3090 を使っているデバイスには {{ic|rt2800pci}} ドライバを使うことができますが、うまく動作しないことがあります (例えば、時々 2Mb/s 以上の速度が出なくなります)。
640行目: 561行目:
 
rt3290 チップセットはカーネルの {{ic|rt2800pci}} モジュールによって認識されます。ただし、問題が起こることもあり、[https://bbs.archlinux.org/viewtopic.php?id=161952 そのような場合]はパッチがあてられた Ralink ドライバーに戻すと良いようです。
 
rt3290 チップセットはカーネルの {{ic|rt2800pci}} モジュールによって認識されます。ただし、問題が起こることもあり、[https://bbs.archlinux.org/viewtopic.php?id=161952 そのような場合]はパッチがあてられた Ralink ドライバーに戻すと良いようです。
   
====rt3573====
+
==== rt3573 ====
   
2012年時点で新しいチップセットです。Ralink が提供している新しいプロプライエタリドライバが必要かもしれません。様々な製造会社がそれを使っています、[https://bbs.archlinux.org/viewtopic.php?pid=1164228#p1164228 Belkin N750 無線 USB アダプタ]のスレッドを見て下さい。
+
2012年時点で新しいチップセットです。Ralink が提供している新しいプロプライエタリドライバが必要かもしれません。様々な製造会社がそれを使っています、[https://bbs.archlinux.org/viewtopic.php?pid=1164228#p1164228 Belkin N750 DB wireless 無線 USB アダプタ]のスレッドを見て下さい。
 
====rt5572====
 
 
5 Ghz 帯をサポートした2012年時点で新しいチップセットです。Ralink が提供している新しいプロプライエタリドライバをコンパイルする必要があるかもしれません。DLINK DWA-160 rev のためのコンパイル方法が書かれています。B2 [http://bernaerts.dyndns.org/linux/229-ubuntu-precise-dlink-dwa160-revb2 here]。
 
   
 
==== mt7612u ====
 
==== mt7612u ====
   
新しい商号 Mediatek でリリースされている最新のチップセットです。AC1200 または AC1300 チップセットになります。[https://www.mediatek.com/products/broadbandWifi/mt7612u サポートページ] で Linux 用のドライバーがメーカーから公開されています。
+
2014 年以降の新しい商号 Mediatek でリリースされている最新のチップセットです。AC1200 または AC1300 チップセットになります。[https://www.mediatek.com/products/broadband-Wifi/mt7612u サポートページ]で Linux 用のドライバーがメーカーから公開されています。カーネル 5.5 より、同梱されている {{ic|mt76}} ドライバによりサポートされているはずです。
   
  +
[https://github.com/morrownr/7612u/blob/main/README.md#known-issues DFS チャネルは現在 5 GHz AP モードではサポートされていません]。
=== Realtek ===
 
   
==== rtl8192cu ====
+
==== mt7921 ====
   
  +
この MediaTek チップセットには高レイテンシの問題があります。唯一の解決策は ASPM を無効化することです:
このドライバーはカーネルに含まれていますが、多くのユーザーがネットワークのスキャンはできても接続が出来ないと報告しています。
 
   
  +
{{hc|/etc/modprobe.d/wifi.conf|2=
問題が起こる場合は {{AUR|8192cu-dkms}} パッケージで改善するかもしれません。
 
  +
options mt7921e disable_aspm=1
  +
}}
   
  +
再起動するか、[[modprobe]] でモジュールを再読込すると、この設定ファイルの変更が適用されます:
====rtl8192e====
 
   
  +
# modprobe -r mt7921e && modprobe mt7921e
このドライバはカーネルパッケージの一部になっています。以下のエラーメッセージを表示してモジュールの初期化が失敗する場合があるかもしれません:
 
   
  +
=== Realtek ===
rtl819xE:ERR in CPUcheck_firmware_ready()
 
rtl819xE:ERR in init_firmware() step 2
 
rtl819xE:ERR!!! _rtl8192_up(): initialization is failed!
 
r8169 0000:03:00.0: eth0: link down
 
   
  +
Realtek のチップセットと仕様のリストは [https://wikidevi.wi-cat.ru/Realtek] で見られます。
回避方法は単純にモジュールをアンロードするだけです:
 
# modprobe -r r8192e_pci
 
そして (一定時間後) モジュールをリロードします:
 
# modprobe r8192e_pci
 
   
==== rtl8188eu ====
+
==== rtl8192cu ====
   
  +
このドライバーはカーネルに含まれていますが、多くのユーザーがネットワークのスキャンはできても接続ができないと報告しています。
TP-Link TL-WN725N v2 (rtl8179 チップセットを使用) などのドングルには、このドライバーと互換性のあるチップセットを使っているものがあります。ドングルを使うには AUR の {{AUR|8188eu-dkms}} パッケージをインストールしてください。
 
  +
  +
問題が起こる場合は {{AUR|8192cu-dkms}} パッケージで改善するかもしれません。
   
 
==== rtl8723ae/rtl8723be ====
 
==== rtl8723ae/rtl8723be ====
   
Linux カーネルのバージョン 3.6 から新しい {{ic|rtl8723ae}} モジュールが含まれるようになりました。同 3.15 から {{ic|rtl8723be}} モジュールが追加されています。
+
メインラインの Linux カーネルには {{ic|rtl8723ae}} {{ic|rtl8723be}} モジュールが含まれています。
   
このカードの省電力機能についてエラーが発生することがあります。症状としては、ときどき上位のネットワークマネージャ ([[netctl]], [[NetworkManager]]) で認識されなくなり切断されます。このエラーは {{ic|dmesg -w}} や {{ic|journalctl -f}} を実行して省電力機能や {{ic|rtl8723ae}}/{{ic|rtl8723be}} モジュールに関連するメッセージを探すことで確認できます。この問題を解決するには、{{ic|1=fwlps=0}} カーネルオプションを使って、WiFi カードが自動的にスリープ状態にならないようにしてください:
+
このカードの省電力機能についてエラーが発生することがあります。症状としては、ときどき上位のネットワークマネージャ ([[netctl]], [[NetworkManager]]) で認識されなくなり切断されます。このエラーは {{ic|dmesg -w}} や {{ic|journalctl -f}} を実行して省電力機能や {{ic|rtl8723ae}}/{{ic|rtl8723be}} モジュールに関連するメッセージを探すことで確認できます。この問題を解決するには、{{ic|1=fwlps=0}} [[カーネルモジュールパラメータ]]を使って、WiFi カードが自動的にスリープ状態にならないようにしてください
 
{{hc|/etc/modprobe.d/rtl8723ae.conf|2=
 
options rtl8723ae fwlps=0
 
}}
 
または:
 
{{hc|/etc/modprobe.d/rtl8723be.conf|2=
 
options rtl8723be fwlps=0
 
}}
 
   
 
信号が弱い場合、デバイスにアンテナがひとつしか接続されておらず自動モードが機能していない可能性があります。{{ic|1=ant_sel=1}} や {{ic|1=ant_sel=2}} カーネルオプションでアンテナを強制的に設定することができます [https://bbs.archlinux.org/viewtopic.php?id=208472]。
 
信号が弱い場合、デバイスにアンテナがひとつしか接続されておらず自動モードが機能していない可能性があります。{{ic|1=ant_sel=1}} や {{ic|1=ant_sel=2}} カーネルオプションでアンテナを強制的に設定することができます [https://bbs.archlinux.org/viewtopic.php?id=208472]。
696行目: 603行目:
 
==== rtl88xxau ====
 
==== rtl88xxau ====
   
Realtek の rtl8811au/rtl8812au/rtl8814au/rtl8821au チップセットは AC600 から AC1900 までの様々な USB アダプタ用に設計されています。
+
Realtek の rtl8811au/rtl8812au/rtl8814au/rtl8821au チップセットは AC600 から AC1900 までの様々な USB アダプタ用に設計されています。いくつかのパッケージは様々なカーネルドライバを提供しており、これらは [[DKMS]]({{Pkg|dkms}} パッケージとインストールされているカーネルのヘッダファイル) を必要とします:
 
以下のパッケージでカーネルドライバーをインストールできます:
 
   
 
{| class="wikitable"
 
{| class="wikitable"
! チップセット || ドライバーのバージョン || [[AUR]] パッケージ || ノート
+
! チップセット || パッケージ || ノート
 
|-
 
|-
| rtl8812au || 5.2.9.3 || {{AUR|rtl8812au-dkms-git}} || rtl8812au 用の最新版の
+
| rtl8811au, rtl8812au, rtl8821au || {{AUR|rtl88xxau-aircrack-dkms-git}} || 8811au, 8812au, 8821au チップセット用の Aircrack-ng カーネルモジュール。モニタモーンジェクションモードサポト。
 
|-
 
|-
| rtl8811au, rtl8812au, rtl8821au || 5.1.5 || {{AUR|rtl8821au-dkms-git}} || rtl8812au については最新版を使うことを推奨します
+
| rtl8812au || {{AUR|rtl8812au-dkms-git}} || rtl8812au '''のみ'''用の公式の最新 Realtek ドライババージョン
 
|-
 
|-
| rtl8814au || 4.3.21 || {{AUR|rtl8814au-dkms-git}} || rtl8813au でも動作する可能性があます
+
| rtl8811au, rtl8821au || {{AUR|rtl8821au-dkms-git}} || rtl8821au 用のよ新しいドライババージョン
  +
|-
  +
| rtl8814au || {{AUR|rtl8814au-dkms-git}} || おそらく rtl8813au に対しても機能する。
 
|}
 
|}
   
  +
==== rtl8811cu/rtl8821cu ====
上記のパッケージを使うには [[DKMS]] が必要です。適切なカーネルヘッダーをインストールしてください。
 
  +
  +
{{AUR|rtl8821cu-dkms-git}} は Realtek 8811cu と 8821cu チップセット用のカーネルモジュールを提供します。
  +
  +
パッケージをインストールするには [[DKMS]] が必要です。適切なカーネルヘッダーをインストールしてください。
  +
  +
{{ic|8821cu}} がロードされていてもワイヤレスインターフェイスが見つからない場合、おそらく {{ic|rtw_RFE_type}} [[カーネルモジュールパラメータ]]を手動で指定する必要があります[https://forums.linuxmint.com/viewtopic.php?p=1913190&sid=68f2d6eff91cd47e184ae5a56385dc02#p1913190][https://github.com/brektrou/rtl8821CU/issues/83]。例えば {{ic|1=rtw_RFE_type=0x26}} や他の値を試してみると、機能するかもしれません。
  +
  +
==== rtl8821ce ====
  +
  +
{{AUR|rtl8821ce-dkms-git}} は Realtek 8821ce チップセット用のカーネルモジュールを提供します。このチップセットは Asus X543UA に搭載されています。
  +
  +
パッケージをインストールするには [[DKMS]] が必要です。適切なカーネルヘッダーをインストールしてください。
  +
  +
{{Note|1=Realtek により提供されているデフォルトの {{ic|rtl8821ce}} モジュールが Linux カーネル ≥ 5.9 で壊れており、接続品質が悪くなると報告されています[https://bbs.archlinux.org/viewtopic.php?id=273440]。上記の AUR バージョンを優先して使用するべきです。[https://github.com/tomaspinho/rtl8821ce#wi-fi-not-working-for-kernel--59 GitHub での文章] を見てください。デフォルトのカーネルドライバ ({{ic|rtw88_8821ce}}) が使用されているかどうかを確認するには {{ic|lspci -k}} を使用してください。もし使用されているのであれば、[[ブラックリスト]]にそれを追加し、システムを再起動してください。}}
   
 
==== rtl8822bu ====
 
==== rtl8822bu ====
   
{{AUR|rtl8822bu-dkms-git}} は Edimax EW7822ULC USB3Asus AC53 Nano USB 802.11ac アダプタに搭載されている Realtek 8822bu チップセットを使うためのカーネルモジュールが入っています。
+
{{AUR|rtl88x2bu-dkms-git}} は Realtek 8822bu チップセット用のカーネルモジュールを提供します。このチップセットは Edimax EW7822ULC USB3Asus AC53 Nano USB 802.11ac、TP-Link Archer T3U アダプタに搭載されています。
   
パッケージをインストールするには [[DKMS]] が必要です。適なカーネルヘッダーをインストールしてください。
+
パッケージをインストールするには [[DKMS]] が必要です。適なカーネルヘッダーをインストールしてください。
   
 
==== rtl8xxxu ====
 
==== rtl8xxxu ====
722行目: 643行目:
 
サードパーティ製のモジュールをコンパイルすることでメインラインカーネルの {{ic|rtl8xxxu}} モジュールの問題を解決できる場合があります。ソースコードは [https://github.com/lwfinger?tab=repositories GitHub リポジトリ] に存在します。
 
サードパーティ製のモジュールをコンパイルすることでメインラインカーネルの {{ic|rtl8xxxu}} モジュールの問題を解決できる場合があります。ソースコードは [https://github.com/lwfinger?tab=repositories GitHub リポジトリ] に存在します。
   
一部のドライバーは AUR の {{AUR|rtl8723bu-git}} や {{AUR|rtl8723bu-git-dkms}} パッケージなどでインストールできます。
+
一部のドライバーは AUR の {{AUR|rtl8723bu-dkms-git}} パッケージなどでインストールできます。
  +
  +
==== RTW88 ====
  +
  +
RWT88 カーネルモジュールは[[カーネル#公式サポートカーネル|公式にサポートされている]] Arch Linux カーネルの全てに含まれています。サポートされているデバイスの数は時間とともに増え、現在では、必要な設定とコンパイルを行えば、ほとんどの RTW88 チップデバイスをサポートしています。
  +
  +
Linux 6.10.3 の時点では、このドライバは次のデバイスをサポートしています: 882BE (''おそらく'')、8703B、8723CS、8723D、8723DE、8723DS、8723DU、8723X、8821C、8821CE、8821CS、8821CU、8822B、8822BE、8822BS、8822BU、8822C、8822CE、8822CS、8822CU.
  +
  +
サポートされているデバイスの最新のリストを入手するには、{{Pkg|linux}} の [https://gitlab.archlinux.org/archlinux/packaging/packages/linux/-/blob/main/config config] で {{ic|<nowiki>CONFIG_RTW88_</nowiki>}} と検索するか、[https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git/tree/drivers/net/wireless/realtek/rtw88/Kconfig 上流で wireless-next] を確認してください。
  +
  +
[[NetworkManager#検出されてはいるのにヨーロッパのワイヤレスネットワークに接続できない|wireless-regdom が設定されている]]ことを'''確認してください'''。さもないと、WiFi デバイスはすべて見えますが、'''接続することができなくなってしまいます'''。Out of tree のドライバである {{AUR|rtl88x2bu-dkms-git}} は、そのような設定無しで接続できるので、このドライバから切り替える際は規制範囲を設定しておくことが重要です。
  +
  +
この症状は dmesg では以下のように見えます:
  +
  +
{{bc|<nowiki>
  +
[ +13.369951] wlan0: send auth to *WiFi_AP_mac* (try 1/3)
  +
[ +0.000685] wlan0: authenticated
  +
[ +0.000449] wlan0: associate with *WiFi_AP_mac* (try 1/3)
  +
[ +0.000866] wlan0: RX AssocResp from *router_mac* (capab=0x1011 status=0 aid=2)
  +
[ +0.323058] wlan0: associated
  +
[ +0.000046] wlan0: deauthenticating from *WiFi_AP_mac* by local choice (Reason: 3=DEAUTH_LEAVING)
  +
</nowiki>}}
  +
  +
また、iwd のログでは:
  +
  +
{{bc|<nowiki>
  +
event: state, old: autoconnect_full, new: connecting
  +
event: connect-timeout, reason: 0
  +
event: connect-failed, status: 1
  +
</nowiki>}}
  +
  +
==== RTW89 ====
  +
  +
RTW89 カーネルモジュールは、上流のカーネルにマージされており、新しい Realtek ワイヤレスチップセットのサポートを提供します。
  +
  +
このドライバは次をサポートします: 8852AE, 8851BE, 8852BE, 8852CE。
  +
  +
一部のコンピュータで接続が不安定になることがあります。特に最近の Lenovo と HP のモデルに多いようです。
  +
次の設定を用いて ASPM 関係の機能を無効にしてみてください。
  +
  +
{{hc|/etc/modprobe.d/70-rtw89.conf|2=
  +
options rtw89_pci disable_aspm_l1=y disable_aspm_l1ss
  +
}}
  +
  +
参考:
  +
* https://github.com/lwfinger/rtw89#option-configuration
  +
* https://github.com/lwfinger/rtw89/issues/275#issuecomment-1784155449
   
 
=== Atheros ===
 
=== Atheros ===
   
[http://madwifi-project.org/ MadWifi チーム] によって、Atheros チップセットを使っているデバイス用に3つのモジュールがメンテナンスされています:
+
Atheros チップセットのあるデバイス用に3つのモジュールがメンテナンスされています:
   
  +
* {{ic|ath5k}} は {{ic|madwifi}} ドライバーの後継ドライバーです。現在、チップセットによってはベターな選択肢ですが、全てのチップセットがサポートされているわけではありません(下を見て下さい)。
* {{ic|madwifi}} は古い、旧式のドライバーです。2.6.39.1 から Arch のカーネルには含まれていません<sup>[https://mailman.archlinux.org/pipermail/arch-dev-public/2011-June/020669.html]</sup>。
 
* {{ic|ath5k}} は新しいドライバーで {{ic|madwifi}} ドライバーを置き換えます。現在、チップセットによっはベターな選択肢でが、全てのチップセットがサポートされているわけではありせん(下を見て下さい)
+
* {{ic|ath9k}} は、より新しい Atheros チップセット作られいま。802.11n 対応のチップは全てサポートていま
* {{ic|ath9k}} は3つのドラバーの中で最新のドライバ、新しい Atheros チップセットに対応しています。802.11n 対応のチップ全てサポートています。
+
* {{ic|ath12k}} は、Qualcomm Wi-Fi 7 (IEEE 802.11be) デバス用 Linux ドライバです。ath12k mac80211 を使用します。
   
Atheros デバイス向けに他にも複数のドライバーが存在します。詳しくは [https://wireless.kernel.org/en/users/Drivers/Atheros#PCI_.2F_PCI-E_.2F_AHB_Drivers Linux Wireless ドキュメント] を見て下さい。
+
Atheros デバイス向けに他にも複数のドライバーが存在します。詳しくは [https://wireless.docs.kernel.org/en/latest/en/users/drivers/atheros.html#pci-pci-e-ahb-drivers Linux Wireless ドキュメント]を見て下さい。
   
====ath5k====
+
==== ath5k ====
   
  +
外部の文献:
参照:
 
  +
* https://wireless.kernel.org/en/users/Drivers/ath5k
 
* https://wiki.debian.org/ath5k
+
* https://wireless.docs.kernel.org/en/latest/en/users/drivers/ath5k.html
  +
* [[Debian:ath5k]]
   
ウェブページのロードがランダムで極端に遅くなったり、デバイスが IP アドレスを取得できなくなったら、{{ic|ath5k}} モジュールに {{ic|1=nohwcrypt=1}} オプションを付けてロードして暗号化をハードウェアからソフトウェアに切り替えてください。詳しくは[[カーネルモジュール#設定]]を見て下さい。
+
ウェブページのロードがランダムで極端に遅くなったり、デバイスが IP アドレスを取得できなくなったら、{{ic|ath5k}} モジュールに {{ic|1=nohwcrypt=1}} オプションを付けてロードして暗号化をハードウェアからソフトウェアに切り替えてください。詳しくは[[カーネルモジュール#モジュールオプションを設定する]]を見て下さい。
   
 
ラップトップによっては無線 LED インディケータが赤と青に点滅する問題が発生することがあります。この問題を解決するには、以下を実行して下さい:
 
ラップトップによっては無線 LED インディケータが赤と青に点滅する問題が発生することがあります。この問題を解決するには、以下を実行して下さい:
749行目: 717行目:
 
もしくは [https://bugzilla.redhat.com/show_bug.cgi?id=618232 このバグレポート] を見て下さい。
 
もしくは [https://bugzilla.redhat.com/show_bug.cgi?id=618232 このバグレポート] を見て下さい。
   
====ath9k====
+
==== ath9k ====
   
 
参照:
 
参照:
* https://wireless.kernel.org/en/users/Drivers/ath9k
+
* https://wireless.wiki.kernel.org/en/users/drivers/ath9k
* https://wiki.debian.org/ath9k
+
* [[Debian:ath9k]]
   
Linux 3.15.1 現在、一部のユーザーが帯域幅が減少することを報告しています。{{ic|/etc/modprobe.d/ath9k.conf}} を編集して以下の行追加することで問題が解決することがあります:
+
Linux 3.15.1 現在、一部のユーザーが帯域幅が減少することを報告しています。{{ic|ath9k}} モジュールに対して {{ic|1=nohwcrypt=1}} [[カーネルモジュールパラメータ]]設定することでこれを修正することができる場合があります
options ath9k nohwcrypt=1
 
   
{{Note|lsmod コマンドを使って使用しているモジュールの名前を確認して必要に応じて上記のコマンドを置き換えてください (例: ath9k_htc)。}}
+
{{Note|lsmod コマンドを使って使用しているモジュールの名前を確認して必要に応じて {{ic|ath9k}} を置き換えてください (例: ath9k_htc)。}}
 
安定性に問題が起こる場合、{{AUR|backports-patched}} パッケージを試してみることもできます。サポートと開発のための [https://lists.ath9k.org/mailman/listinfo/ath9k-devel ath9k メーリングリスト] が存在します。
 
   
 
===== 省電力機能 =====
 
===== 省電力機能 =====
   
[https://wireless.kernel.org/en/users/Documentation/dynamic-power-save Linux Wireless] には AR9280 よりも新しい Atheros 製の ath9k シングルチップでは動的な省電力機能が有効になると書かれていますが、一部のデバイス (例: AR9285) では {{Pkg|powertop}} を使って確認すると省電力機能が無効になっていることがわかります。そのような場合、手動で有効にしてください。
+
[https://wireless.docs.kernel.org/en/latest/en/users/documentation/dynamic-power-save.html Linux Wireless] には AR9280 よりも新しい Atheros 製の ath9k シングルチップでは動的な省電力機能が有効になると書かれていますが、一部のデバイス (例: AR9285) では {{Pkg|powertop}} を使って確認すると省電力機能が無効になっていることがわかります。そのような場合、手動で有効にしてください。
   
 
ただし一部のデバイス (例: AR9285) では省電力機能を有効にすると以下のようなエラーが発生します:
 
ただし一部のデバイス (例: AR9285) では省電力機能を有効にすると以下のようなエラーが発生します:
772行目: 737行目:
 
}}
 
}}
   
{{ic|ath9k}} モジュール {{ic|1=ps_enable=1}} オプションを設定することでエラーは解決できま:
+
解決策は、{{ic|ath9k}} モジュールに対して {{ic|1=ps_enable=1}} [[カーネルモジュールパラメータ]]を設定することです
 
{{hc|/etc/modprobe.d/ath9k.conf|2=
 
options ath9k ps_enable=1
 
}}
 
 
===== ASUS =====
 
 
ASUS のノートパソコンでは (ASUS U32U シリーズでテスト)、{{ic|/etc/modprobe.d/asus_nb_wmi.conf}} に {{ic|1=options asus_nb_wmi wapf=1}} を追加すると rfkill に関連する問題が解決するかもしれません。
 
   
 
=== Intel ===
 
=== Intel ===
 
====ipw2100 と ipw2200====
 
モジュールはカーネルによって完全にサポートされていますが、追加のファームウェアが必要になります。使うチップセットによって、{{Pkg|ipw2100-fw}} か {{Pkg|ipw2200-fw}} を[[pacman|インストール]]してください。そして適切なモジュールを[[カーネルモジュール#手動でモジュールを扱う|再ロード]]してください。
 
 
{{Tip|以下の[[カーネルモジュール#モジュールオプションを設定する|モジュールオプション]]を使用できます:
 
* {{ic|1=rtap_iface=1}} オプションを使うと radiotap インターフェイスが有効になります
 
* {{ic|1=led=1}} オプションを使うと無線が接続・切断した時にフロントの LED が光るようになります
 
}}
 
   
 
==== iwlegacy ====
 
==== iwlegacy ====
   
[https://wireless.kernel.org/en/users/Drivers/iwlegacy iwlegacy] は Intel の 3945, 4965 ワイヤレスチップのワイヤレスドライバーです。このファームウェアは {{Pkg|linux-firmware}} パッケージに含まれています。
+
[https://wireless.docs.kernel.org/en/latest/en/users/drivers/iwlegacy.html iwlegacy] は Intel の 3945, 4965 ワイヤレスチップのワイヤレスドライバーです。このファームウェアは {{Pkg|linux-firmware}} パッケージに含まれています。
   
 
[[udev]] が自動でドライバーをロードするはずですが、ロードされないときは手動で {{ic|iwl3945}} か {{ic|iwl4965}} をロードしてください。詳しくは[[カーネルモジュール#ロード]]を見てください。
 
[[udev]] が自動でドライバーをロードするはずですが、ロードされないときは手動で {{ic|iwl3945}} か {{ic|iwl4965}} をロードしてください。詳しくは[[カーネルモジュール#ロード]]を見てください。
806行目: 755行目:
 
==== iwlwifi ====
 
==== iwlwifi ====
   
[https://wireless.kernel.org/en/users/Drivers/iwlwifi iwlwifi] は 5100AGN, 5300AGN, 5350AGN などの Intel の最新のワイヤレスチップのワイヤレスドライバーです。[https://wireless.kernel.org/en/users/Drivers/iwlwifi#Supported_Devices full list of supported devices] を見て下さい。このファームウェアは {{Pkg|linux-firmware}} パッケージに含まれています。{{Aur|linux-firmware-iwlwifi-git}} パッケージをインストールすることで新しいバージョンを使用することができます
+
[https://wireless.wiki.kernel.org/en/users/Drivers/iwlwifi iwlwifi] は 5100AGN, 5300AGN, 5350AGN などの Intel の最新のワイヤレスチップのワイヤレスドライバーです。[https://wireless.wiki.kernel.org/en/users/Drivers/iwlwifi#Supported_Devices full list of supported devices] を見て下さい。
   
 
接続品質が悪いといった一般的なネットワーク接続の問題が起こる場合は、802.11n を無効にしてソフトウェア暗号を有効にしてみて下さい:
 
接続品質が悪いといった一般的なネットワーク接続の問題が起こる場合は、802.11n を無効にしてソフトウェア暗号を有効にしてみて下さい:
814行目: 763行目:
 
}}
 
}}
   
802.11n モードでアップリンクの速度が遅い (例: 20Mbps) 場合は、アンテナアグリゲションを有効化してみてください:
+
アップリンクの速度が遅い問題が発生する場合は、無線ダプター[[電源管理#ネットワクイターフェイス|省電力モード]]切ってみてさい
  +
  +
802.11ax (WiFi 6) アクセスポイントがあり、ビーコンの検出や不安定な接続に関する問題がある場合、[https://www.intel.com/content/www/us/en/support/articles/000054799/network-and-i-o/wireless.html Intel Article 54799] を見てみてください。
  +
  +
{{Note|{{ic|1=11n_disable=0}} を使うと 802.11ac も妨げられ、より遅いプロトコル(5Ghz 帯での 802.11a か 2.4Ghz 帯での 802.11b/g)での接続しかできなくなります。}}
  +
  +
===== Bluetooth の共存 =====
  +
  +
Bluetooth ヘッドセットを接続できない場合やダウンロード速度があまり出ない場合、[https://wireless.docs.kernel.org/en/latest/en/users/drivers/iwlwifi.html#wi-fi-bluetooth-coexistence Bluetooth の共存]を無効化してみてください:
   
 
{{hc|/etc/modprobe.d/iwlwifi.conf|2=
 
{{hc|/etc/modprobe.d/iwlwifi.conf|2=
options iwlwifi 11n_disable=8
+
options iwlwifi bt_coex_active=0
  +
}}
  +
  +
{{Note|カーネルバージョン 5.8 より、{{ic|bt_coex_active}} と {{ic|sw_crypto}} モジュールオプションは、{{ic|iwlmvm}} カーネルモジュールにより操作されるハードウェアに対しては無効化されています。{{ic|iwldvm}} モジュールにより操作されるより古いハードウェアでは、上記のオプションはまだ有効です。
 
}}
 
}}
   
  +
===== ファームウェアの問題 =====
オプションの名前に惑わされてはいけません。値が {{ic|8}} に設定されている場合、無効化ではなくアンテナのアグリゲーションが再有効化されます [https://forums.gentoo.org/viewtopic-t-996692.html?sid=81bdfa435c089360bdfd9368fe0339a9] [https://bugzilla.kernel.org/show_bug.cgi?id=81571]。
 
   
  +
ドライバがスタックトレースとエラーを出力する問題があり、これによりスタッタリングが発生する可能性があります。
これで上手くいかない場合、無線アダプターの省電力モードを切ってみて下さい。永続的に設定するには、新しい udev ルールを追加します:
 
   
  +
{{hc|# dmesg|2=
{{hc|/etc/udev/rules.d/80-iwlwifi.rules|2=
 
  +
Microcode SW error detected. Restarting 0x2000000.
ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="''your_mac_address''", RUN+="/usr/bin/iw dev %k set power_save off"
 
 
}}
 
}}
   
  +
または、単に雑多な問題が発生する場合もあります (例: [https://web.archive.org/web/20221119172710/https://www.reddit.com/r/archlinux/comments/x0v5jj/rant_intel_wifi_firmwares_are_utter_garbage/ 5GHz での接続の問題、ランダムな接続断、復帰時に接続なし])。
===== Bluetooth の共存 =====
 
   
  +
ファームウェアが問題の原因であることを確認するには、{{Pkg|linux-firmware}} パッケージを[[ダウングレード]]してみてください。
Bluetooth ヘッドセットを接続できない場合やダウンロード速度があまり出ない場合、Bluetooth の共存を無効化してみてください [https://wireless.wiki.kernel.org/en/users/Drivers/iwlwifi#wifibluetooth_coexistence]:
 
   
  +
確認が取れたら、バグのあるファームウェアファイルを移動して、古いバージョンが読み込まれるようにしてください (こうすることで、{{Pkg|linux-firmware}} を最新の状態にできます。{{Pkg|linux-firmware}} は Intel WiFi カード以外のファームウェアアップデートも提供するからです。):
{{hc|/etc/modprobe.d/iwlwifi.conf|2=
 
  +
options iwlwifi bt_coex_active=0
 
  +
# for i in {64..73} ; do mv /usr/lib/firmware/iwlwifi-ty-a0-gf-a0-$i.ucode.xz /usr/lib/firmware/iwlwifi-ty-a0-gf-a0-$i.ucode.xz.bak ; done
}}
 
  +
  +
アップデートのたびにこの手順を繰り返さないようにするために、{{ic|pacman.conf}} 内の [[NoExtract]] 配列でワイルドカードを使って、該当するファイルのインストールをブロックしてください。
   
  +
===== Windows から起動するとアダプタが検出されない =====
====LED の点滅を無効化する====
 
   
  +
Windows のセッション終了後に Wifi アダプタが検出されない場合、Windows の'''高速スタートアップ'''機能が原因であるかもしれません(この機能はデフォルトで有効になっています)。[[Windows と Arch のデュアルブート#Windows 設定|高速スタートアップを無効化]]してみてください。[https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi#about_dual-boot_with_windows_and_fast-boot_enabled iwlwifi カーネルドライバ wiki にはこれのエントリがあります]。
{{Note|{{ic|iwlegacy}} と {{ic|iwlwifi}} ドライバーで動作します。}}
 
   
  +
==== LED の点滅を無効化する ====
デフォルト設定ではモジュールの動作中 LED が点滅するようになっています。人によってはこれが鬱陶しく感じるかもしれません。Wi-Fi を使っている時に LED を固定するには、[[systemd#一時ファイル|systemd-tmpfiles]] を使って下さい:
 
  +
  +
{{Note|{{ic|iwlegacy}} ドライバと {{ic|iwlwifi}} ドライバの両方で以下のオプションは機能します。}}
  +
  +
デフォルト設定ではモジュールの動作中 LED が点滅するようになっています。人によってはこれが鬱陶しく感じるかもしれません。Wi-Fi を使っている時に LED を固定するには、[[systemd-tmpfiles]] を使って下さい:
   
 
{{hc|/etc/tmpfiles.d/phy0-led.conf|
 
{{hc|/etc/tmpfiles.d/phy0-led.conf|
852行目: 818行目:
 
# cat /sys/class/leds/phy0-led/trigger
 
# cat /sys/class/leds/phy0-led/trigger
   
{{Tip|{{ic|/sys/class/leds/phy0-led}} がない場合、{{ic|1=led_mode="1"}} [[カーネルモジュール#モジュールオプションを設定する|モジュールオプション]]を使ってみて下さい。}}
+
{{Tip|{{ic|/sys/class/leds/phy0-led}} がない場合、{{ic|1=led_mode="1"}} [[カーネルモジュール#モジュールオプションを設定する|モジュールオプション]]を使ってみて下さい。これは {{ic|iwlwifi}} と {{ic|iwlegacy}} ドライバの両方で有効なはずです。}}
   
 
=== Broadcom ===
 
=== Broadcom ===
  +
 
[[Broadcom ワイヤレス]]を見て下さい。
 
[[Broadcom ワイヤレス]]を見て下さい。
   
 
=== 他のドライバー・デバイス ===
 
=== 他のドライバー・デバイス ===
   
====Tenda w322u====
+
==== Tenda w322u ====
  +
 
この Tenda カードは {{ic|rt2870sta}} デバイスとして扱って下さい。[[#rt2x00]] を参照。
 
この Tenda カードは {{ic|rt2870sta}} デバイスとして扱って下さい。[[#rt2x00]] を参照。
   
====orinoco====
+
==== orinoco ====
 
カーネルパッケージの一部となっているので、別個インストールする必要はありません。
 
カーネルパッケージの一部となっているので、別個インストールする必要はありません。
   
869行目: 837行目:
 
==== prism54 ====
 
==== prism54 ====
   
このドライバー {{ic|p54}} はカーネルに含まれていますが、[http://linuxwireless.org/en/users/Drivers/p54#firmware このサイト] からあなたのカードに対応するファームウェアをダウンロードして {{ic|/usr/lib/firmware}} ディレクトリにインストールする必要があります。
+
このドライバー {{ic|p54}} はカーネルに含まれていますが、[https://wireless.wiki.kernel.org/en/users/drivers/p54#firmware このサイト] からあなたのカードに対応するファームウェアをダウンロードして {{ic|/usr/lib/firmware}} ディレクトリにインストールする必要があります。
   
 
{{Note|古いドライバー {{ic|prism54}} が新しいドライバー ({{ic|p54pci}} や {{ic|p54usb}}) と衝突することがあります。{{ic|prism54}} を[[カーネルモジュール#ブラックリスト|ブラックリスト化]]して下さい。}}
 
{{Note|古いドライバー {{ic|prism54}} が新しいドライバー ({{ic|p54pci}} や {{ic|p54usb}}) と衝突することがあります。{{ic|prism54}} を[[カーネルモジュール#ブラックリスト|ブラックリスト化]]して下さい。}}
   
==== ACX100/111 ====
+
==== zd1211rw ====
   
  +
[https://sourceforge.net/projects/zd1211/ {{ic|zd1211rw}}] は ZyDAS ZD1211 802.11b/g USB WLAN チップセット用のドライバで、最近の Linux カーネルに含まれています。サポートされているドライバの一覧は [https://wireless.docs.kernel.org/en/latest/en/users/drivers/zd1211rw/devices.html] を見て下さい。{{AUR|zd1211-firmware}} パッケージとして提供されているファームウェアを[[インストール]]することだけが必要です。
{{Warning|これらのデバイスのドライバーは[https://mailman.archlinux.org/pipermail/arch-dev-public/2011-June/020669.html 壊れており]新しいバージョンのカーネルでは動作しません。}}
 
   
  +
==== hostap_cs ====
パッケージ: {{ic|tiacx}} {{ic|tiacx-firmware}} (公式リポジトリや AUR からは削除されました)
 
   
  +
[https://hostap.epitest.fi/ Host AP] は Intersil の Prism2/2.5/3 チップセットを使ったワイヤレス LAN カードの Linux ドライバです。ドライバは Linux カーネルに含まれています。
詳しくは [https://sourceforge.net/apps/mediawiki/acx100/index.php?title=Main_Page 公式 wiki] を見て下さい。
 
   
  +
{{Note|{{ic|orinico_cs}} と問題を発生することがあるので、[[カーネルモジュール#ブラックリスト|ブラックリスト化]]してください。}}
====zd1211rw====
 
   
  +
=== ndiswrapper ===
[http://zd1211.wiki.sourceforge.net/ {{ic|zd1211rw}}] は ZyDAS ZD1211 802.11b/g USB WLAN チップセット用のドライバで、最近の Linux カーネルに含まれています。サポートされているドライバの一覧は [http://www.linuxwireless.org/en/users/Drivers/zd1211rw/devices] を見て下さい。{{AUR|zd1211-firmware}} パッケージとして提供されているファームウェアを[[pacman|インストール]]することだけが必要です。
 
   
  +
Ndiswrapper は Linux で Windows のドライバーを使うためのラッパースクリプトです。Windows のドライバーに含まれる ''*.inf'' と ''.sys'' ファイルが必要です。
====hostap_cs====
 
   
  +
{{Note|ドライバがあなたのアーキテクチャ (例: 32/64 ビット) に適合しているかも確認してください。}}
[http://hostap.epitest.fi/ Host AP] は Intersil の Prism2/2.5/3 チップセットを使ったワイヤレス LAN カードの Linux ドライバです。{{ic|hostap_cs}} は {{ic|linux}} パッケージに含まれています。
 
   
  +
{{Tip|''*.exe'' ファイルからこれらのファイルを展開する必要がある場合は、{{pkg|cabextract}} を使って下さい。}}
{{Note|{{ic|orinico_cs}} と問題を発生することがあるので、[[カーネルモジュール#ブラックリスト|ブラックリスト化]]してください。}}
 
   
  +
ndiswrapper を設定するには以下の手順に従って下さい。
===ndiswrapper===
 
   
  +
# {{Pkg|ndiswrapper}} をインストールする。
Ndiswrapper は Linux で Windows のドライバーを使うためのラッパースクリプトです。互換リストは [http://ndiswrapper.sourceforge.net/mediawiki/index.php/List ここ] を見て下さい。Windows のドライバーに含まれる {{ic|*.inf}} と {{ic|.sys}} ファイルが必要です。ドライバがあなたのアーキテクチャ (例: 32/64 ビット) に適合しているかも確認してください。
 
  +
# ドライバを {{ic|/etc/ndiswrapper/}} にインストールする: {{bc|# ndiswrapper -i filename.inf}}
  +
# ndiswrapper にインストールされたドライバをすべて一覧表示する: {{bc|$ ndiswrapper -l}}
  +
# ndiswrapper に設定ファイルを {{ic|/etc/modprobe.d/ndiswrapper.conf}} に書き出させる: {{bc|# ndiswrapper -m<br># depmod -a}}
   
  +
ndiswrapper のインストールはほとんど終わりました。[[カーネルモジュール#モジュールの自動ロード|起動時にモジュールをロード]]できます。
{{Tip|{{ic|*.exe}} ファイルからこれらのファイルを展開する必要がある場合は、{{pkg|cabextract}} を使って下さい。}}
 
 
ndiswrapper を設定するには {{pkg|ndiswrapper-dkms}} をインストールしてから以下の手順に従って下さい。
 
 
1. ドライバを {{ic|/etc/ndiswrapper/*}} にインストールします
 
# ndiswrapper -i ファイル名.inf
 
2. ndiswrapper にインストールされたドライバを全て一覧します
 
$ ndiswrapper -l
 
3. 以下の設定ファイルを書き出します
 
{{hc|/etc/modprobe.d/ndiswrapper.conf|
 
ndiswrapper -m
 
depmod -a
 
}}
 
   
  +
ndiswrapper がロードされるかテストしてください:
これで ndiswrapper のインストールはほぼ完了です; あとは[[カーネルモジュール#ロード]]の指示に従って起動時に自動でモジュールをロードするようにしてください。
 
   
重要なことは ndiswrapper が他のモジュールと一緒にロードされることです。ndiswrapper がロードされているかテストするには、次を実行してください:
 
 
# modprobe ndiswrapper
 
# modprobe ndiswrapper
# iwconfig
 
   
  +
ワイヤレスインターフェイスが今存在しているかどうかをより詳しく調べるには [[ネットワーク設定#ネットワークインターフェイスを表示]] を見てください。
''wlan0'' が表示されるはずです。問題が起こった場合は次のページを見て下さい:
 
[http://ndiswrapper.sourceforge.net/joomla/index.php?/component/option,com_openwiki/Itemid,33/id,installation/ Ndiswrapper installation wiki]。
 
   
  +
問題が起こった場合は次のページを見て下さい:
=== backports-patched ===
 
   
  +
[https://sourceforge.net/p/ndiswrapper/ndiswrapper/HowTos/ ndiswrapper howto]、[https://sourceforge.net/p/ndiswrapper/ndiswrapper/FAQ/ ndiswrapper FAQ]。
{{AUR|backports-patched}} は新しいカーネルのドライバーは旧カーネルで使えるようにバックポートしたパッケージです。プロジェクトは2007年から開始され最初は compat-wireless という名前で、次に compat-drivers となり、最近になって backports になりました。
 
   
  +
== 参照 ==
古いカーネルを使っていて無線が繋がらない場合、このパッケージをインストールすることで問題が解決する場合があります。
 
   
  +
* [https://wireless.wiki.kernel.org/ Linux Wireless プロジェクト]
==参照==
 
 
* [https://wireless.kernel.org/ Linux Wireless プロジェクト]
 
 
* [http://aircrack-ng.org/doku.php?id=install_drivers Aircrack-ng guide on installing drivers]
 
* [http://aircrack-ng.org/doku.php?id=install_drivers Aircrack-ng guide on installing drivers]
  +
* [https://wikidevi.wi-cat.ru Wireless Device Database Wiki] (このフォークは元の wiki が終了してから wi-cat.ru によってホストされています。これより完全ではないバージョンは: [https://en.techinfodepot.shoutwiki.com TechInfoDepot], [https://deviwiki.com/ deviwiki])
  +
* https://github.com/morrownr/USB-WiFi – 様々な Wi-Fi アダプタやチップセットに関する情報や、パフォーマンステスト、ドライバの情報、一般情報を含むサイト。
  +
  +
{{TranslationStatus|Network configuration/Wireless|2024-12-01|821509}}

2024年12月1日 (日) 15:54時点における最新版

関連記事

ネットワーク設定に関するメインの記事は ネットワーク設定 です。

ワイヤレスネットワークの設定は2段階で行います; まずワイヤレスデバイスを使うために正しいドライバがインストールされているか確認し(インストールメディア上では利用できても、明示的にインストールする必要があります)、インターフェースを設定します。次に、ワイヤレス接続を管理する方法を選びます。この記事では両方をカバーしています。また、ワイヤレス管理ツールへの追加リンクもあります。

#iw セクションでは iw を使ってワイヤレスネットワークインターフェイス/ワイヤレス LAN を手動で管理する方法を説明しています。ネットワーク設定#ネットワークマネージャ セクションでは、ワイヤレスインターフェイスを自動的に管理する際に使用できるいくつかのプログラムについて説明しています。それらはすべてネットワークプロファイルのサポートを含んでおり(ノート PC のようにワイヤレスネットワークを頻繁に切り替える際に便利です)、それらのうち一部は GUI を含んでいます。

目次

デバイスドライバ

デフォルトの Arch Linux カーネルはモジュール式です、つまり、マシンハードウェアに必要なドライバの多くはハードドライブに置かれ、モジュールとして利用可能となります。起動時に、udev がハードウェアの一覧を作成し、対応するハードウェア用の適切なモジュール(ドライバ)をロードします。これにより、ネットワークインターフェイスの作成が可能になります。

一部のワイヤレスチップセットは、対応するドライバに加えてファームウェアも必要とします。多くのファームウェアイメージは、linux-firmware パッケージによって提供されますが、プロプライエタリなファームウェアイメージは含まれていないため別途インストールする必要があります。#ドライバー・ファームウェアをインストールするで説明されています。

ノート: 適切なモジュールが起動時に udev によって読み込まれない場合、手動でロードしてください。udev がひとつのデバイスに対して2つ以上のドライバをロードしてしまうと、競合が起こり、設定に失敗してしまう場合があります。望まないモジュールをブラックリスト化してください。

ドライバーの状態を確認する

あなたのカード用のドライバーがロードされていることを確認するには、lspci -klsusb -v の出力を見てください (カードが PCI(e) と USB のどちらに接続されているかに依存します)。カーネルドライバーが使われているなら、例えば以下のように表示されるはずです:

$ lspci -k
06:00.0 Network controller: Intel Corporation WiFi Link 5100
	Subsystem: Intel Corporation WiFi Link 5100 AGN
	Kernel driver in use: iwlwifi
	Kernel modules: iwlwifi
ノート:
  • カードが USB デバイスの場合、dmesg | grep usbcore を root ユーザーとして実行すると usbcore: registered new interface driver rtl8187 のように表示されるはずです。
  • カードを全く確認できない場合、PCI(e) スロット/USB ポートに適切に接続されていないのかもしれません。もう一度、デバイスを接続し直してみてください。

また、ip link コマンドの出力を確認し、ワイヤレスインターフェイスが作成されたことを確認してください。通常、ワイヤレスネットワークインターフェイスの名前は "w" で始まります (例: wlan0wlp2s0)。そして、以下のコマンドでそのインターフェイスを up 状態にしてください:

# ip link set interface up

例えば、インターフェイスが wlan0 である場合、実行すべきコマンドは ip link set wlan0 up となります。

ノート:
  • RTNETLINK answers: Operation not possible due to RF-kill のようなエラーが発生する場合、デバイスがハードロックまたはソフトロックされていないことを確認してください。詳細は #Rfkill の注意点 を参照してください。
  • SIOCSIFFLAGS: No such file or directory というエラーメッセージが発生する場合、ほぼ確実に、あなたのワイヤレスチップセットが機能するにはファームウェアが必要であることを意味します。

ファームウェアがロードされたことを示すカーネルメッセージを確認してください:

# dmesg | grep firmware
[   7.148259] iwlwifi 0000:02:00.0: loaded firmware version 39.30.4.1 build 35138 op_mode iwldvm

関連する出力がない場合、先ほど特定したモジュール (この例では iwlwifi) の完全な出力メッセージを確認して、関連するメッセージやさらなる問題を見つけてください:

# dmesg | grep iwlwifi
[   12.342694] iwlwifi 0000:02:00.0: irq 44 for MSI/MSI-X
[   12.353466] iwlwifi 0000:02:00.0: loaded firmware version 39.31.5.1 build 35138 op_mode iwldvm
[   12.430317] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEBUG disabled
...
[   12.430341] iwlwifi 0000:02:00.0: Detected Intel(R) Corporation WiFi Link 5100 AGN, REV=0x6B

カーネルモジュールのロードに成功し、インターフェイスが up 状態になっている場合、次のセクションはスキップすることができます。

ドライバー・ファームウェアをインストールする

以下のリストを確認し、あなたのカードがサポートされているか確認してください:

注意点として、一部のベンダーは、異なるチップセットを含む製品を出荷しています (その製品の識別子が同じであるとしてもです)。(USB デバイスの場合) usb-id や (PCI デバイスの場合) pci-id のみが信頼できます。

あなたのワイヤレスカードが上記のリストにあった場合、このページの #ドライバとファームウェアのトラブルシューティング サブセクションを見て下さい、特定のワイヤレスカードのドライバーやファームウェアのインストール情報が載っています。その後、またドライバーの状態を確認してください。

ワイヤレスハードウェアが上記のリストになかった場合、おそらくサポートしているのが Windows のみだと思われます (一部の Broadcom、3com など)。その場合、ndiswrapper を使用してみてください。

ユーティリティ

他のネットワークインターフェイスと同じように、ワイヤレスインターフェイスも iproute2 パッケージの ip でコントロールします。

ワイヤレス接続は、ワイヤレス認証に wpa_supplicantiwd を使用するネットワークマネージャを使うか、wpa_supplicantiwd を直接使うことによって、管理することができます。より低レベルな設定を行いたい場合や、レガシーなドライバやレガシーな認証方式を使用している場合には、iw や非推奨の wireless_tools を使用できます。

iw と wireless_tools の比較

ソフトウェア パッケージ WEXT2 nl80211 WEP WPA/WPA2/WPA3 Archiso
iw iw No Yes Yes No Yes
wireless_tools1 wireless_tools Yes No Yes No Yes
  1. 非推奨
  2. 一部の古いドライバは WEXT しかサポートしていないことに注意してください。

以下の表は iwwireless_tools の比較可能なコマンドの概要です。さらなる例は Replacing iwconfig with iw を見てください。

iw コマンド wireless_tools コマンド 説明
iw dev wlan0 link iwconfig wlan0 リンクの状態を取得。
iw dev wlan0 scan iwlist wlan0 scan 利用可能なアクセスポイントをスキャン。
iw dev wlan0 set type ibss iwconfig wlan0 mode ad-hoc 動作モードを ad-hoc に設定。
iw dev wlan0 connect your_essid iwconfig wlan0 essid your_essid 接続してネットワークを開く。
iw dev wlan0 connect your_essid 2432 iwconfig wlan0 essid your_essid freq 2432M 接続して指定したチャンネルのネットワークを開く。
iw dev wlan0 connect your_essid key 0:your_key iwconfig wlan0 essid your_essid key your_key 16進数のキーを使って WEP で暗号化されたネットワークに接続。
iwconfig wlan0 essid your_essid key s:your_key ASCII 文字のキーを使って WEP で暗号化されたネットワークに接続。
iw dev wlan0 set power_save on iwconfig wlan0 power on 省電力機能を有効にする。

iw

ノート:
  • ほとんどのコマンドは root 権限で実行する必要があることに注意してください。通常ユーザーで実行すると、コマンドによっては (例: iwlist) エラーを出さずに終了して正しい出力をしないため、混乱をきたすおそれが有ります。
  • ハードウェアや暗号化方式によっては、手順のいくつかは必要ありません。カードによってはアクセスポイントに関連付けをして IP アドレスを取得する前に、インターフェースの有効化やアクセスポイントのスキャニングが必要なことがあります。実験が必要かもしれません。例えば、WPA/WPA2 ユーザーは #関連付け の手順から直接ワイヤレスネットワークを有効化できます。

このセクションに出てくる例ではあなたのワイヤレスデバイスを interface、wifi のアクセスポイントを your_essid と仮定しています。それぞれ適切な文字列に置き換えて下さい。

インターフェイス名の取得

ヒント: iw ツールの 公式ドキュメント により多くのサンプルがあります。

ワイヤレスインターフェイスの名前を取得するには:

$ iw dev

インターフェイス名は "Interface" という単語のあとに出力されます。例えば、インターフェイス名は wlan0 が一般的です。

インターフェイスの状態の取得

リンクの状態を確認するには、次のコマンドを使ってください。

$ iw dev interface link

次のコマンドで tx/rx バイトの総量やシグナルの強さといった統計値をを取得することができます:

$ iw dev interface station dump

インターフェイスの有効化

ヒント: 通常、この手順は不要です。

カードによっては iwwireless_tools を使う前にカーネルインターフェースをアクティブ化する必要があります:

# ip link set interface up
ノート: RTNETLINK answers: Operation not possible due to RF-killのようなエラーが表示される場合、ハードウェアのスイッチがオンになっているか確認してください。詳細は #Rfkill の注意点 を見てください。

インターフェイスが立ち上がっているか確認するには、次のコマンドの出力を見て下さい:

$ ip link show interface
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000
    link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff

<BROADCAST,MULTICAST,UP,LOWER_UP> にある UP がインターフェイスが立ち上がっていることを示しています。後ろにある state DOWN は関係ありません。

アクセスポイント検索

利用できるアクセスポイントを見るには:

# iw dev interface scan | less
ノート: Interface does not support scanning と表示される場合、おそらくファームウェアのインストールを忘れているはずです。iw が root 権限で実行されていない時にもこのメッセージが表示されることがあります。
ヒント: 住んでいる地域によっては、利用できるネットワークを全て表示するために規制範囲を正しく設定する必要があります。

チェックするべきポイント:

  • SSID: ネットワークの名前。
  • Signal: は dBm 単位でワイヤレスの信号強度を報告します(例: -100 から 0)。負の数が 0 に近づくほど、信号の品質が良いことを表します。良質なリンクや低品質なリンクで報告された強度を観察することで、それぞれの範囲を知ることができます。
  • Security: 直接は報告されません、capability から始まる行を見て下さい。capability: ESS Privacy ShortSlotTime (0x0411) のように Privacy が含まれている場合、そのネットワークは保護されています。
    • RSN 情報ブロックがある場合、そのネットワークは Robust Security Network プロトコル、別名 WPA2 によって保護されています。
    • WPA 情報ブロックがある場合、そのネットワークは Wi-Fi Protected Access プロトコルによって保護されています。
    • RSNWPA ブロックには以下の情報が含まれていることがあります:
      • Group cipher: 値は TKIP, CCMP, その両方, もしくはその他。
      • Pairwise ciphers: 値は TKIP, CCMP その両方, もしくはその他。Group cipher と同じ値である必要はありません。
      • Authentication Suites: 値は PSK, 802.1x, もしくはその他。家庭用ルーターでは、一般的に PSK になるでしょう (つまりパスフレーズ)。大学などでは、ログインとパスワードが必要な 802.1x スイートになると思われます。利用するためにはどのキーマネージメント (例: EAP) とカプセル化 (例: PEAP) が使われているか知る必要があります。詳しくは Wikipedia:Authentication protocol と関連記事を見て下さい。
    • Privacy があるのに RSNWPA ブロックがない場合、WEP が使われています。

動作モードの設定

ワイヤレスカードの正しい動作モードを設定する必要があるかもしれません。具体的に言うと、アドホックネットワークに接続したい場合、動作モードを ibss に設定する必要があります:

# iw dev interface set type ibss
ノート: カードによっては、動作モードを変更するためにワイヤレスインターフェースを down させておく必要があるかもしれません (ip link set interface down)。
ノート: 動作モードを AP に変更する間 (iw interface set type ap)、以下のようなエラーが発生するでしょう:
You need to run a management daemon, e.g. hostapd,
see https://wireless.wiki.kernel.org/en/users/documentation/hostapd
for more information on how to do that.

これは、動作モードを __ap に変更することによりバイパス可能です (iw interface set type __ap)。

アクセスポイントへの接続

暗号化方式によっては、使用するワイヤレスデバイスをアクセスポイントと関連付けて、暗号化キーを渡す必要があります:

  • 暗号化なし
    # iw dev interface connect "your_essid"
  • WEP
    • 16進数、または ASCII キーを使用する(WEP のキーは固定長なので、キーの形式は自動的に判別されます):
      # iw dev interface connect "your_essid" key 0:your_key
    • 16進数、または ASCII キーを使用し、3番目に設定したキーをデフォルトとして指定する(キーは 0 からカウントされます。4 つまで可能です):
      # iw dev interface connect "your_essid" key d:2:your_key
  • その他
    • iw は WEP のみを扱えます。他の暗号化スキームを使用して接続する場合、下記の #認証 を見てください。

どの方法を使用しても、正しく関連付けできたかどうかは以下で確認できます:

# iw dev interface link

認証

Linux で Wi-Fi 認証を行う方法としては主に wpa_supplicantiwd があります。

WPA2 Personal

WPA2 Personal(別名: WPA2-PSK)は Wi-Fi Protected Access のモードの1つです。

wpa_supplicantiwd を用いて WPA2 Personal ネットワークに認証したり、ネットワークマネージャを用いて接続したりできます。ネットワークに認証しただけの場合、接続はまだ完全には機能せず、手動またはDHCPクライアントを用いて IP アドレスとルートを割り当てる必要があります。

WPA2 Enterprise

WPA2 EnterpriseWi-Fi Protected Access のモードの1つです。WPA2 Personal よりも優れたセキュリティとキー管理を提供し、VLAN や NAP といった他のエンタープライズタイプの機能を提供します。しかし、ユーザの認証を処理するために RADIUS サーバと呼ばれる外部の認証サーバを必要とします。これは、ワイヤレスルータとアクセスポイント(AP)の他に何も必要とせず、すべてのユーザに対して1つのパスフレーズかパスワードを使用する Personal モードとは対照的です。

Enterprise モードでは、ユーザはユーザ名とパスワード、もしくはデジタル証明書、もしくはその両方を用いて Wi-Fi ネットワークにログインできます。それぞれのユーザは動的でユニークな暗号鍵を持っているため、ワイヤレスネットワーク上のユーザからユーザへの盗聴防止や暗号強度の向上に役立ちます。

このセクションでは、WPA2 Enterprise モードを用いてワイヤレスアクセスポイントに接続するためのネットワーククライアントの設定について説明します。アクセスポイントそのもののセットアップに関する情報は ソフトウェアアクセスポイント#RADIUS を見てください。

ノート: Personal モードでは要求された時に単にパスフレーズを入力する必要があるだけですが、Enterprise モードではより複雑なクライアントの設定が必要です。クライアントはおそらくサーバの CA 証明書を(EAP-TLS を使用する場合はユーザごとの証明書も)インストールし、手動でワイヤレスセキュリティと 802.1X 認証を設定する必要があるでしょう。

プロトコル間の比較はこの表を見てください。

警告: クライアントがサーバの CA 証明書を確認せずに WPA2 Enterprise を使用することは可能ですが、常に確認すべきです。なぜなら、アクセスポイントの認証なしでは、接続が中間者攻撃の対象となる可能性があるからです。このようなことが起こりうる理由は、接続のハンドシェイク自体を暗号化することはできる一方、広く使用されているセットアップでは平文または簡単に破れる #MS-CHAPv2 を使用してパスワード自体を送信するからです。ゆえに、クライアントはパスワードを悪意のあるアクセスポイントに送信するかもしれません。その結果、そのアクセスポイントは接続をプロキシすることができてしまいます。

MS-CHAPv2

PEAP の MSCHAPv2 type-2 認証を要求する WPA2-Enterprise ワイヤレスネットワークは時々、ppp パッケージに加えて pptpclient パッケージを必要とします。しかし、netctl は ppp-mppe 無しでも動作するようです。いずれの場合でも、MSCHAPv2 は非常に脆弱であるため、使用は推奨されません。しかし、他の手段は通常選択肢になりません。

eduroam

eduroam は研究、高等教育、継続教育のユーザー向けの、WPA2 Enterprise ベースの国際ローミングサービスです。

ノート:
  • このセクションにある如何なるプロファイルを適用する前に始めに機関の接続の詳細を確認してください。プロファイル例は機能することもセキュリティ要件を満たすことも保証されません。
  • 接続プロファイルを暗号化せずに保存する場合、root として chmod 600 profile を実行して、ファイルへの読み込みアクセスを root アカウントに制限することを推奨します。
  • NetworkManager で認証が失敗し続ける場合、TLS 1.0 に対しては phase1-auth-flags=32 を、TLS 1.1 に対しては phase1-auth-flags=64 を設定してみてください。これは [1]NetworkManager#OpenSSL の "unsupported protocol" エラーで WPA Enterprise の接続の認証に失敗する で説明されています。
ヒント: NetworkManager 向けの設定は eduroam Configuration Assistant Tool で生成できます。このツールは、pythonpython-dbus を必要とします。

手動/自動 セットアップ

  • wpa_supplicant は、設定ファイルを直接編集するか CLI/GUI フロントエンドを使用することで設定できます。また、DHCP クライアントと組み合わせて使うことができます。接続の詳細を設定するには /usr/share/doc/wpa_supplicant/wpa_supplicant.conf の例を見てください。
  • iwd#WPA Enterprise
  • NetworkManager は、nmclinmtuiグラフィカルなフロントエンドを使用して WPA2 Enterprise プロファイルを作成できます。
  • ConnMan は、ネットワークに接続する前に、別の設定ファイルを必要とします。詳細は connman-service.config(5)ConnMan#eduroam に接続 を見てください。
  • netctl は、WPAConfigSection= に含まれるブロックを通して wpa_supplicant の設定をサポートします。詳細は netctl.profile(5) を見てください。
ノート: 特殊な引用符の規則が適用されます。netctl.profile(5) § SPECIAL QUOTING RULES を見てください。
ヒント: WPAConfigSection'ca_cert="/path/to/special/certificate.cer"' の行を追加することでカスタムの証明書を指定できます。

WPA3 Personal

WPA3 Personal (別名 WPA3-SAE) は、Wi-Fi Protected Access のモードの1つです。

wpa_supplicantiwd の両方が WPA3 Personal をサポートしています。

WPA3 Enterprise

WPA3 Enterprise は Wi-Fi Protected Access のモードの1つです。

wpa_supplicant (バージョン 2:2.10-8 以降) は、WPA3 Enterprise をサポートしています。FS#65314 を参照してください。

ヒントとテクニック

規制範囲に従う

規制範囲(regdomain) は、ワイヤレスハードウェアの動作が FCC や ETSI、他の組織により定められた地域の法律に準拠するようにワイヤレスドライバを設定する際に用いられます。規制範囲では ISO 3166-1 alpha-2 国名コードを使用します。例えば、米国は "US"、中国は "CN"、日本は "JP" となります。

規制範囲は、どのワイヤレスチャネルが利用できるかに関与します。2.4GHz 帯で許可されているチャネルは、米国では 1~11、日本では 1~14、他の殆どの国では 1~13 です。5Ghz 帯では、許可されるチャネルの規則は非常に複雑です。どちらの場合でも、より詳細な情報はこの WLAN チャネルのリストを見てください。

規制範囲はまた、ワイヤレスデバイスから放射される電波の実効輻射電力(EIRP)の制限にも関与します。これは送信パワー(Tx Power)から算出され、dBm/mBm (1dBm=100mBm) または mW (対数スケール)により測られます。2.4Ghz 帯では、米国とカナダでは最大が 30dBm、ヨーロッパのほとんどの地域では 20dBm、その他の地域では 20dBm~30dBm です。通常、5Ghz 帯では、最大値はより低く規定されます。より詳細な情報は wireless-regdb を見てください(EIRP の dBm 値はそれぞれの行の2番めのカッコの中にあります)。

規制範囲の設定を誤ると便利である場合があります(例えば、チャネルが混雑している時に未使用のチャネルを利用できたり、送信パワーを増やして送信範囲を広げたり)。しかし、地域の法律に違反したり、他の無線機器と干渉する可能性があるので、推奨されません

wireless-regdbインストールされていれば、カーネルは規制範囲のデータベースを直接読み込みます。直接読み込むため、セキュリティ上の理由により、カーネルは CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS を yes に設定して、データベースの暗号検証を有効化してあるべきです。これは Arch のカーネルには有効化されていますが、他のカーネルを使用していたり自分でコンパイルしている場合、これを確認するべきです。さらなる情報はこのガイド[リンク切れ 2024-07-30]で見られます。

regdomain を設定するには、wireless-regdb をインストールし、再起動してください。そして、/etc/conf.d/wireless-regdom を編集し、適切なドメインをアンコメントしてください。

現在の規制範囲を一時的に日本に設定するには:

# iw reg set JP

情報を見るには:

$ iw reg get
ノート: デバイスが国名コード "00" に設定されている場合があります(これは "world regulatory domain" で、一般的な設定が含まれています)。この設定を解除できない場合、以下で説明されているように設定を確認してください。

しかし、規制範囲を設定しても設定が変わらない場合があります。一部のデバイスは、デバイスの制限を規定する firmware/EEPROM で規制範囲が設定されています。これは、ソフトウェアでは制限を増やすことしかできず、制限を減らすことができないことを意味します。例えば、中国のデバイスはソフトウェアで米国の規制範囲に設定できるでしょうが、中国では EIRP の最大値が 20dBm と規定されているので、デバイスは米国の最大 EIRP である 30dBm で送信を行うことはできません。

例えば、Atheros デバイスのファームウェアで規制範囲が設定されているかどうか確認するには:

# dmesg | grep ath:

他のチップセットの場合、"EEPROM" や "regdomain"、デバイスドライバの名前で検索すると良いかもしれません。

規制範囲が正しく変更されたかどうかを確認し、利用可能なチャネル数や許可されている送信パワーを確認するには:

$ iw list | grep -A 15 Frequencies:

wpa_supplicant でも、/etc/wpa_supplicant/wpa_supplicant.confcountry= 行で規制範囲を設定できます。

cfg80211 カーネルモジュールでもモジュールオプションを追加することで特定の規制範囲を使用するように設定できます(例: options cfg80211 ieee80211_regdom=JP)。このモジュールオプションは 古い規制範囲の実装から継承されたもので、最近のカーネルでは iwwpa_supplicant のようなユーティリティから nl80211 を通して来たようなユーザスペースの規制ヒントとして振る舞います。

Rfkill の注意点

多くのノート PC にはワイヤレスカードの電源を切るハードウェアボタン/スイッチがあります。しかし、カードがカーネルによってブロックされている場合があります。これは rfkill(8) によって操作できます。現在の状態を確認するには以下のコマンドを使用してください:

$ rfkill
ID TYPE      DEVICE      SOFT      HARD
 0 bluetooth hci0   unblocked unblocked
 1 wlan      phy0   unblocked unblocked

カードが hard-blocked である場合、ハードウェアボタン/スイッチを使ってカードをアンロックできます。カードが hard-blocked でなく、soft-blocked である場合、以下のコマンドを使用してください:

# rfkill unblock wlan
ノート: ハードウェアボタンを押すと、カードが hard-blockedsoft-unblocked の状態から hard-unblockedsoft-blocked の状態になることがあります(つまり、soft-blocked のビットがなんであっても切り替わるということです)。これは rfkill カーネルモジュールのいくつかのオプションを切り替えることで調整できます。

ワイヤレスカードを切り替えるハードウェアボタンはベンダー固有のカーネルモジュールによって操作されます。これらは WMI モジュールであることが多いです。非常に新しいハードウェアモデルでは特に、最新の安定版カーネルでモデルが完全にサポートされていないことがあります。この場合、カーネルのバグトラッカーで情報を探し、まだ報告されていない場合は各ベンダーのカーネルモジュールのメンテナにモデルを報告することが役に立ちます。

[2] も参照してください。

省電力

電源管理#ネットワークインターフェイス を見てください。

トラブルシューティング

このセクションには、ドライバやファームウェアに強く関連しない問題のトラブルシューティングの一般的なヒントを含んでいます。ドライバやファームウェアに関するトピックは次のセクション #ドライバとファームウェアのトラブルシューティング を見てください。

一時的にネットワークにアクセス

ハードウェアに問題があるときに、インターネットに接続してソフトウェアをダウンロードしたりフォーラムでヘルプを得たい場合、Android に内蔵されている機能を使って USB ケーブルでインターネット共有をすることができます。詳しくは Android テザリング#USB テザリングを見て下さい。

ログの取得

トラブルシューティングで一番初めにするべきなのはシステムのログファイルを解析することです。全部を手でパースしないために、新しいターミナル(コンソール)を開いて、接続を試行している間のカーネルメッセージを次のコマンドで見ると良いでしょう:

$ dmesg -w

ネットワーク管理にツールを使っている場合、systemd でも同じことができます:

# journalctl -f

特定の理由コードによる認証解除を伴うワイヤレスエラーがよく起こります。例えば:

wlan0: deauthenticating from XX:XX:XX:XX:XX:XX by local choice (reason=3)

理由コードを見ることでヒントを得られるかもしれません。コントロールメッセージの flowchart を見ることも役に立つかもしれません。ジャーナルのメッセージはこれに従って出力されます。

この記事にあるそれぞれのツールは詳細なデバッグ出力をするオプションを用意しているので、必要ならば、解析の第二段階としてそれを使うことができます。

IP アドレスの取得に失敗する

この記事またはセクションは情報が古くなっています。
理由: iwconfig は非推奨となりました。#iw と wireless_tools の比較 を参照してください。(en:talk:Network_configuration/Wireless#wireless_tools) (Discuss)
  • 有線インターフェイスでは IP アドレスを取得できるのに、無線インターフェイスではできない場合、ワイヤレスカードの省電力機能を無効にしてみてください(on ではなく off を指定してください)。
  • waiting for carrier の問題でタイムアウトエラーになる場合、特定のデバイスのチャンネルモードを auto に設定する必要があるかもしれません:
# iwconfig wlan0 channel auto

チャンネルを auto に変える前に、あなたのワイヤレスインターフェースが止まっていることを確認してください。変更が成功したら、インターフェースを立ち上げなおして次の手順に進んで下さい。

IP アドレスは取得できるのにホスト解決ができない

Captive Portal が存在する可能性のある公共の無線ネットワークを使っている場合、Web ブラウザから(HTTPS ではなく)HTTP ページをクエリしていることを確認してください。一部の captive portal は HTTP のみをリダイレクトするためです。 これが原因ではない場合、ドメイン名を解決できることを確認してください。DHCP を通して広告した DNS サーバを使用することが必須である場合があります。

RTS や fragmentation のしきい値を設定する

無線ハードウェアはデフォルトでは RTS と fragmentation を無効化しています。帯域幅を犠牲にスループットを高める方法は2つ存在します。近隣にアクセスポイントが多く存在する環境で、干渉によってタイムアウトが発生したり接続が途切れる場合、設定によって改善する可能性があります。

パケットの断片化は fragmentation の閾値を越えたパケットを分割してスループットを改善します。最大値 (2346) にするとパケットが超過することはなくなるため断片化を無効化にするのと同義です。最低値 (256) にするとスループットは最大になりますが、かなり帯域幅を消費します。設定するには:

# iw phy0 set frag 512

RTS は RTS の閾値を越えるパケットを送信する前にアクセスポイントとハンドシェイクを実行することでスループットを改善します。最大値 (2347) にするとパケットが超過しなくなり RTS を無効化するのと同じになります。最低値 (0) では全てのパケットで RTS が有効になりますが、大抵の場合は無駄になります。

# iw phy0 set rts 500
ノート: phy0iw phy で確認できるワイヤレスデバイスの名前に置き換えてください。

ランダムに切断する

原因 #1

Journalwlan0: deauthenticating from MAC by local choice (reason=3) と表示され Wi-Fi 接続が失われる場合は、おそらく Wi-Fi カードの省電力機能がアグレッシブすぎるのが原因です。無線カードの省電力機能を無効化してみてください(on ではなく off を指定してください)。

あなたのカードが iwconfig wlan0 power off をサポートしていない場合は、BIOS の電源管理のオプションを確認してください。Lenovo W520 では BIOS にある PCI-Express の電源管理を無効化すると問題が解決します。

原因 #2

頻繁に切断が発生し、Journal で以下のようなメッセージが表示される場合:

ieee80211 phy0: wlan0: No probe response from AP xx:xx:xx:xx:xx:xx after 500ms, disconnecting

ルーターの設定でチャンネルの帯域を 20MHz に変更してみてください。

原因 #3

ノートパソコン (例: Thinkpad X200 シリーズ) に rfkill のハードウェアスイッチが付いている場合、スイッチの経年劣化や設計不良により、スイッチ (またはメインボードへの接続) がゆるくなってしまっている可能性があります。結果として、スイッチに触れたり、ノートパソコンをちょっと動かすだけで、ハードウェアによる無線のブロックが発生して、インターネットから切断されているのかもしれません。このような問題に対するソフトウェアによる解決方法は存在しません。電気仕掛けのスイッチなら、BIOS にスイッチを無効化するオプションが存在することがあります。機械式のスイッチの場合 (ほとんどのスイッチはそうです)、スイッチを壊してしまうというのが解決法になります: メインボードや wifi カードとの接触点をハンダ付けする、スイッチを糊で固める、塞ぐ、またはスクリューナットを使ってスイッチを固く締める、取り除いてしまう。

原因 #4

頻繁に切断したり接続が成功しない他の原因として、ルーターが仕様に合わない挙動をする、ルーターの設定が誤っている、他の無線デバイスによる干渉、などが考えられます。

トラブルシューティングするには、まず認証なしでルーターに接続できないか試して下さい。

それで動作する場合、WPA/WPA2 を再度有効にして、ルーターの設定を変更してみてください。例えば:

  • ルーターが(クライアントで使っている)無線デバイスと比べて相当に旧式である場合、ルーターを別のワイヤレスモードに設定して動作するかテストする
  • mixed-mode 認証を無効化 (例: WPA2 と AES、またはルーターが古い場合 TKIP)
  • "auto" チャンネル以外の固定/自由チャンネルを使ってみる (隣家のルーターが古くて干渉している可能性があります)
  • WPS を無効化
  • ルータの 5Ghz チャネルから non-DFS (Dynamic Frequency Selection) チャネル に変更する。そのようなチャネルでは、近くの気象レーダとの干渉により接続が落ちたり、いきなり切り替わったりする場合があります。
  • クライアントに 5Ghz と 2.4Ghz のどちらが良いかを選ばせるのではなく 2.4Ghz のみに設定してみる。(後者はスループットが低いですが、遠距離からの接続でも安定した接続を得られます)
  • cfg80211.cfg80211_disable_40mhz_24ghz=1 を指定して 40Mhz 周波数帯を無効化 (スループットは悪くなりますが衝突は起きにくくなります)
  • ルーターにサービス品質に関する設定がある場合、設定が完全であることを確認 (例: Wi-Fi Multimedia (WMM) は任意の QoS フロー制御の一部です。問題のあるルーターファームウェアは設定が有効になっていない場合も有効であるかのように見せかけてくることがあります)

原因 #5

一部のワイヤレスアダプタ(例: Qualcomm Atheros AR9485)では、DMA エラーによりランダムな接続断が起こる可能性があります:

# journalctl -xb
ath: phy0: DMA failed to stop in 10 ms AR_CR=0x00000024 AR_DIAG_SW=0x02000020 DMADBG_7=0x0000a400
wlp1s0: authenticate with 56:e7:ee:7b:55:bc
wlp1s0: send auth to 56:e7:ee:7b:55:bc (try 1/3)
wlp1s0: send auth to 56:e7:ee:7b:55:bc (try 2/3)
wlp1s0: send auth to 56:e7:ee:7b:55:bc (try 3/3)
wlp1s0: authentication with 56:e7:ee:7b:55:bc timed out

可能な回避策は Intel IOMMU driver (DMA) を無効化することです。カーネルパラメータintel_iommu=off を追加してください[3]

ノート: Intel IOMMU ドライバは一部の高度な仮想マシン機能において必要です。(例: PCI パススルー)

原因 #6

ワイヤレス接続のための iwlwifiiwlmvm のあるデバイスを使用していて、Wi-Fi カードがバッテリー駆動時に消えたように見える場合、iwlmvm で省電力設定を変更することでこれを修正できます。

/etc/modprobe.d/iwlmvm.conf ファイルが存在しなければ作成し、以下の行を追加してください:

/etc/modprobe.d/iwlmvm.conf
options iwlmvm power_scheme=1

power_scheme の 1 という数値は iwlmvm が "常に有効" になります。利用可能なオプションは以下のとおりです:

説明
1 常に有効
2 バランス
3 低パワー

この修正法は [4] で発見されました。

原因 #7

デバイスが長時間使用されなかった場合(例: ファイルサーバ)、省電力機能により接続断が発生する場合があります。これにより、受信トラフィックがブロックされ、接続が妨げられます。"interface" の省電力機能を無効化してみてください:

# iw dev interface set power_save off

udev ルールを作成してこれを起動時に行うこともできます。電源管理#ネットワークインターフェイス を見てください。

原因 #8

メッシュネットワーク (WiFi6 など) に接続している時に接続が時々途切れ、以下のようなメッセージが出力される場合:

# journalctl -b
kernel: wlan0: disconnect from AP aa:bb:cc:dd:ee:ff for new auth to 11:22:33:44:55:66

ローミングの問題が発生しています。接続の方法と実際の問題に応じて、以下のことができます:

規制範囲が間違っているために Wi-Fi ネットワークが認識されない

コンピュータの Wi-Fi チャンネルがユーザーの居住国の規制範囲に一致していない場合、Wi-Fi ネットワークが認識されないことがあります。#規制範囲に従うを参照して設定を行ってください。

ドライバとファームウェアのトラブルシューティング

このセクションでは、一般的な方法とは異なる、特定のチップセットのカーネルモジュールとファームウェアをインストールする方法を説明します。

モジュールの動作についての一般的な情報はカーネルモジュールを見て下さい。

Ralink/Mediatek

rt2x00

Ralink のチップセット用の統合ドライバー (rt2500, rt61, rt73 などを置き換えます)。このドライバーは Linux カーネル 2.6.24 から含まれており、チップに合わせて適切なモジュールをロードするだけで問題なく使うことができます: rt2400pci, rt2500pci, rt2500usb, rt61pci, rt73usbrt2x00 モジュールもそれぞれ自動でロードします。

このモジュールでサポートされているデバイスの一覧はプロジェクトの ホームページ で見ることができます。

追加情報
  • カーネル 3.0 から、rt2x00 は次のドライバーを含んでいます: rt2800pci, rt2870usb
  • カーネル 3.0 から、staging ドライバー rt2860start2870sta は mainline ドライバー rt2800pcirt2800usb によって置き換えられました[5]
  • デバイスによっては iwpriv を使って様々なオプションを設定することができます。これらのオプションについては Ralink から入手できる source tarballs にまとめられています。

rt3090

rt3090 を使っているデバイスには rt2800pci ドライバを使うことができますが、うまく動作しないことがあります (例えば、時々 2Mb/s 以上の速度が出なくなります)。

rt3290

rt3290 チップセットはカーネルの rt2800pci モジュールによって認識されます。ただし、問題が起こることもあり、そのような場合はパッチがあてられた Ralink ドライバーに戻すと良いようです。

rt3573

2012年時点で新しいチップセットです。Ralink が提供している新しいプロプライエタリドライバが必要かもしれません。様々な製造会社がそれを使っています、Belkin N750 DB wireless 無線 USB アダプタのスレッドを見て下さい。

mt7612u

2014 年以降の新しい商号 Mediatek でリリースされている最新のチップセットです。AC1200 または AC1300 チップセットになります。サポートページで Linux 用のドライバーがメーカーから公開されています。カーネル 5.5 より、同梱されている mt76 ドライバによりサポートされているはずです。

DFS チャネルは現在 5 GHz AP モードではサポートされていません

mt7921

この MediaTek チップセットには高レイテンシの問題があります。唯一の解決策は ASPM を無効化することです:

/etc/modprobe.d/wifi.conf
options mt7921e disable_aspm=1

再起動するか、modprobe でモジュールを再読込すると、この設定ファイルの変更が適用されます:

# modprobe -r mt7921e && modprobe mt7921e

Realtek

Realtek のチップセットと仕様のリストは [6] で見られます。

rtl8192cu

このドライバーはカーネルに含まれていますが、多くのユーザーがネットワークのスキャンはできても接続ができないと報告しています。

問題が起こる場合は 8192cu-dkmsAUR パッケージで改善するかもしれません。

rtl8723ae/rtl8723be

メインラインの Linux カーネルには rtl8723aertl8723be モジュールが含まれています。

このカードの省電力機能についてエラーが発生することがあります。症状としては、ときどき上位のネットワークマネージャ (netctl, NetworkManager) で認識されなくなり切断されます。このエラーは dmesg -wjournalctl -f を実行して省電力機能や rtl8723ae/rtl8723be モジュールに関連するメッセージを探すことで確認できます。この問題を解決するには、fwlps=0 カーネルモジュールパラメータを使って、WiFi カードが自動的にスリープ状態にならないようにしてください。

信号が弱い場合、デバイスにアンテナがひとつしか接続されておらず自動モードが機能していない可能性があります。ant_sel=1ant_sel=2 カーネルオプションでアンテナを強制的に設定することができます [7]

rtl88xxau

Realtek の rtl8811au/rtl8812au/rtl8814au/rtl8821au チップセットは AC600 から AC1900 までの様々な USB アダプタ用に設計されています。いくつかのパッケージは様々なカーネルドライバを提供しており、これらは DKMS(dkms パッケージとインストールされているカーネルのヘッダファイル) を必要とします:

チップセット パッケージ ノート
rtl8811au, rtl8812au, rtl8821au rtl88xxau-aircrack-dkms-gitAUR 8811au, 8812au, 8821au チップセット用の Aircrack-ng カーネルモジュール。モニタモードとインジェクションモードサポート。
rtl8812au rtl8812au-dkms-gitAUR rtl8812au のみ用の公式の最新 Realtek ドライババージョン。
rtl8811au, rtl8821au rtl8821au-dkms-gitAUR rtl8821au 用のより新しいドライババージョン。
rtl8814au rtl8814au-dkms-gitAUR おそらく rtl8813au に対しても機能する。

rtl8811cu/rtl8821cu

rtl8821cu-dkms-gitAUR は Realtek 8811cu と 8821cu チップセット用のカーネルモジュールを提供します。

パッケージをインストールするには DKMS が必要です。適切なカーネルヘッダーをインストールしてください。

8821cu がロードされていてもワイヤレスインターフェイスが見つからない場合、おそらく rtw_RFE_type カーネルモジュールパラメータを手動で指定する必要があります[8][9]。例えば rtw_RFE_type=0x26 や他の値を試してみると、機能するかもしれません。

rtl8821ce

rtl8821ce-dkms-gitAUR は Realtek 8821ce チップセット用のカーネルモジュールを提供します。このチップセットは Asus X543UA に搭載されています。

パッケージをインストールするには DKMS が必要です。適切なカーネルヘッダーをインストールしてください。

ノート: Realtek により提供されているデフォルトの rtl8821ce モジュールが Linux カーネル ≥ 5.9 で壊れており、接続品質が悪くなると報告されています[10]。上記の AUR バージョンを優先して使用するべきです。GitHub での文章 を見てください。デフォルトのカーネルドライバ (rtw88_8821ce) が使用されているかどうかを確認するには lspci -k を使用してください。もし使用されているのであれば、ブラックリストにそれを追加し、システムを再起動してください。

rtl8822bu

rtl88x2bu-dkms-gitAUR は Realtek 8822bu チップセット用のカーネルモジュールを提供します。このチップセットは Edimax EW7822ULC USB3、Asus AC53 Nano USB 802.11ac、TP-Link Archer T3U アダプタに搭載されています。

パッケージをインストールするには DKMS が必要です。適切なカーネルヘッダーをインストールしてください。

rtl8xxxu

サードパーティ製のモジュールをコンパイルすることでメインラインカーネルの rtl8xxxu モジュールの問題を解決できる場合があります。ソースコードは GitHub リポジトリ に存在します。

一部のドライバーは AUR の rtl8723bu-dkms-gitAUR パッケージなどでインストールできます。

RTW88

RWT88 カーネルモジュールは公式にサポートされている Arch Linux カーネルの全てに含まれています。サポートされているデバイスの数は時間とともに増え、現在では、必要な設定とコンパイルを行えば、ほとんどの RTW88 チップデバイスをサポートしています。

Linux 6.10.3 の時点では、このドライバは次のデバイスをサポートしています: 882BE (おそらく)、8703B、8723CS、8723D、8723DE、8723DS、8723DU、8723X、8821C、8821CE、8821CS、8821CU、8822B、8822BE、8822BS、8822BU、8822C、8822CE、8822CS、8822CU.

サポートされているデバイスの最新のリストを入手するには、linuxconfigCONFIG_RTW88_ と検索するか、上流で wireless-next を確認してください。

wireless-regdom が設定されていることを確認してください。さもないと、WiFi デバイスはすべて見えますが、接続することができなくなってしまいます。Out of tree のドライバである rtl88x2bu-dkms-gitAUR は、そのような設定無しで接続できるので、このドライバから切り替える際は規制範囲を設定しておくことが重要です。

この症状は dmesg では以下のように見えます:

[ +13.369951] wlan0: send auth to *WiFi_AP_mac* (try 1/3)
[  +0.000685] wlan0: authenticated
[  +0.000449] wlan0: associate with *WiFi_AP_mac* (try 1/3)
[  +0.000866] wlan0: RX AssocResp from *router_mac* (capab=0x1011 status=0 aid=2)
[  +0.323058] wlan0: associated
[  +0.000046] wlan0: deauthenticating from *WiFi_AP_mac* by local choice (Reason: 3=DEAUTH_LEAVING)

また、iwd のログでは:

event: state, old: autoconnect_full, new: connecting
event: connect-timeout, reason: 0
event: connect-failed, status: 1

RTW89

RTW89 カーネルモジュールは、上流のカーネルにマージされており、新しい Realtek ワイヤレスチップセットのサポートを提供します。

このドライバは次をサポートします: 8852AE, 8851BE, 8852BE, 8852CE。

一部のコンピュータで接続が不安定になることがあります。特に最近の Lenovo と HP のモデルに多いようです。 次の設定を用いて ASPM 関係の機能を無効にしてみてください。

/etc/modprobe.d/70-rtw89.conf
options rtw89_pci disable_aspm_l1=y disable_aspm_l1ss

参考:

Atheros

Atheros チップセットのあるデバイス用に3つのモジュールがメンテナンスされています:

  • ath5kmadwifi ドライバーの後継ドライバーです。現在、チップセットによってはベターな選択肢ですが、全てのチップセットがサポートされているわけではありません(下を見て下さい)。
  • ath9k は、より新しい Atheros チップセット用に作られています。802.11n 対応のチップは全てサポートしています。
  • ath12k は、Qualcomm Wi-Fi 7 (IEEE 802.11be) デバイス用の Linux ドライバです。ath12k は mac80211 を使用します。

Atheros デバイス向けに他にも複数のドライバーが存在します。詳しくは Linux Wireless ドキュメントを見て下さい。

ath5k

外部の文献:

ウェブページのロードがランダムで極端に遅くなったり、デバイスが IP アドレスを取得できなくなったら、ath5k モジュールに nohwcrypt=1 オプションを付けてロードして暗号化をハードウェアからソフトウェアに切り替えてください。詳しくはカーネルモジュール#モジュールオプションを設定するを見て下さい。

ラップトップによっては無線 LED インディケータが赤と青に点滅する問題が発生することがあります。この問題を解決するには、以下を実行して下さい:

# echo none > /sys/class/leds/ath5k-phy0::tx/trigger
# echo none > /sys/class/leds/ath5k-phy0::rx/trigger

もしくは このバグレポート を見て下さい。

ath9k

参照:

Linux 3.15.1 現在、一部のユーザーが帯域幅が減少することを報告しています。ath9k モジュールに対して nohwcrypt=1 カーネルモジュールパラメータを設定することでこれを修正することができる場合があります。

ノート: lsmod コマンドを使って使用しているモジュールの名前を確認して必要に応じて ath9k を置き換えてください (例: ath9k_htc)。
省電力機能

Linux Wireless には AR9280 よりも新しい Atheros 製の ath9k シングルチップでは動的な省電力機能が有効になると書かれていますが、一部のデバイス (例: AR9285) では powertop を使って確認すると省電力機能が無効になっていることがわかります。そのような場合、手動で有効にしてください。

ただし一部のデバイス (例: AR9285) では省電力機能を有効にすると以下のようなエラーが発生します:

# iw dev wlan0 set power_save on
command failed: Operation not supported (-95)

解決策は、ath9k モジュールに対して ps_enable=1 カーネルモジュールパラメータを設定することです。

Intel

iwlegacy

iwlegacy は Intel の 3945, 4965 ワイヤレスチップのワイヤレスドライバーです。このファームウェアは linux-firmware パッケージに含まれています。

udev が自動でドライバーをロードするはずですが、ロードされないときは手動で iwl3945iwl4965 をロードしてください。詳しくはカーネルモジュール#ロードを見てください。

信号品質が極端に悪い場合やネットワークに接続できない場合、802.11n を無効化してみてください:

/etc/modprobe.d/iwl4965.conf
options iwl4965 11n_disable=1

iwlwifi

iwlwifi は 5100AGN, 5300AGN, 5350AGN などの Intel の最新のワイヤレスチップのワイヤレスドライバーです。full list of supported devices を見て下さい。

接続品質が悪いといった一般的なネットワーク接続の問題が起こる場合は、802.11n を無効にしてソフトウェア暗号を有効にしてみて下さい:

/etc/modprobe.d/iwlwifi.conf
options iwlwifi 11n_disable=1 swcrypto=1

アップリンクの速度が遅い問題が発生する場合は、無線アダプターの省電力モードを切ってみて下さい。

802.11ax (WiFi 6) アクセスポイントがあり、ビーコンの検出や不安定な接続に関する問題がある場合、Intel Article 54799 を見てみてください。

ノート: 11n_disable=0 を使うと 802.11ac も妨げられ、より遅いプロトコル(5Ghz 帯での 802.11a か 2.4Ghz 帯での 802.11b/g)での接続しかできなくなります。
Bluetooth の共存

Bluetooth ヘッドセットを接続できない場合やダウンロード速度があまり出ない場合、Bluetooth の共存を無効化してみてください:

/etc/modprobe.d/iwlwifi.conf
options iwlwifi bt_coex_active=0
ノート: カーネルバージョン 5.8 より、bt_coex_activesw_crypto モジュールオプションは、iwlmvm カーネルモジュールにより操作されるハードウェアに対しては無効化されています。iwldvm モジュールにより操作されるより古いハードウェアでは、上記のオプションはまだ有効です。
ファームウェアの問題

ドライバがスタックトレースとエラーを出力する問題があり、これによりスタッタリングが発生する可能性があります。

# dmesg
Microcode SW error detected.  Restarting 0x2000000.

または、単に雑多な問題が発生する場合もあります (例: 5GHz での接続の問題、ランダムな接続断、復帰時に接続なし)。

ファームウェアが問題の原因であることを確認するには、linux-firmware パッケージをダウングレードしてみてください。

確認が取れたら、バグのあるファームウェアファイルを移動して、古いバージョンが読み込まれるようにしてください (こうすることで、linux-firmware を最新の状態にできます。linux-firmware は Intel WiFi カード以外のファームウェアアップデートも提供するからです。):

# for i in {64..73} ; do mv /usr/lib/firmware/iwlwifi-ty-a0-gf-a0-$i.ucode.xz /usr/lib/firmware/iwlwifi-ty-a0-gf-a0-$i.ucode.xz.bak ; done

アップデートのたびにこの手順を繰り返さないようにするために、pacman.conf 内の NoExtract 配列でワイルドカードを使って、該当するファイルのインストールをブロックしてください。

Windows から起動するとアダプタが検出されない

Windows のセッション終了後に Wifi アダプタが検出されない場合、Windows の高速スタートアップ機能が原因であるかもしれません(この機能はデフォルトで有効になっています)。高速スタートアップを無効化してみてください。iwlwifi カーネルドライバ wiki にはこれのエントリがあります

LED の点滅を無効化する

ノート: iwlegacy ドライバと iwlwifi ドライバの両方で以下のオプションは機能します。

デフォルト設定ではモジュールの動作中 LED が点滅するようになっています。人によってはこれが鬱陶しく感じるかもしれません。Wi-Fi を使っている時に LED を固定するには、systemd-tmpfiles を使って下さい:

/etc/tmpfiles.d/phy0-led.conf
w /sys/class/leds/phy0-led/trigger - - - - phy0radio

変更を適用するには、systemd-tmpfiles --create phy0-led.conf を実行するか再起動してください。

LED のトリガの全ての設定値を見るには:

# cat /sys/class/leds/phy0-led/trigger
ヒント: /sys/class/leds/phy0-led がない場合、led_mode="1" モジュールオプションを使ってみて下さい。これは iwlwifiiwlegacy ドライバの両方で有効なはずです。

Broadcom

Broadcom ワイヤレスを見て下さい。

他のドライバー・デバイス

Tenda w322u

この Tenda カードは rt2870sta デバイスとして扱って下さい。#rt2x00 を参照。

orinoco

カーネルパッケージの一部となっているので、別個インストールする必要はありません。

いくつかの Orinoco チップセットは Hermes I/II です。orinoco_cs の代わりに wlags49_h1_cs を使うことで WPA サポートを得ることができます。このドライバーを使うには orinoco_csブラックリスト化して下さい。

prism54

このドライバー p54 はカーネルに含まれていますが、このサイト からあなたのカードに対応するファームウェアをダウンロードして /usr/lib/firmware ディレクトリにインストールする必要があります。

ノート: 古いドライバー prism54 が新しいドライバー (p54pcip54usb) と衝突することがあります。prism54ブラックリスト化して下さい。

zd1211rw

zd1211rw は ZyDAS ZD1211 802.11b/g USB WLAN チップセット用のドライバで、最近の Linux カーネルに含まれています。サポートされているドライバの一覧は [11] を見て下さい。zd1211-firmwareAUR パッケージとして提供されているファームウェアをインストールすることだけが必要です。

hostap_cs

Host AP は Intersil の Prism2/2.5/3 チップセットを使ったワイヤレス LAN カードの Linux ドライバです。ドライバは Linux カーネルに含まれています。

ノート: orinico_cs と問題を発生することがあるので、ブラックリスト化してください。

ndiswrapper

Ndiswrapper は Linux で Windows のドライバーを使うためのラッパースクリプトです。Windows のドライバーに含まれる *.inf.sys ファイルが必要です。

ノート: ドライバがあなたのアーキテクチャ (例: 32/64 ビット) に適合しているかも確認してください。
ヒント: *.exe ファイルからこれらのファイルを展開する必要がある場合は、cabextract を使って下さい。

ndiswrapper を設定するには以下の手順に従って下さい。

  1. ndiswrapper をインストールする。
  2. ドライバを /etc/ndiswrapper/ にインストールする:
    # ndiswrapper -i filename.inf
  3. ndiswrapper にインストールされたドライバをすべて一覧表示する:
    $ ndiswrapper -l
  4. ndiswrapper に設定ファイルを /etc/modprobe.d/ndiswrapper.conf に書き出させる:
    # ndiswrapper -m
    # depmod -a

ndiswrapper のインストールはほとんど終わりました。起動時にモジュールをロードできます。

ndiswrapper がロードされるかテストしてください:

# modprobe ndiswrapper

ワイヤレスインターフェイスが今存在しているかどうかをより詳しく調べるには ネットワーク設定#ネットワークインターフェイスを表示 を見てください。

問題が起こった場合は次のページを見て下さい:

ndiswrapper howtondiswrapper FAQ

参照

翻訳ステータス: このページは en:Network configuration/Wireless の翻訳バージョンです。最後の翻訳日は 2024-12-01 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。