(2015-03-11)

(2022-09-24 工事中。どうも最近のRaspbianはいろいろと変わってしまったらしい・・・orz)

無線LAN運用実験(全3回)。今回は以下の3回目、最終回。

その2-問題発生編 の各種問題(ping反応悪い、ブロードキャストパケット欠落など)の原因をネット上で調べてみると、USB無線LANアダプターの省電力機能が悪さをしているらしい、との情報が多数ありました。

省電力機能をオフにする方法ですが、管理人が使用している GW-USNANO2A 用のドライバ(8192cu)は、無線LANの設定コマンド iwconfig では省電力機能(およびほかの機能も)を切り替えることはできないそうです。情報源は下記のサイトを参照させていただきました(ここにたどり着かなかったら永遠に悩んでいたかも)。

参考

というわけで、USB無線LANのドライバ 8192cu の省電力機能をオフにしてみます(先ほどの参照サイトの内容そのままです:-)。

とりあえずOSのバージョンなどをメモ。

$ uname -a
Linux rasp01 3.18.7+ #755 PREEMPT Thu Feb 12 17:14:31 GMT 2015 armv6l GNU/Linux
$ cat /etc/issue.net
Raspbian GNU/Linux 7

以下目次。

設定変更

正しい手順

下記のファイルを新規作成し、OSを再起動します(再起動したくない場合)。

ファイル名 /etc/modprobe.d/8192cu.conf
内容

# Disable power management
options 8192cu rtw_power_mgnt=0 rtw_enusbss=0
rtw_power_mgnt=0
省電力機能。0=OFF
rtw_enusbss=0
USB autosuspend のON/OFF。デフォルト0で機能オフ

おまけ。

rtw_ips_mode=1
リンク省電力機能。お好みで。

省電力がオフになったかどうかは、下記のファイルの内容を見れば分かります。

/sys/module/8192cu/parameters/rtw_power_mgnt

値の意味:

設定変更前は 1 でしたが、設定変更してOS再起動後は 0 になりました。

隣のマシン(1号機=有線LAN)からこのマシン(2号機)へ ping を発行し、遅延が少なくなったことを確認します。

$ ping -c 3 192.168.1.21
PING 192.168.1.21 (192.168.1.21) 56(84) bytes of data.
64 bytes from 192.168.1.21: icmp_req=1 ttl=64 time=6.31 ms
64 bytes from 192.168.1.21: icmp_req=2 ttl=64 time=6.29 ms
64 bytes from 192.168.1.21: icmp_req=3 ttl=64 time=6.46 ms

--- 192.168.1.21 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 6.291/6.355/6.460/0.074 ms

遅延が劇的に改善されました(設定変更前は 50ms とか100ms オーダーだった)。
変更前のping:

64 bytes from 192.168.1.21: icmp_req=1 ttl=64 time=82.4 ms
64 bytes from 192.168.1.21: icmp_req=2 ttl=64 time=104 ms
64 bytes from 192.168.1.21: icmp_req=3 ttl=64 time=24.4 ms
64 bytes from 192.168.1.21: icmp_req=4 ttl=64 time=46.7 ms

また残りの問題(その2-問題発生編 )もすべて解決です(あ~すっきりした)。

再起動せずに設定を反映

再起動せずに設定を反映する方法として、ひとまず下記でうまくいきました。
(他に良い方法があれば誰か教えてくらはい。)
ただし、ネットワークは一旦停止するので、ssh等で作業していてタイプミス等あると、そこで「さようなら」となってしまいますのでご注意を。

$ su
# vi /etc/modprobe.d/8192cu.conf
(ここで設定変更等して保存)
# ifdown wlan0; modprobe -r 8192cu; modprobe 8192cu; ifup wlan0

3行目は、1行で一気に書き切るのがポイントです。
10秒前後時間がかかりますので、気長に待ちます。もし反応がなくなってしまったら、再度ログインし直してみます。

エラーメッセージ等を確認したい場合は、標準出力・エラー出力をファイルへ書き出すと良いでしょう。
または、管理人TKもよく使っている screen コマンド*1を使うと良いかと思います。

誤った手順

管理人TKは、当初この設定方法が分からず、iwconfig で省電力機能を切り替えできると思い、状況が改善せずに悩んでしまいました。

# echo NGな例
# iwconfig wlan0 power off
Error for wireless request "Set Power Management" (8B2C) :
    SET failed on device wlan0 ; Operation not permitted.

他のドライバではこれでよい場合もあるのでしょうが、8192cu ではNGです。

おまけ

USBでの認識

下記のコマンドで、GW-USNANO2A がどういった形で認識されているかを確認できます。

$ lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 2019:ab2a PLANEX GW-USNano2 802.11n Wireless Adapter [Realtek RTL8188CUS]
Bus 001 Device 005: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB

上記出力結果の、

Bus 001 Device 004: ID 2019:ab2a PLANEX GW-USNano2 802.11n Wireless Adapter [Realtek RTL8188CUS]

がUSB無線LANインターフェースに該当します。

ドライバの確認

実際に使われているドライバは、

8192cu

というものらしいですが、どういったつながりでそこたどり着くかは不明です。
(RTL8188CUS -> 8192cu で名前の雰囲気は似ています:-)

8192cu はローダブルカーネルモジュールで、lsmod コマンドで確認できます。

$ lsmod
Module                  Size  Used by
(途中省略...)
8192cu                569633  0
(以降省略...)

ドライバ自体のファイルはこれです。

/lib/modules/3.18.7+/kernel/drivers/net/wireless/rtl8192cu/8192cu.ko
/lib/modules/3.18.7-v7+/kernel/drivers/net/wireless/rtl8192cu/8192cu.ko

OSのバージョンにより 3.18.7+ のところが変わります。
2行目は、先日発売された Raspberry Pi 2 のものだそうです。
管理人TK宅のは Raspberry Pi(無印)。

後日トラブル(原因不明)~復旧

2016-01-20
ふとネットワークのレスポンスが悪い事に気づいた。
sshでログインしようとするとタイムアウトが多々ある、あるいはpingの反応が悪い、など。
でも、一旦応答するとあとは普通に使える、みたいな。
現象的には、前述の省電力機能が有効になってしまったような雰囲気。

設定自体は変更していないのだが、とりあえずOSを再起動しても治らずかなり焦った。
2日ほど悩んだ(放置)したあと、じゃあということで電源をオフにし、さらに電源用USBケーブルも引っこ抜いて完全に電源ラインを切断し、改めて電源を入れて立ち上げると、治ったよ~。

ということで、原因は不明だが、想像するに、おそらく無線LANアダプターが変な状態を覚えこんでしまった、といったところでしょうかねぇ。


*1 シェル等の画面出力内容を一旦バッファリングし、改めて画面表示する。ログインシェルが死んでしまっても、再度ログインして screen コマンドのプロセスへ再接続すると元の画面に復帰できる便利なコマンド。

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-09-24 (土) 07:41:34