Wireless Setup (日本語) - ArchWiki

# Wireless Setup (日本語)

関連記事

- ネットワーク設定
- ソフトウェアアクセスポイント
- アドホックネットワーク
- インターネット共有

ワイヤレスネットワークの設定は２段階で行います; まずワイヤレスデバイスを使うために正しいドライバがインストールされているか確認し（インストールメディアにある場合はそれらをインストールします）、インターフェースを設定します。次に、ワイヤレス接続を管理する方法を選びます。この記事では両方をカバーしています。また、ワイヤレス管理ツールへの追加リンクもあります。

## デバイスドライバ

デフォルトの Arch Linux カーネルはモジュール式です、つまりマシンに必要なドライバの多くはハードドライブに置かれ、モジュールとして利用されます。起動時に、udev がハードウェアの棚卸を実施します。Udev はハードウェアに必要である適切なモジュール（ドライバ）をロードし、次に、ドライバをロードしてカーネルインターフェースを作成します。

ワイヤレスチップセットによっては、適切なドライバーに加えて、ファームウェアも必要になります。ほとんどのファームウェアイメージはデフォルトでインストールされる linux-firmware パッケージに含まれていますが、プロプライエタリなファームウェアイメージは含まれていないため別にインストールする必要があります。#ドライバー・ファームウェアのインストールで説明されています。

Note:

- Udev は完全ではありません。起動時に udev が正しいモジュールをロードしない場合、手動でモジュールをロードしてください。また、場合によっては udev が１つのデバイスに複数のドライバをロードし、それが衝突を生んで設定が完了できなくなることがあります。不要なモジュールをブラックリスト化するようにしてください。
- インターフェースの名前はドライバやチップセットによって変わります。例: wlan0, eth1, ath0。ネットワーク設定#デバイス名を参照してください。

Tip: 絶対に必要というわけではありませんが、最初に #手動セットアップ で説明されているユーザースペースツールをインストールすると良いでしょう (特に、なんらかの問題が発生する場合)。

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

あなたのカードに合ったドライバーがロードされているか確認するには、カードを PCI(e) を接続している場合は `lspci -k`、USB で接続している場合は `lsusb -v` コマンドの出力をチェックしてください。カーネルドライバーが使われているなら、例えば以下のように表示されるはずです:

    $ 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

Note: カードが USB デバイスの場合、`dmesg | grep usbcore` を実行すると `usbcore: registered new interface driver rtl8187` のように表示されるはずです。

また、`ip link` コマンドの出力をチェックして無線インターフェイス (例: `wlan0`, `wlp2s1`, `ath0`) が作成されているか確認してください。そして、`ip link set <interface> up` を実行してインターフェイスを立ち上げて下さい。例えば、インターフェイスが `wlan0` の場合:

    # ip link set wlan0 up

