らずぱい(RaspberryPi 3)のWifiが一定時間経つと切れる(再起動したら直る)のはルーターのせいだった

f:id:rasukarusan:20190202035804p:plain

題名で結論が出ているのだが、家のルーターが一定時間通信がないとWifi機能の停止をしていた。
たちが悪いのが、らずぱいをディスプレイで映すと無線LANのマークはしっかり繋がっているのだ。
しかしsshはできない...

らずぱい再起動orらずぱいの無線LANをOFF→ONにしたらsshができるようになるので謎だった。

解決策

ここを参考にさせていただいた。コマンドが自分のらずぱいでは動かなったのでちょこっと修正。

qiita.com

一定時間毎にpingを打って返信がなかったら繋ぎ直すというスクリプトを作る。

▶vim reConnectWifi.sh

#!/bin/sh
# pingの宛先はルーターのIPアドレス(らずぱいのIPではない)
ping -c 1 192.168.100.1
test $? -eq 1 && sudo /etc/ifplugd/action.d/action_wpa wlan0 up

# crontabにスクリプトを登録
▶crontab -e
# ルーターの設定時間によって頻度を変更してください。
# 家のルーターは10分ごとに停止するようになっていたので5分に1回スクリプトを走らせるよう設定
*/5 * * * * ~/reConnectWifi.sh

試したこと

らずぱいの無線LANをコマンドでON/OFF

# 無線LANをOFF
▶sudo iwconfig wlan0 txpower off
# 無線LANをON
▶sudo iwconfig wlan0 txpower auto

確かこれをcronに仕込んでもいけたはず。ただなんとなく接続をぶちぶち切るのが嫌だった。

パワーマネジメントをOFFにする

# 最初はファイルがないので新規作成
▶sudo vim /etc/modprobe.d/8192cu.conf

# 以下を書き込む
options 8192cu rtw_power_mgnt=0 rtw_enusbss=1 rtw_ips_mode=1

これは意味がなかった。通信速度が上がることもなかった。

IPを固定化する

これはすでにやっていた。関係なかった。

ルーターを疑う

家のルーターは「Speed Wi-Fi NEXT W03」を使用していた。「speedwifi スリープ」で調べたら以下にたどり着いた。

faq.uqwimax.jp

こ、こいつが、、、!

ハイパフォーマンスモード時は"15分間(※)"、ノーマルモード時は"10分間(※)"、バッテリーセーブモード時は"5分間(※)"無通信状態が続いた場合、Wi-Fi機能の通信を停止します。

こいつがよぉ。。。ありがとうございました。みなさんもらずぱいを疑い尽くしたら根っこのルーターを疑ってみると解決するかもしれません。