ネットワーク設定/ワイヤレス
ワイヤレスネットワークの設定は2段階で行います; まずワイヤレスデバイスを使うために正しいドライバがインストールされているか確認し(インストールメディア上では利用できても、明示的にインストールする必要があります)、インターフェースを設定します。次に、ワイヤレス接続を管理する方法を選びます。この記事では両方をカバーしています。また、ワイヤレス管理ツールへの追加リンクもあります。
目次
デバイスドライバ
デフォルトの Arch Linux カーネルはモジュール式です、つまりマシンに必要なドライバの多くはハードドライブに置かれ、モジュールとして利用されます。起動時に、udev がハードウェアの棚卸を実施します。Udev はハードウェアに必要である適切なモジュール(ドライバ)をロードし、次に、ドライバをロードしてカーネルインターフェースを作成します。
ワイヤレスチップセットによっては、適切なドライバーに加えて、ファームウェアも必要になります。ほとんどのファームウェアイメージはデフォルトでインストールされる linux-firmware パッケージに含まれていますが、プロプライエタリなファームウェアイメージは含まれていないため別にインストールする必要があります。#ドライバー・ファームウェアのインストールで説明されています。
ドライバーの状態を確認する
あなたのカードに合ったドライバーがロードされているか確認するには、カードを 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
また、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 ブートプロセスを見て下さい。
以下の表はワイヤレスネットワーク接続を有効化・管理するために使われる方法を、暗号化と管理方式、必要になるツールによってまとめています。他の方法も存在しますが、よく使われるのはこの通りです:
管理方法 | インターフェイスの有効化 | ワイヤレス接続管理 (/=代替) |
IP アドレスの取得 (/=代替) |
---|---|---|---|
手動管理, 暗号化なしか WEP |
ip | iw / iwconfig | ip / dhcpcd / dhclient |
手動管理, WPA か WPA2 PSK |
ip | iw / iwconfig + wpa_supplicant | ip / dhcpcd / dhclient |
自動管理, ネットワークプロファイルのサポート |
netctl, Wicd, NetworkManager など。 これらのツールは手動の方法にあるパッケージのリストから必要な依存パッケージを引き込みます。 |
手動セットアップ
他のネットワークインターフェイスと同じように、無線インターフェイスは iproute2 パッケージの ip で操作します。さらに iw パッケージはワイヤレス接続を管理する基本的なツールのセットを提供します。あなたのカードで iw が動かない場合は、昔の wireless_tools を使ってみて下さい。下の表は両方のツールのコマンドの簡単な比較です ([1] にもっと詳しい例があります)。 また、WPA/WPA2 暗号化を使うには、wpa_supplicant パッケージをインストールする必要があります。これらのパワフルなユーザースペースのツールはすこぶる良く動作し、ワイヤレス接続を完全に手動で操作できます。
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 | 省電力機能を有効にする。 |
情報を取得する
- まず無線インターフェイスの名前を調べる必要があります。次のコマンドを使って確認できます:
$ 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
インターフェイスが立ち上がっているか確認するには、次のコマンドの出力を見て下さい:
# 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
チェックするべきポイント:
- 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 が使われています。
動作モード
(任意、または必須)
ワイヤレスカードの正しい動作モードを設定する必要があるかもしれません。具体的に言うと、アドホックネットワークに接続したい場合、動作モードを ibss
に設定する必要があります:
# iw dev wlan0 set type ibss
関連付け
暗号化方式によって、利用するアクセスポイントと暗号化キーをワイヤレスデバイスに関連付ける必要があります。
- 暗号化なし
# 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 -D nl80211,wext -i wlan0 -c /etc/wpa_supplicant.conf
ここではあなたのデバイスが wext
ドライバを使うと仮定しています。これで動かない場合、オプションを修正しなくてはならないかもしれません。
接続に成功したなら、新しいターミナルで次に進んでください (もしくは Ctrl+c
で wpa_supplicant
を終了し上記のコマンドに -B
スイッチを付けてバックグラウンドで実行してください)。WPA supplicant にはより詳しい情報とトラブルシューティングが載っています。
使う方法によらず、関連付けが成功しているかどうかは次を実行することで確かめられます:
# iw dev wlan0 link
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
カスタムスタートアップスクリプト・サービス
手動設定はワイヤレスに関する問題のトラブルシューティングに役立ちますが、再起動する毎にコマンドを再入力する必要があります。全体のプロセスを自動で行うシェルスクリプトを書けば、設定の全てのコントロールを維持しながらネットワーク管理をとても便利にすることができます。
systemd と dhcpcd を使って起動時に手動でワイヤレス接続
この例ではスタートアップに systemd を、接続に WPA supplicant を、IP アドレスの取得に dhcpcd を使っています。
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
まず 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
NetworkManager
NetworkManager は高度なネットワーク管理ツールであり、人気のある GNU/Linux ディストーションのほとんどでデフォルトで有効にされています。有線接続の管理に加えて、NetworkManager は、GUI プログラムで利用したいネットワークを選択する、使いやすくて、心配のないワイヤレスローミングを提供します。
参照: NetworkManager
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
詳細: 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 カーネルモジュールを設定することが可能です。設定方法の詳細はカーネルモジュールを見て下さい。
他にも 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 に変える前に、あなたのワイヤレスインターフェースが止まっていることを確認してください。変更が成功したら、インターフェースを立ち上げなおして次の手順に進んで下さい。
IP アドレスは取得できるのにホスト解決ができない
If you are on a public wireless network that may have a captive portal, it may be necessary to remove any custom DNS servers from resolv.conf.
接続がいつもタイムアウトになる
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.
原因 #4
Another cause for frequent disconnects or a complete failure to connect may also be a sub-standard router, incomplete settings of the router, or interference by other wireless devices.
To troubleshoot, first best try to connect to the router with no authentication.
If that works, enable WPA/WPA2 again but choose fixed and/or limited router settings. For example:
- If the router is considerably older than the wireless device you use for the client, test if it works with setting the router to one wireless mode
- Disable mixed-mode authentication (e.g. only WPA2 with AES, or TKIP if the router is old)
- Try a fixed/free channel rather than "auto" channel (maybe the router next door is old and interfering)
- Disable
40Mhz
channel bandwidth (lower throughput but less likely collisions) - If the router has quality of service settings, check completeness of settings (e.g. Wi-Fi Multimedia (WMM) is part of optional QoS flow control. An erroneous router firmware may advertise its existence although the setting is not enabled)
ドライバとファームウェアのトラブルシューティング
このセクションでは、一般的な方法とは異なる、特定のチップセットのカーネルモジュールとファームウェアをインストールする方法を説明します。
モジュールの動作についての一般的な情報はカーネルモジュールを見て下さい。
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-dkmsAUR ドライバを使うのが最適です。rt2800pci
モジュールをブラックリスト化して、起動時に rt3090sta
モジュールをロードするように設定します。
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
rtl8188eu
TP-Link TL-WN725N v2 (rtl8179 チップセットを使用) などのドングルには、このドライバーと互換性のあるチップセットを使っているものがあります。ドングルを使うには AUR の dkms-8188euAUR パッケージをインストールしてください。
rtl8723ae/rtl8723be
The new rtl8723ae
module is included in the mainline Linux kernel since version 3.6, the rtl8723be
module since 3.15.
Some users may encounter errors with powersave on this card. This is shown with occasional disconnects that are not recognized by high level network managers (netctl, NetworkManager). This error can be confirmed by running dmesg -w
or journalctl -f
and looking for output related to powersave and the rtl8723ae
/rtl8723be
module. If you are having this issue, use the fwlps=0
kernel option, which should prevent the WiFi card from automatically sleeping and halting connection.
/etc/modprobe.d/rtl8723ae.conf
options rtl8723ae fwlps=0
or
/etc/modprobe.d/rtl8723be.conf
options rtl8723be fwlps=0
Atheros
MadWifi チーム によって、Atheros チップセットを使っているデバイス用に3つのモジュールがメンテナンスされています:
madwifi
は古い、旧式のドライバーです。2.6.39.1 から Arch のカーネルには含まれていません[4]。ath5k
は新しいドライバーでmadwifi
ドライバーを置き換えます。現在、チップセットによってはベターな選択肢ですが、全てのチップセットがサポートされているわけではありません(下を見て下さい)。ath9k
は3つのドライバーの中で最新のドライバーで、新しい Atheros チップセットに対応しています。802.11n 対応のチップは全てサポートしています。
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
参照:
不安定になる場合、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 をインストールしてください。そして適切なモジュールを再ロードしてください。
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 の点滅を無効化する
デフォルト設定ではモジュールの動作中 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
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
ディレクトリにインストールする必要があります。
ACX100/111
パッケージ: tiacx
tiacx-firmware
(公式リポジトリや AUR からは削除されました)
詳しくは 公式 wiki を見て下さい。
zd1211rw
zd1211rw
は ZyDAS ZD1211 802.11b/g USB WLAN チップセット用のドライバで、最近の Linux カーネルに含まれています。サポートされているドライバの一覧は [8] を見て下さい。zd1211-firmware パッケージとして提供されているファームウェアをインストールすることだけが必要です。
hostap_cs
Host AP は Intersil の Prism2/2.5/3 チップセットを使ったワイヤレス LAN カードの Linux ドライバです。hostap_cs
は linux
パッケージに含まれています。
ndiswrapper
Ndiswrapper は Linux で Windows のドライバーを使うためのラッパースクリプトです。互換リストは ここ を見て下さい。Windows のドライバーに含まれる *.inf
と .sys
ファイルが必要です。ドライバがあなたのアーキテクチャ (例: 32/64 ビット) に適合しているかも確認してください。
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-patchedAUR パッケージをインストールしてください。
compat-drivers-patchedAUR は他のパッケージや /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 を読んで下さい。