Difference between revisions of "Wireless Setup (日本語)"

From ArchWiki
Jump to: navigation, search
m (Intel)
m (ドライバー・ファームウェアをインストールする)
Line 79: Line 79:
  
 
あなたのワイヤレスカードが上記のリストにあった場合、このページの [[#ドライバとファームウェアのトラブルシューティング]] サブセクションを見て下さい、特定のワイヤレスカードのドライバーやファームウェアのインストール情報が載っています。インストールした後、また[[#ドライバーの状態を確認する|ドライバーの状態を確認]]してください。
 
あなたのワイヤレスカードが上記のリストにあった場合、このページの [[#ドライバとファームウェアのトラブルシューティング]] サブセクションを見て下さい、特定のワイヤレスカードのドライバーやファームウェアのインストール情報が載っています。インストールした後、また[[#ドライバーの状態を確認する|ドライバーの状態を確認]]してください。
 
If your wireless card is not listed above, it is likely supported only under Windows (some Broadcom, 3com, etc). For these, you can try to use ''ndiswrapper''. See [[#ndiswrapper]] for details.
 
  
 
ワイヤレスハードウェアが上記のリストになかった場合、おそらくサポートしているのが Windows のみだと思われます (Broadcom, 3com, etc)。そういったカードについては、[http://ndiswrapper.sourceforge.net/wiki/index.php/List ndiswrapper] を使う必要があります。詳しくは [[#ndiswrapper]] を見て下さい。
 
ワイヤレスハードウェアが上記のリストになかった場合、おそらくサポートしているのが Windows のみだと思われます (Broadcom, 3com, etc)。そういったカードについては、[http://ndiswrapper.sourceforge.net/wiki/index.php/List ndiswrapper] を使う必要があります。詳しくは [[#ndiswrapper]] を見て下さい。

Revision as of 16:38, 3 September 2013

概括 help replacing me
ワイヤレス・ネットワークを有効化・設定するためのガイド。
概要
Template:Networking overview (日本語)
関連項目
Network Configuration (日本語)
Software Access Point
Ad-hoc networking
Internet Share

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

Contents

デバイスドライバ

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

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

Note:
  • Udev は完全ではありません。起動時に udev が正しいモジュールをロードしない場合、手動でモジュールをロードしてください。また、場合によっては udev が1つのデバイスに複数のドライバをロードし、それが衝突を生んで設定が完了できなくなることがあります。不要なモジュールをブラックリスト化するようにしてください。
  • インターフェースの名前はドライバやチップセットによって変わります。例: wlan0, eth1, ath0Network Configuration (日本語)#デバイス名 を参照してください。
Tip: 絶対に必要というわけではありませんが、最初に #手動セットアップ で説明されているユーザースペースツールをインストールすると良いでしょう (特に、なんらかの問題が発生する場合)。

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

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

$ 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: ラップトップ内蔵の Wi-Fi カードを使っている場合、実は USB デバイスだったりすることがあるので以下のコマンドも試して下さい:
  • lsusb -v
  • dmesg | grep usbcoreusbcore: 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

自動検知されたハードウェアのモジュールの名前が前に付いているのが dmesg の出力で関連する部分で、後で問題を確かめるのに役立ちます。

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

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

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

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

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

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

ワイヤレス管理

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

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

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

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

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 で操作します。さらに wireless_tools パッケージはワイヤレス接続を管理する基本的なツールのセットを提供しますが、これらのツールは 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 wlan0 set type ibss iwconfig wlan0 mode ad-hoc 動作モードを ad-hoc に設定。
iw wlan0 connect your_essid iwconfig wlan0 essid your_essid 接続してネットワークを開く。
iw wlan0 connect your_essid 2432 iwconfig wlan0 essid your_essid freq 2432M 接続して指定したチャンネルのネットワークを開く。
iw wlan0 connect your_essid key 0:your_key iwconfig wlan0 essid your_essid key your_key 十六進数のキーを使って WEP で暗号化されたネットワークに接続。
iw 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

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

(任意、または必須)

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

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

アクセスポイント検索

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

# iw dev wlan0 scan | less
Note: "Interface doesn't support scanning" と表示される場合、おそらくファームウェアのインストールを忘れています。場合によっては、iw が root 権限で実行されていない時にもこのメッセージが表示されます。

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

  • ESSID: そのアクセスポイントの"名前"。
  • Quality: 一般的に 40/70 以上が望ましい値です。
  • Encryption key: これが "on" の場合、見なくてはいけないのは以下の点です
    • WEP, WPA, RSN。RSN と WPA2 は同じプロトコルの別名です。
    • Group cipher: 値は TKIP, CCMP, その両方, もしくはその他。
    • Pairwise ciphers: 値は TKIP, CCMP その両方, もしくはその他。Group cipher と同じ値である必要はありません。
    • Authentication Suites: 値は PSK, 802.1x, もしくはその他。家庭用ルーターでは、一般的に PSK になるでしょう (つまりパスフレーズ)。大学などでは、ログインとパスワードが必要な 802.1x スイートになると思われます。利用するためにはどのキーマネージメント (例: EAP) とカプセル化 (例: PEAP) が使われているか知る必要があります。詳しくは Wikipedia:Authentication protocol と関連記事を見て下さい。

動作モード

(任意、または必須)

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

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

関連付け

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

  • 暗号化なし
# iw wlan0 connect your_essid
  • WEP

十六進数キーか ASCII キーを使う:

# iw wlan0 connect your_essid key 0:your_key

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

# iw 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+cwpa_supplicant を終了し上記のコマンドに -B スイッチを付けてバックグラウンドで実行してください)。WPA Supplicant にはより詳しい情報とトラブルシューティングが載っています。

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

# iw dev wlan0 link

IP アドレスを取得

Note: 詳しくは Network Configuration (日本語)#IP アドレスの設定 を見て下さい。この部分は全く同じです。

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

# dhcpcd wlan0

もしくは固定 IP アドレスの場合:

# ip addr add 192.168.0.2/24 dev wlan0
# ip route add default via 192.168.0.1
Note: waiting for carrier の問題でタイムアウトエラーになる場合、特定のデバイスのチャンネルモードを auto に設定する必要があるかもしれません:
# iwconfig wlan0 channel auto
チャンネルを auto に変える前に、あなたのワイヤレスインターフェース (この場合 'wlan0') が down になっていることを確認してください。変更が成功したら、インターフェースを立ち上げなおして次の手順に進んで下さい。

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

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

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

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

参照: Netctl (日本語)

Wicd

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

参照: Wicd

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

NetworkManager

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

GNOME ではなく Openboxxmonad などのウィンドウマネージャを使っている場合 WEP, WPA, WPA2 接続を管理するために polkit-gnome, gnome-keyring, libgnome-keyring, pyxdgインストールすることを忘れないで下さい。

参照: NetworkManager (日本語)

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

WiFi Radar

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

参照: Wifi Radar

トラブルシューティング

ログの取得

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

$ dmesg -w

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

# journalctl -f 

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

省電力機能

Power saving#Network interfaces を見て下さい。

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

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

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

# iwconfig wlan0 power off

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

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.

Lowering the rate

Try setting lower rate, for example 5.5M:

# iwconfig wlan0 rate 5.5M auto

Fixed option should ensure that the driver does not change the rate on its own, thus making the connection a bit more stable:

# iwconfig wlan0 rate 5.5M fixed

Lowering the txpower

You can try lowering the transmit power as well. This may save power as well:

# iwconfig wlan0 txpower 5

Valid settings are from 0 to 20, auto and off.

Setting rts and fragmentation thresholds

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.

The minimum value for fragmentation value is 256 and maximum is 2346. In many windows drivers the maximum is the default value:

# iwconfig wlan0 frag 2346

For rts minimum is 0, maximum is 2347. Once again windows drivers often use maximum as the default:

# iwconfig wlan0 rts 2347

ランダムに切断する

原因 #1

If dmesg says wlan0: deauthenticating from MAC by local choice (reason=3) and you lose your Wi-Fi connection, it is likely that you have a bit too aggressive power-saving on your Wi-Fi card[2]. Try disabling the wireless card's power-saving features:

# iwconfig wlan0 power off

See Power saving for tips on how to make it permanent (just specify off instead of on).

If your card does not support iwconfig wlan0 power off, check the BIOS for power management options. Disabling PCI-Express power management in the BIOS of a Lenovo W520 resolved this issue.

原因 #2

If you are experiencing frequent disconnections and dmesg shows messages such as

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

try changing the channel bandwidth to 20MHz through your router's settings page.

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

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

モジュールの動作についての一般的な情報は Kernel modules (日本語) を見て下さい。

Ralink

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 によって置き換えられました[3]
  • デバイスによっては iwpriv を使って様々なオプションを設定することができます。これらのオプションについては Ralink から入手できる source tarballs にまとめられています。

rt3090

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

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

Note: このドライバは rt3062 チップセットでも動作します。

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-8192cuAUR パッケージで改善するかもしれません。

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

Atheros

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

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

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

ath5k

参照:

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

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

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

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

ath9k

参照:

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

Intel

ipw2100 と ipw2200

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

Tip: 以下のモジュールオプションを使用できます:
  • rtap_iface=1 オプションを使うと radiotap インターフェイスが有効になります
  • led=1 オプションを使うと無線が接続・切断した時にフロントの LED が光るようになります

iwlegacy

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

udev が自動でドライバーをロードするはずですが、ロードしないときは手動で iwl3945iwl4965 をロードしてください。詳しくは Kernel modules (日本語)#ロード を見て下さい。

iwlwifi

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

LED の点滅を無効化する

Note: iwlegacyiwlwifi ドライバーで動作します。

デフォルト設定ではモジュールの動作中 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" モジュールオプションを使ってみて下さい。

ノート

  • By default, iwl3945 is configured to only work with networks on channels 1-11. Higher frequency bands are not allowed in some parts of the world (e.g. the US). In the EU however, channels 12 and 13 are used quite commonly (and Japan allows for channel 14). To make iwl3945 scan for all channels, add options cfg80211 ieee80211_regdom=EU to /etc/modprobe.d/modprobe.conf. With iwlist frequency you can check which channels are allowed.
  • If you want to enable more channels on Intel Wifi 5100 (and quite possible other cards too), you can do that with the crda package. After installing the package, edit /etc/conf.d/wireless-regdom and uncomment the line where your country code is found. When executing iwlist wlan0 channel, you should now have access to more channels (depending on your location).

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 が新しいドライバー (p54pcip54usb) と衝突することがあります。prism54ブラックリスト化して下さい。

ACX100/111

Warning: The drivers for these devices are broken and do not work with newer kernel versions.

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

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

zd1211rw

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

hostap_cs

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

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 のインストールはほぼ完了です; あとは Kernel modules (日本語)#ロード の指示に従って起動時に自動でモジュールをロードするようにしてください。

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

modprobe ndiswrapper
iwconfig

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

compat-drivers-patched

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

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

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

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 を読んで下さい。

参照