次のエラーメッセージが表示される場合: `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

カーネルモジュールが正しくロードされ、インターフェイスが立ち上がっている場合は、次のセクションを飛ばしてかまいません。

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

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

- Ubuntu Wiki にはワイヤレスカードの一覧と、Linux カーネル・ユーザースペースドライバによってサポートされているかの情報があります (ドライバ名含む)。
- Linux Wireless Support と Linux Questions の Hardware Compatibility List (HCL) にもカーネルで利用できるハードウェアのデータベースがあります。
- さらに kernel page にはサポートされているハードウェアの表が存在します。

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

ワイヤレスハードウェアが上記のリストになかった場合、おそらくサポートしているのが Windows のみだと思われます (Broadcom, 3com, etc)。そういったカードについては、ndiswrapper を使う必要があります。詳しくは #ndiswrapper を見て下さい。

## ワイヤレス管理

ドライバがインストールされ正しく動作しているとして、次にワイヤレス接続を管理するための方法を選ぶ必要があります。次のサブセクションが方法を決めるのに役立つでしょう。

複数の理由によって手順とツールが必要になるでしょう:

- 望む設定管理の種類; 完全に手動なコマンドラインによる設定方法から、グラフィカルフロントエンドによる自動設定まで。
- ワイヤレスネットワークを保護する暗号化方式。
- コンピュータが使うネットワークを頻繁に変える場合 (ラップトップなど)、ネットワークプロファイルの必要性。

マニュアル設定はあなたに多くの仕事を課しますが、設定のよりよいコントロールが得られます。 一般に、永続的な効果のないコマンドセットを入力する必要があるでしょう、つまり、再起動後に適用はされないでしょう。 起動毎にコマンドを入力するのがやっかいな場合は、コマンドをシェルスクリプトに入れて手順を自動化することができます。スクリプトは起動時に自動で実行されるでしょう。Arch ブートプロセスを見て下さい。

Tip:

- どの方法を選ぶにせよ、まずは手動で接続を試行するべきです。問題がおこったときに必要なことは何でどのようにデバッグすればいいかを知るのに役に立つでしょう。
- 可能であれば (例: あなたが Wi-Fi アクセスポイントを管理している場合)、暗号化なしで接続してみて、全てが動作するか確認してください。それから、WEP (設定がシンプルですが数秒でクラックできます)、WPA、WPA2 などの暗号化を使ってみてください。

以下の表はワイヤレスネットワーク接続を有効化・管理するために使われる方法を、暗号化と管理方式、必要になるツールによってまとめています。他の方法も存在しますが、よく使われるのはこの通りです:

管理方法 | インターフェイスの有効化 | ワイヤレス接続管理 (/=代替) | IP アドレスの取得 (/=代替)
--- | --- | --- | ---
手動管理, 暗号化なしか WEP | ip | iw / iwconfig | ip / dhcpcd / dhclient
手動管理, WPA か WPA2 PSK | ip | iw / iwconfig + wpa_supplicant | ip / dhcpcd / dhclient
自動管理, ネットワークプロファイルのサポート | netctl, Wicd, NetworkManager, etc. これらのツールは手動の方法にあるパッケージのリストから必要な依存パッケージを引き込みます。

### 手動セットアップ

他のネットワークインターフェイスと同じように、無線インターフェイスは iproute2 パッケージの ip で操作します。さらに iw パッケージはワイヤレス接続を管理する基本的なツールのセットを提供します。あなたのカードで iw が動かない場合は、昔の wireless_tools を使ってみて下さい。下の表は両方のツールのコマンドの簡単な比較です ([1] にもっと詳しい例があります)。 また、WPA/WPA2 暗号化を使うには、wpa_supplicant パッケージをインストールする必要があります。これらのパワフルなユーザースペースのツールはすこぶる良く動作し、ワイヤレス接続を完全に手動で操作できます。

Note:

- このセクションに出てくる例ではあなたのワイヤレスデバイスを wlan0、wifi のアクセスポイントを `your_essid` と仮定しています。それぞれ適切な文字列に置き換えて下さい。
- ほとんどのコマンドは root 権限で実行する必要があることに注意してください。通常ユーザーで実行すると、コマンドによっては (例: iwlist) エラーを出さずに終了して正しい出力をしないため、混乱をきたすおそれが有ります。

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 | 十六進数のキーを使って WEP で暗号化されたネットワークに接続。
iw dev wlan0 connect your_essid key 0:your_key | iwconfig wlan0 essid your_essid key s:your_key | ASCII 文字のキーを使って WEP で暗号化されたネットワークに接続。
iw dev wlan0 set power_save on | iwconfig wlan0 power on | 省電力機能を有効にする。

Note: ハードウェアや暗号化方式によっては、手順のいくつかは必要ありません。カードによってはアクセスポイントに関連付けをして IP アドレスを取得する前に、インターフェースの有効化やアクセスポイントのスキャニングが必要なことがあります。実験が必要かもしれません。例えば、WPA/WPA2 ユーザーは #関連付け の手順から直接ワイヤレスネットワークを有効化できます。

#### 情報を取得する

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

- まず無線インターフェイスの名前を調べる必要があります。次のコマンドを使って確認できます:

    $ 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

- リンクの状態を確認するには、次のコマンドを使って下さい。アクセスポイント (AP) に接続されていないと以下のように表示されます:

    $ iw dev wlan0 link

    Not connected.

AP に接続されている場合は、以下のように表示されるはずです:

    $ 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

    	bss flags:	short-preamble short-slot-time
    	dtim period:	1
    	beacon int:	100

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

    $ iw dev wlan0 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

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

(通常は不要)

カードによっては `iw` や `wireless_tools` を使う前にカーネルインターフェースを初期化する必要があります:

    # ip link set wlan0 up

Note: `RTNETLINK answers: Operation not possible due to RF-kill` のようなエラーが表示される場合、ハードウェアのスイッチがオンになっているか確認してください。また、あなたの無線ネットワークカードがソフトブロックされている可能性もあります。詳しくは #Rfkill によるブロック を見て下さい。

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

    # ip link show wlan0

    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 wlan0 scan | less

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

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

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

#### 動作モード

(任意、または必須)

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

    # iw dev wlan0 set type ibss

Note: カードによっては、動作モードを変更するためにワイヤレスインターフェースを down させておく必要があるかもしれません (`ip link set wlan0 down`)。

#### 関連付け

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

- 暗号化なし

    # iw dev wlan0 connect your_essid

- WEP

十六進数キーか ASCII キーを使う (WEP キーは長さが固定されているため、どちらの形式かは自動で識別されます):

    # iw dev wlan0 connect your_essid key 0:your_key

十六進数キーか ASCII キーを使う、3番目に設定したキーをデフォルトとして指定する (キーは0からカウントされます):

    # iw dev wlan0 connect your_essid key d:2:your_key

- WPA/WPA2

WPA_Supplicant で説明されているように #アクセスポイント検索 で得られた結果にあわせて `/etc/wpa_supplicant.conf` ファイルを編集する必要があります。それができたら、次のコマンドを実行してください:

    # wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf

ここではあなたのデバイスが `wext` ドライバを使うと仮定しています。これで動かない場合、オプションを修正しなくてはならないかもしれません。 接続に成功したなら、新しいターミナルで次に進んでください (もしくは `Ctrl+c` で `wpa_supplicant` を終了し上記のコマンドに `-B` スイッチを付けてバックグラウンドで実行してください)。WPA Supplicant にはより詳しい情報とトラブルシューティングが載っています。

使う方法によらず、関連付けが成功しているかどうかは次を実行することで確かめられます:

    # iw dev wlan0 link

#### IP アドレスを取得

Note: 詳しくは ネットワーク設定#IP アドレスの設定 を見て下さい。この部分は全く同じです。

最後に、ネットワークインターフェースに IP アドレスを与えます。例えば DHCP を使って:

    # dhcpcd wlan0

または

    # dhclient wlan0

固定 IP アドレスの場合:

    # ip addr add 192.168.0.2/24 dev wlan0
    # ip route add default via 192.168.0.1

Tip: dhcpcd には自動的に無線インターフェイスで WPA supplicant を起動するフックが含まれています (デフォルトで有効になっています)。設定ファイルが `/etc/wpa_supplicant.conf` に存在し wpa_supplicant プロセスがそのインターフェイスで立ち上がってない場合にのみ実行されます。ほとんどの場合、カスタムサービスを作成する必要はなく、`dhcpcd@interface` を有効にするだけで十分です。

#### カスタムスタートアップスクリプト・サービス

手動設定はワイヤレスに関する問題のトラブルシューティングに役立ちますが、再起動する毎にコマンドを再入力する必要があります。全体のプロセスを自動で行うシェルスクリプトを書けば、設定の全てのコントロールを維持しながらネットワーク管理をとても便利にすることができます。

##### systemd と dhcpcd を使って起動時に手動でワイヤレス接続

この例ではスタートアップに systemd を、接続に WPA supplicant を、IP アドレスの取得に dhcpcd を使っています。

Note: あらかじめ wpa_supplicant をインストールして `/etc/wpa_supplicant.conf` を作成してください。詳しくは WPA supplicant を見て下さい。

systemd のユニットを作成してください、例: `/etc/systemd/system/network-wireless@.service`:

    /etc/systemd/system/network-wireless@.service

    [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

    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

ユニットを有効にして起動してください (インターフェイスの名前を指定します):

    # systemctl enable network-wireless@wlan0.service
    # systemctl start network-wireless@wlan0.service

##### Systemd と wpa_supplicant と固定 IP

Note: あらかじめ wpa_supplicant をインストールして `/etc/wpa_supplicant.conf` を作成してください。詳しくは WPA supplicant を見て下さい。

まず systemd サービスの設定ファイルを作成してください (`<interface>` は適切なインターフェイス名に置き換えて下さい):

    /etc/conf.d/network-wireless@<interface>

    address=192.168.0.10
    netmask=24
    broadcast=192.168.0.255
    gateway=192.168.0.1

systemd のユニットファイルを作成してください:

    /etc/systemd/system/network-wireless@.service

    [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

    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}

    ExecStop=/usr/bin/ip addr flush dev %i
    ExecStop=/usr/bin/ip link set dev %i down

    [Install]
    WantedBy=multi-user.target

ユニットを有効にして起動してください (インターフェイスの名前を指定します):

    # systemctl enable network-wireless@wlan0.service
    # systemctl start network-wireless@wlan0.service

### 自動セットアップ

様々な方法を選ぶことができますが、相互に相容れないことを忘れないで下さい; 2つのデーモンを同時に実行してはいけません。下の表は接続マネージャを比較しています。それぞれの詳細は下のサブセクションにあります。

接続マネージャ | ネットワーク プロファイル サポート | ローミング (切断したり場所を変更した時の 自動接続) | PPP サポート (例: 3G モデム) | 公式 GUI | コンソールツール
--- | --- | --- | --- | --- | ---
Connman | Yes | Yes | Yes | No | `connmanctl`
netctl | Yes | Yes | Yes | No | `netctl`,`wifi-menu`
NetworkManager | Yes | Yes | Yes | Yes | `nmcli`
Wicd | Yes | Yes | No | Yes | `wicd-curses`

#### Netctl

netctl は netcfg の後継で systemd で動作するように設計されています。設定にプロファイルを使い、幅広いタイプのネットワークを検知・接続することができます。グラフィカルツールを使うのと難易度は大して変わりません。

参照: Netctl (日本語)

#### Wicd

Wicd は無線・有線両方の接続を管理することができるネットワークマネージャです。Python と Gtk で書かれており NetworkManager よりも依存ライブラリがすくなく、軽量なデスクトップを使うユーザーにとって理想的な選択肢になるかもしれません。

参照: Wicd

Note: ドライバーによっては NetworkManager で問題なく動くものが、wicd では何度も切断することがあります。

#### NetworkManager

NetworkManager は高度なネットワーク管理ツールであり、人気のある GNU/Linux ディストーションのほとんどでデフォルトで有効にされています。有線接続の管理に加えて、NetworkManager は、GUI プログラムで利用したいネットワークを選択する、使いやすくて、心配のないワイヤレスローミングを提供します。

参照: NetworkManager (日本語)

Note: 最初に (AUR にある) xfce4-xfapplet-plugin をインストールすれば、GNOME の network-manager-applet を Xfce でも動作させることができます。さらに、KDE で利用できるアップレットもあります。

#### WiFi Radar

WiFi Radar はワイヤレスプロファイルを管理する Python/PyGTK2 ユーティリティです（ワイヤレスだけをサポートしています）。利用できるネットワークのスキャンとネットワークのプロファイルの作成ができます。

参照: Wifi Radar

## トラブルシューティング

### Rfkill によるブロック

多くのノートパソコンには無線カードをオフにするための物理ボタン（スイッチ）が付いていますが、カーネルからカードをブロックすることも可能です。これは rfkill によって行うことができます。rfkill を使って現在の状態を表示してみてください:

    # rfkill list

    0: phy0: Wireless LAN
    	Soft blocked: yes
    	Hard blocked: yes

カードが hard-blocked になっている場合、物理ボタン（スイッチ）を使ってブロックを解除してください。カードが hard-blocked ではなく soft-blocked されている場合、次のコマンドを使ってください:

    # rfkill unblock wifi

Note: 物理ボタンを押すことでカードの状態を hard-blocked と soft-unblocked から hard-unblocked と soft-blocked に変えることができます (i.e. the soft-blocked bit is just switched no matter what)。これは `rfkill` カーネルモジュールのオプションを設定することで調整することが可能です。

詳細: http://askubuntu.com/questions/62166/siocsifflags-operation-not-possible-due-to-rf-kill

### 規制範囲

法的に許可されている無線周波数はデバイスが使われる地域によって異なるため、無線ドライバーに地域を設定する必要があります。これは規制範囲 (regulatory domain) と呼ばれます。

例えば、`iwl3945` ドライバーはデフォルトでチャネル 1-11 のネットワークだけで動作するように設定されています。世界の一部地域ではこれよりも高い周波数帯は許可されていません (例: アメリカ)。しかしながら EU では、チャネル 12 と 13 も広く一般的に使われています (そして日本ではチャネル 14 も許可されています)。規制範囲を例えばアメリカに設定した場合、高チャネルのネットワークはスキャンしても表示されません。同じように、規制範囲を正しく設定しないと、5 Mhz モードも制限を受けることがあります。

`options cfg80211 ieee80211_regdom=EU` などを `/etc/modprobe.d/modprobe.conf` に追加することで特定の規制範囲を使用して cfg80211 カーネルモジュールを設定することが可能です。設定方法の詳細はカーネルモジュールを見て下さい。

Tip: あなたのカードで使用できる周波数を確認するには `iw list` コマンドで出力された `Frequencies:` ブロックを見て下さい。

他にも crda パッケージをインストールして `/etc/conf.d/wireless-regdom` を編集するという設定方法もあります (このファイルは実際は crda の依存パッケージである wireless-regdb に含まれています)。

### ログの取得

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

    $ dmesg -w

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

    # journalctl -f

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

### 省電力機能

省電力設定#ネットワークインターフェイスを見て下さい。

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

- デフォルトの dhcpcd クライアントでは IP アドレスの取得に何度も失敗する場合、代わりに dhclient をインストールして使用してみて下さい。あなたの使っている接続マネージャで DHCP クライアントとして dhclient を忘れずに選択してください。

- 有線インターフェイスでは IP アドレスを取得できるのに、無線インターフェイスでは出来ない場合、ワイヤレスカードの省電力機能を無効にしてみてください:

    # iwconfig wlan0 power off

- waiting for carrier の問題でタイムアウトエラーになる場合、特定のデバイスのチャンネルモードを `auto` に設定する必要があるかもしれません:

    # iwconfig wlan0 channel auto

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

### 接続がいつもタイムアウトになる

The driver may suffer from a lot of tx excessive retries and invalid misc errors for some unknown reason, resulting in a lot of packet loss and keep disconnecting, sometimes instantly. Following tips might be helpful.

#### レートを下げる

低いレートに設定してみてください (例: 5.5M):

    # iwconfig wlan0 rate 5.5M auto

fixed オプションを使うことでドライバーによってレートが変わらないようにすることができ、接続が少しだけ安定します:

    # iwconfig wlan0 rate 5.5M fixed

#### txpower を下げる

出力も同じように下げることができます。出力を下げると電力も節約できます:

    # iwconfig wlan0 txpower 5

利用できる設定は `0` から `20` までと `auto` または `off` です。

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

Default iwconfig options have rts and fragmentation thresholds off. These options are particularly useful when there are many adjacent APs or in a noisy environment.

fragmentation の値の最小値は 256 で最大値は 2346 です。大抵の Windows のドライバーでは最大値がデフォルト値になっています:

    # iwconfig wlan0 frag 2346

rts の場合、最小値は 0 で、最大値は 2347 です。こちらも windows のドライバーは基本的に最大値をデフォルトとしています:

    # iwconfig wlan0 rts 2347

### ランダムに切断する

#### 原因 #1

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

    # iwconfig wlan0 power off

この設定を永続化する方法は省電力設定を見て下さい (`on` の代わりに `off` を指定)。

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

#### 原因 #2

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

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

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

#### 原因 #3

On some laptop models with hardware rfkill switches (e.g., Thinkpad X200 series), due to wear or bad design, the switch (or its connection to the mainboard) might become loose over time resulting in seemingly random hardblocks/disconnects when you accidentally touch the switch or move the laptop. There is no software solution to this, unless your switch is electrical and the BIOS offers the option to disable the switch. If your switch is mechanical (most are), there are lots of possible solutions, most of which aim to disable the switch: Soldering the contact point on the mainboard/wifi-card, glueing or blocking the switch, using a screw nut to tighten the switch or removing it altogether.

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

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

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

### Ralink

#### rt2x00

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

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

追加情報

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

#### rt3090

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

AUR から rt3090-dkms ドライバを使うのが最適です。`rt2800pci` モジュールをブラックリスト化して、起動時に `rt3090sta` モジュールをロードするように設定します。

Note: このドライバは rt3062 チップセットでも動作します。また、rt3090 パッケージは最新のカーネルではサポートされなくなったので代わりに rt3090-dkms を使って下さい。

#### rt3290

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

#### rt3573

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

#### rt5572

5 Ghz 帯をサポートした2012年時点で新しいチップセットです。Ralink が提供している新しいプロプライエタリドライバをコンパイルする必要があるかもしれません。DLINK DWA-160 rev のためのコンパイル方法が書かれています。B2 here。

### Realtek

#### rtl8192cu

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

AUR にある dkms-8192cu[broken link: package not found] パッケージで改善するかもしれません。

#### rtl8192e

このドライバはカーネルパッケージの一部になっています。以下のエラーメッセージを表示してモジュールの初期化が失敗する場合があるかもしれません:

    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

回避方法は単純にモジュールをアンロードするだけです:

    # modprobe -r r8192e_pci

そして (一定時間後) モジュールをリロードします:

    # modprobe r8192e_pci

#### rtl8188eu

TP-Link TL-WN725N v2 (rtl8179 チップセットを使用) などのドングルには、このドライバーと互換性のあるチップセットを使っているものがあります。ドングルを使うには AUR の dkms-8188eu パッケージをインストールしてください。

### Atheros

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

- `madwifi` は古い、旧式のドライバーです。2.6.39.1 から Arch のカーネルには含まれていません[4]。
- `ath5k` は新しいドライバーで `madwifi` ドライバーを置き換えます。現在、チップセットによってはベターな選択肢ですが、全てのチップセットがサポートされているわけではありません（下を見て下さい）。
- `ath9k` は3つのドライバーの中で最新のドライバーで、新しい Atheros チップセットに対応しています。802.11n 対応のチップは全てサポートしています。

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

#### ath5k

参照:

- http://wireless.kernel.org/en/users/Drivers/ath5k
- http://wiki.debian.org/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

参照:

- http://wireless.kernel.org/en/users/Drivers/ath9k
- http://wiki.debian.org/ath9k

不安定になる場合、compat-wireless パッケージを使ってみることができます。 サポートや開発などの議論をする ath9k メーリングリストが存在します。

##### ASUS

ASUS のノートパソコンでは (ASUS U32U シリーズでテスト)、`/etc/modprobe.d/asus_nb_wmi.conf` に `options asus_nb_wmi wapf=1` を追加すると rfkill に関連する問題が解決するかもしれません。

### Intel

#### ipw2100 と ipw2200

モジュールはカーネルによって完全にサポートされていますが、追加のファームウェアが必要になります。使うチップセットによって、ipw2100-fw か ipw2200-fw をインストールしてください。そして適切なモジュールを再ロードしてください。

Tip: 以下のモジュールオプションを使用できます:

- `rtap_iface=1` オプションを使うと radiotap インターフェイスが有効になります
- `led=1` オプションを使うと無線が接続・切断した時にフロントの LED が光るようになります

#### iwlegacy

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

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

#### iwlwifi

iwlwifi は 5100AGN, 5300AGN, 5350AGN などの Intel の最新のワイヤレスチップのワイヤレスドライバーです。full list of supported devices を見て下さい。このファームウェアは linux-firmware パッケージに含まれています。

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

    /etc/modprobe.d/iwlwifi.conf

    options iwlwifi 11n_disable=1
    options iwlwifi swcrypto=1

802.11n モードでアップリンクの速度が遅い (例: 20Mbps) 場合は、アンテナのアグリゲーションを有効化してみてください:

    /etc/modprobe.d/iwlwifi.conf

    options iwlwifi 11n_disable=8

オプションの名前に惑わされてはいけません。値が `8` に設定されている場合、無効化ではなくアンテナのアグリゲーションが再有効化されます [5] [6]。

これで上手くいかない場合、無線アダプターの省電力モードを切ってみて下さい。永続的に設定するには、新しい udev ルールを追加します:

    /etc/udev/rules.d/80-iwlwifi.rules

    ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="your_mac_address", RUN+="/usr/bin/iw dev %k set power_save off"

#### LED の点滅を無効化する

Note: `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

