(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
おまけ。
省電力がオフになったかどうかは、下記のファイルの内容を見れば分かります。
/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です。
下記のコマンドで、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アダプターが変な状態を覚えこんでしまった、といったところでしょうかねぇ。