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

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎省電力: 翻訳)
369行目: 369行目:
 
See also [https://askubuntu.com/questions/62166/siocsifflags-operation-not-possible-due-to-rf-kill].
 
See also [https://askubuntu.com/questions/62166/siocsifflags-operation-not-possible-due-to-rf-kill].
   
=== Power saving ===
+
=== 省電力 ===
   
See [[電源管理#ネットワークインターフェイス]].
+
[[電源管理#ネットワークインターフェイス]] を見てください。
   
 
==トラブルシューティング==
 
==トラブルシューティング==

2022年6月6日 (月) 12:50時点における版

この記事あるいはセクションは翻訳の途中です。
ノート: 翻訳が古くなっています (議論: トーク:ネットワーク設定/ワイヤレス#)

関連記事

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

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

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

目次

デバイスドライバ

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

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

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

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

あなたのカードに合ったドライバーがロードされているか確認するには、カードを 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
ノート: カードが 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

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

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

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

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

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

ユーティリティ

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

ワイヤレス接続の管理には基本的なツール一式が必要です。ネットワークマネージャ を使うか、以下のうち1つを直接使ってください:

ソフトウェア パッケージ WEXT nl80211 WEP WPA/WPA2 Archiso [1]
wireless_tools1 wireless_tools Yes No Yes No Yes
iw iw No Yes Yes No Yes
wpa_supplicant wpa_supplicant Yes Yes No Yes Yes
iwd iwd No Yes No Yes Yes
  1. 非推奨

一部のカードは WEXT のみをサポートすることに注意してください。

iw と wireless_tools の比較

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

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)。

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

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

  • 暗号化なし
    # 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

認証

この記事またはセクションは加筆を必要としています。

WPA2 Personal

WPA2 Personal, a.k.a. WPA2-PSK, is a mode of Wi-Fi Protected Access.

You can authenticate to WPA2 Personal networks using wpa_supplicant or iwd, or connect using a network manager. If you only authenticated to the network, then to have a fully functional connection you will still need to assign the IP address(es) and routes either manually or using a DHCP client.

WPA2 Enterprise

WPA2 Enterprise is a mode of Wi-Fi Protected Access. It provides better security and key management than WPA2 Personal, and supports other enterprise-type functionality, such as VLANs and NAP. However, it requires an external authentication server, called RADIUS server to handle the authentication of users. This is in contrast to Personal mode which does not require anything beyond the wireless router or access points (APs), and uses a single passphrase or password for all users.

The Enterprise mode enables users to log onto the Wi-Fi network with a username and password and/or a digital certificate. Since each user has a dynamic and unique encryption key, it also helps to prevent user-to-user snooping on the wireless network, and improves encryption strength.

This section describes the configuration of network clients to connect to a wireless access point with WPA2 Enterprise mode. See Software access point#RADIUS for information on setting up an access point itself.

ノート: Enterprise mode requires a more complex client configuration, whereas Personal mode only requires entering a passphrase when prompted. Clients likely need to install the server’s CA certificate (plus per-user certificates if using EAP-TLS), and then manually configure the wireless security and 802.1X authentication settings.

For a comparison of protocols see the following table.

警告: It is possible to use WPA2 Enterprise without the client checking the server CA certificate. However, you should always seek to do so, because without authenticating the access point the connection can be subject to a man-in-the-middle attack. This may happen because while the connection handshake itself may be encrypted, the most widely used setups transmit the password itself either in plain text or the easily breakable #MS-CHAPv2. Hence, the client might send the password to a malicious access point which then proxies the connection.

MS-CHAPv2

WPA2-Enterprise wireless networks demanding MSCHAPv2 type-2 authentication with PEAP sometimes require pptpclient in addition to the stock ppp package. netctl seems to work out of the box without ppp-mppe, however. In either case, usage of MSCHAPv2 is discouraged as it is highly vulnerable, although using another method is usually not an option.

eduroam

eduroam is an international roaming service for users in research, higher education and further education, based on WPA2 Enterprise.

ノート:
  • Check connection details first with your institution before applying any profiles listed in this section. Example profiles are not guaranteed to work or match any security requirements.
  • When storing connection profiles unencrypted, it is recommended restrict read access to the root account by specifying chmod 600 profile as root.
ヒント: Configuration for NetworkManager can be generated with the eduroam Configuration Assistant Tool.

Manual/automatic setup

ノート: Special quoting rules apply: see netctl.profile(5) § SPECIAL QUOTING RULES.
ヒント: Custom certificates can be specified by adding the line 'ca_cert="/path/to/special/certificate.cer"' in WPAConfigSection.

WPA3 Personal

WPA3 Personal, a.k.a. WPA3-SAE, is a mode of Wi-Fi Protected Access.

wpa_supplicant supports WPA3 Personal (CONFIG_SAE is enabled in wpa_supplicant since version 2:2.9-4).

iwd supports WPA3 since version 0.7.

ヒントとテクニック

規制範囲

The regulatory domain, or "regdomain", is used to reconfigure wireless drivers to make sure that wireless hardware usage complies with local laws set by the FCC, ETSI and other organizations. Regdomains use ISO 3166-1 alpha-2 country codes. For example, the regdomain of the United States would be "US", China would be "CN", etc.

Regdomains affect the availability of wireless channels. In the 2.4GHz band, the allowed channels are 1-11 for the US, 1-14 for Japan, and 1-13 for most of the rest of the world. In the 5GHz band, the rules for allowed channels are much more complex. In either case, consult this list of WLAN channels for more detailed information.

Regdomains also affect the limit on the effective isotropic radiated power (EIRP) from wireless devices. This is derived from transmit power/"tx power", and is measured in dBm/mBm (1dBm=100mBm) or mW (log scale). In the 2.4GHz band, the maximum is 30dBm in the US and Canada, 20dBm in most of Europe, and 20dBm-30dBm for the rest of the world. In the 5GHz band, maximums are usually lower. Consult the wireless-regdb for more detailed information (EIRP dBm values are in the second set of brackets for each line).

Misconfiguring the regdomain can be useful - for example, by allowing use of an unused channel when other channels are crowded, or by allowing an increase in tx power to widen transmitter range. However, this is not recommended as it could break local laws and cause interference with other radio devices.

The kernel loads the database directly when wireless-regdb is installed. For direct loading the kernel should, for security's sake, be configured with CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS set to yes to allow for cryptographic verification of the database. This is true of the stock Arch kernel, but if you are using an alternate kernel, or compiling your own, you should verify this. More information is available at this guide.

To configure the regdomain, install wireless-regdb and reboot (to reload the cfg80211 module and all related drivers). Check the boot log to make sure that the database is loaded and key verified by cfg80211:

# dmesg | grep cfg80211

The current regdomain can be set to the United States with:

# iw reg set US

And queried with:

$ iw reg get
ノート: Your device may be set to country "00", which is the "world regulatory domain" and contains generic settings. If this cannot be unset, check your configuration as detailed bellow.

However, setting the regdomain may not alter your settings. Some devices have a regdomain set in firmware/EEPROM, which dictates the limits of the device, meaning that setting regdomain in software can only increase restrictions, not decrease them. For example, a CN device could be set in software to the US regdomain, but because CN has an EIRP maximum of 20dBm, the device will not be able to transmit at the US maximum of 30dBm.

For example, to see if the regdomain is being set in firmware for an Atheros device:

# dmesg | grep ath:

For other chipsets, it may help to search for "EEPROM", "regdomain", or simply the name of the device driver.

To see if your regdomain change has been successful, and to query the number of available channels and their allowed transmit power:

$ iw list | grep -A 15 Frequencies:

A more permanent configuration of the regdomain can be achieved through editing /etc/conf.d/wireless-regdom and uncommenting the appropriate domain.

wpa_supplicant can also use a regdomain in the country= line of /etc/wpa_supplicant/wpa_supplicant.conf.

It is also possible to configure the cfg80211 kernel module to use a specific regdomain by adding, for example, options cfg80211 ieee80211_regdom=JP as module options. The module option is inherited from the old regulatory implementation and in modern kernels act as a userspace regulatory hint as if it came through nl80211 through utilities like iw and wpa_supplicant.

Rfkill の注意点

Many laptops have a hardware button (or switch) to turn off wireless card, however, the card can also be blocked by kernel. This can be handled by rfkill. To show the current status:

# rfkill list
0: phy0: Wireless LAN
	Soft blocked: yes
	Hard blocked: yes

If the card is hard-blocked, use the hardware button (switch) to unblock it. If the card is not hard-blocked but soft-blocked, use the following command:

# rfkill unblock wifi
ノート: It is possible that the card will go from hard-blocked and soft-unblocked state into hard-unblocked and soft-blocked state by pressing the hardware button (i.e. the soft-blocked bit is just switched no matter what). This can be adjusted by tuning some options of the rfkill kernel module.

Hardware buttons to toggle wireless cards are handled by a vendor specific kernel module, frequently these are WMI modules. Particularly for very new hardware models, it happens that the model is not fully supported in the latest stable kernel yet. In this case it often helps to search the kernel bug tracker for information and report the model to the maintainer of the respective vendor kernel module, if it has not happened already.

See also [2].

省電力

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

トラブルシューティング

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

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

Rfkill によるブロック

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

# rfkill list
0: phy0: Wireless LAN
	Soft blocked: yes
	Hard blocked: yes

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

# rfkill unblock wifi
ノート: 物理ボタンを押すことでカードの状態を hard-blockedsoft-unblocked から hard-unblockedsoft-blocked に変えることができます (soft-blocked ビットも切り替わります)。これは rfkill カーネルモジュールのオプションを設定することで調整することが可能です。

ワイヤレスカードのオンオフを切り替えるハードウェアボタンはメーカー別のカーネルモジュールによって処理されます。大抵は WMI モジュールです。特に最近のハードウェアでは、安定版のカーネルではまだサポートが完全には実装されていない可能性があります。そのような場合、カーネルのバグトラッカーを検索したりカーネルモジュールのメンテナにモデルを報告してください。

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

ログの取得

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

$ 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 アドレスは取得できるのにホスト解決ができない

公共の無線ネットワークを使っている場合 Captive Portal が存在することがあります。その場合、resolv.conf からカスタム DNS サーバーを削除する必要があります。

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

何らかの理由で tx excessive retries や invalid misc などのエラーが大量に発生すると、パケットをロスしたり接続が切れたりすることがあります。以下のヒントが役に立つかもしれません。

レートを下げる

低いレートに設定してみてください (例: 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 のしきい値を設定する

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

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

# iw phy0 set frag 512

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

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

ランダムに切断する

原因 #1

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

# 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

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

原因 #4

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

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

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

  • ルーターが(クライアントで使っている)無線デバイスと比べて相当に旧式である場合、ルーターを別のワイヤレスモードに設定して動作するかテストする
  • mixed-mode 認証を無効化 (例: WPA2 と AES、またはルーターが古い場合 TKIP)
  • "auto" チャンネル以外のチャンネルを使ってみる (隣家のルーターが古くて干渉している可能性があります)
  • WPS を無効化
  • 40Mhz 周波数帯を無効化 (スループットは悪くなりますが衝突は起きにくくなります)
  • ルーターにサービス品質に関する設定がある場合、設定が完全であることを確認 (例: Wi-Fi Multimedia (WMM) は任意の QoS フロー制御の一部です。問題のあるルーターファームウェアは設定が有効になっていない場合も有効であるかのように見せかけてくることがあります)

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

rt3090

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

rt3290

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

rt3573

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

rt5572

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

mt7612u

新しい商号 Mediatek でリリースされている最新のチップセットです。AC1200 または AC1300 チップセットになります。サポートページ で Linux 用のドライバーがメーカーから公開されています。

Realtek

rtl8192cu

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

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

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 の 8188eu-dkmsAUR パッケージをインストールしてください。

rtl8723ae/rtl8723be

Linux カーネルのバージョン 3.6 から新しい rtl8723ae モジュールが含まれるようになりました。同 3.15 から rtl8723be モジュールが追加されています。

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

/etc/modprobe.d/rtl8723ae.conf
options rtl8723ae fwlps=0

または:

/etc/modprobe.d/rtl8723be.conf
options rtl8723be fwlps=0

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

rtl88xxau

Realtek の rtl8811au/rtl8812au/rtl8814au/rtl8821au チップセットは AC600 から AC1900 までの様々な USB アダプタ用に設計されています。

以下のパッケージでカーネルドライバーをインストールできます:

チップセット ドライバーのバージョン AUR パッケージ ノート
rtl8812au 5.2.9.3 rtl8812au-dkms-gitAUR rtl8812au 専用の最新版のドライバー
rtl8811au, rtl8812au, rtl8821au 5.1.5 rtl8821au-dkms-gitAUR rtl8812au については最新版を使うことを推奨します。
rtl8814au 4.3.21 rtl8814au-dkms-gitAUR rtl8813au でも動作する可能性があります。

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

rtl8822bu

rtl8822bu-dkms-gitAUR には Edimax EW7822ULC USB3 や Asus AC53 Nano USB 802.11ac アダプタに搭載されている Realtek 8822bu チップセットを使うためのカーネルモジュールが入っています。

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

rtl8xxxu

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

一部のドライバーは AUR の rtl8723bu-gitAUR[リンク切れ: パッケージが存在しません]rtl8723bu-git-dkmsAUR パッケージなどでインストールできます。

Atheros

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

  • madwifi は古い、旧式のドライバーです。2.6.39.1 から Arch のカーネルには含まれていません[6]
  • 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

参照:

Linux 3.15.1 現在、一部のユーザーが帯域幅が減少することを報告しています。/etc/modprobe.d/ath9k.conf を編集して以下の行を追加することで問題が解決することがあります:

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

安定性に問題が起こる場合、backports-patchedAUR パッケージを試してみることもできます。サポートと開発のための ath9k メーリングリスト が存在します。

省電力機能

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 オプションを設定することでエラーは解決できます:

/etc/modprobe.d/ath9k.conf
options ath9k ps_enable=1
ASUS

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

Intel

ipw2100 と ipw2200

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

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

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 を見て下さい。このファームウェアは linux-firmware パッケージに含まれています。linux-firmware-iwlwifi-gitAUR パッケージをインストールすることで新しいバージョンを使用することができます。

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

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

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

/etc/modprobe.d/iwlwifi.conf
options iwlwifi 11n_disable=8

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

これで上手くいかない場合、無線アダプターの省電力モードを切ってみて下さい。永続的に設定するには、新しい 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"
Bluetooth の共存

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

/etc/modprobe.d/iwlwifi.conf
options iwlwifi bt_coex_active=0

LED の点滅を無効化する

ノート: 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
ヒント: /sys/class/leds/phy0-led がない場合、led_mode="1" モジュールオプションを使ってみて下さい。

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ブラックリスト化して下さい。

ACX100/111

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

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

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

zd1211rw

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

hostap_cs

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

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

ndiswrapper

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

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

ndiswrapper を設定するには ndiswrapper-dkms をインストールしてから以下の手順に従って下さい。

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

backports-patched

backports-patchedAUR は新しいカーネルのドライバーは旧カーネルで使えるようにバックポートしたパッケージです。プロジェクトは2007年から開始され最初は compat-wireless という名前で、次に compat-drivers となり、最近になって backports になりました。

古いカーネルを使っていて無線が繋がらない場合、このパッケージをインストールすることで問題が解決する場合があります。

参照