Tip: `/sys/class/leds/phy0-led` がない場合、`led_mode="1"` モジュールオプションを使ってみて下さい。

### Broadcom

Broadcom wireless を見て下さい。

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

#### Tenda w322u

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

#### orinoco

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

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

#### prism54

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

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

#### ACX100/111

Warning: これらのデバイスのドライバーは壊れており新しいバージョンのカーネルでは動作しません。

パッケージ: `tiacx` `tiacx-firmware` (公式リポジトリや AUR からは削除されました)

詳しくは 公式 wiki を見て下さい。

#### zd1211rw

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

#### hostap_cs

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

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

### ndiswrapper

Ndiswrapper は Linux で Windows のドライバーを使うためのラッパースクリプトです。互換リストは ここ を見て下さい。Windows のドライバーに含まれる `*.inf` と `.sys` ファイルが必要です。ドライバがあなたのアーキテクチャ (例: 32/64 ビット) に適合しているかも確認してください。

Tip: `*.exe` ファイルからこれらのファイルを展開する必要がある場合は、cabextract を使って下さい。

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

1. ドライバを `/etc/ndiswrapper/*` にインストールします

    # ndiswrapper -i ファイル名.inf

2. ndiswrapper にインストールされたドライバを全て一覧します

    $ ndiswrapper -l

