どーも。
事務所の室外機が尋常じゃなくうるさく夜なのでつけることができず凍えながら記事を書いているZionです。
「初心者のラズパイ勉強日記その3.5」でHDMIを挿さずに起動するとVNCで接続することができなかった問題は解決したのですが、ラズパイを起動してから操作しない時間が続くとSSHの接続が切れてしまい再ログインしようとしてもTimed outとエラーが出てしまいます。VNCもSSH同様に接続できませんでした。
ということで 今回は「Time outエラーの原因」「パワーマネジメント機能をoffにする」の順に説明して、このエラーを解決していけたらと思います。
Time outのエラーの原因
SSHを利用しているときによく起こったので、何か設定に問題があるのかと思ったのですが、VNCで試したところ同様にタイムアウトしてしまいました。
ということで考えられるのは、スリープしたりWifiが繋がっていない状態になるということです。windowsやmacにも一定時間操作をしなかったらスリープするみたいなものがあるのでそんな感じでしょう。
調べてみると、パワーマネジメント機能というやつがオンになっていると電力制限してしまいスリープモードみたいなのになってしまうっぽい。
パワーマネジメント機能on/offの確認
まずは、パワーマネジメント機能のon/offの確認をしてみます。
iwconfig wlan0
と打ち込むと真ん中当に「Power Management:on (or off)」とあります。オンになっている場合はこれをオフにしましょう。
パワーマネジメント機能をoffにする
ではパワーマネジメント機能をoffに設定していきます。
sudo iwconfig wlan0 power off
これでパワーマネジメント機能をoffにできました。
iwconfig wlan0
で確認してみると「Power Management:off」となっているはずです。
しかし、このままでは再起動したときにonの状態に戻ってしまいます。再起動した後にこの設定にしてくれるようにしましょう。
起動時に自動でパワーマネジメント機能をoffにする
調べてみると色々なやり方があったのですが、rc.localは推奨されないとか、8192cuはすでになくなっているとか、言われたのでsystemctlコマンドを利用してシェルを自動起動させる方法をとってみる。
~/services/rpiwlan0poweroff/にwlan0poweroff.shを作成します。
sudo nano ~/services/rpiwlan0poweroff/wlan0poweroff.sh
作ったら以下の内容を書き込んで保存します。
#!/bin/bash
LOG_FILE="/var/log/wlan0poweroff.log"
echo "Setting wlan0 power management off in 5 sec..." > $LOG_FILE
echo "Current wlan0 power management configuration" >> $LOG_FILE
iwconfig wlan0|grep Power\ Management >> $LOG_FILE
sleep 5
echo "Setting wlan0 power management off..." >> $LOG_FILE
iwconfig wlan0 power off
iwconfig wlan0|grep Power\ Management >> $LOG_FILE
続いて権限の追加を行います。
sudo chmod 755 wlan0poweroff.sh
~/services/rpiwlan0poweroff/にwlan0poweroff.serviceを作成します。
sudo nano ~/services/rpiwlan0poweroff/wlan0poweroff.service
先程と同様、下のやつを書き込みます。
[Unit]
Description=wlan0 power management disable service
After=network.target
[Service]
ExecStart=/home/pi/services/rpiwlan0poweroff/wlan0poweroff.sh
[Install]
WantedBy=multi-user.target
wlan0poweroff.serviceを/etc/systemd/system/にコピーします。
sudo cp wlan0poweroff.service /etc/systemd/system/
最後に自動起動を有効にします。
sudo systemctl enable wlan0poweroff.service
これで完了!
一度再起動してから、
iwconfig wlan0
で「Power Management:off」になっているか確認してみましょう。
まとめ
今回は、ラズパイがしばらくするとTimed outのエラーを出してSSH接続できないので、その解決方法を試してみました。
- 電力制限をしてしまっている。
- パワーマネジメント機能がオンになっている。
パワーマネジメント機能をオフにする。
ということで今回は、モニターなしにできたはいいもののすぐ使えなくなってしまって使いにくかった問題を解決しました。と言っても本当に解決したのか明日事務所に来て接続してみるまでまだ疑っているんですけどね。。。
追記(2022.01.14):現在は、ちょこちょこ切れたり少し待つと接続できたりと安定しない状況です。
次は、外出先からのssh接続を試してみようと思います。