3. 以下の設定ファイルを書き出します

    /etc/modprobe.d/ndiswrapper.conf

    ndiswrapper -m
    depmod -a

これで ndiswrapper のインストールはほぼ完了です; あとはカーネルモジュール#ロードの指示に従って起動時に自動でモジュールをロードするようにしてください。

重要なことは ndiswrapper が他のモジュールと一緒にロードされることです。ndiswrapper がロードされているかテストするには、次を実行してください:

    # modprobe ndiswrapper
    # iwconfig

wlan0 が表示されるはずです。問題が起こった場合は次のページを見て下さい: Ndiswrapper installation wiki。

### compat-drivers-patched

Patched compat wireless ドライバは "fixed-channel -1" 問題を修正し、より良いインジェクションを提供します。AUR から compat-drivers-patched パッケージをインストールしてください。

compat-drivers-patched は他のパッケージや `/usr/lib/modules/your_kernel_version/updates` に作られるモジュールと衝突しません。

Linux Wireless プロジェクト ではパッチ済みのドライバを提供しており多くのチップがサポートされています:

    ath5k ath9k_htc carl9170 b43 zd1211rw rt2x00 wl1251 wl12xx ath6kl brcm80211

サポートされているグループ:

    atheros ath iwlagn rtl818x rtlwifi wl12xx atlxx bt

PKGBUILD を編集することで特定のモジュール・ドライバやドライバグループをビルドすることも可能です。以下は atheros グループのビルドの例:

    scripts/driver-select atheros

コンパイルやインストールの前に可能な他の修正についてはパッケージの PKGBUILD を読んで下さい。

## 参照

- Linux Wireless プロジェクト
- Aircrack-ng guide on installing drivers

Category:

- Wireless Networking (日本語)