Raspberry Pi Zero WHが定期的にネットワークに繋がらなくなるので対策

Radiko録音サーバのラズパイにはSambaサーバとしてMacからアクセスして録音ファイルを取るのだが、1日ぐらい放置しておくとアクセスできない症状が。
調べてみるとRaspberry PiのWi-Fiにはパワーセーブ機能があるらしく、どうやらこれが原因の様子。

というわけで確認から設定まで。

確認方法

まずはSSHでラズパイへアクセスして無線LANの設定を確認。

$ iwconfig wlan0
wlan0     IEEE 802.11  ESSID:"xxx"  
〜省略〜
          Power Management:on

デフォルトではPower ManagementがOnになっている。これが一定時間経つと無線LANをサスペンド状態にし、通信ができなくなっているためオフにする。

設定方法

$ sudo iwconfig wlan0 power off

これで一旦はPower ManagementはOffに出来る。
しかし再起動するとまたデフォルトのOnになってしまうため、起動時に自動で設定を実行してくれるrc.localに記述。
記述するのはnanoでもvimでもいいけど、sudoじゃないと上書きできないようなので注意。
以下はnanoで編集のパターン。

$ sudo nano /etc/rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"

  sudo sh -c "echo $_IP > /boot/IPaddress.txt"
  sudo sh -c "date >> /boot/IPaddress.txt"
fi
〜中略〜

iwconfig wlan0 power off # wlan0 power management off <- 追記

exit0

記載したらctrl + oで上書き保存してnano終了。
設定が反映されているか再起動して確認。

$ sudo reboot

再起動後、もう一度iwconfigで確認してPower Managementがoffになっていたら成功。

$ iwconfig wlan0
wlan0     IEEE 802.11  ESSID:"xxx"  
〜省略〜
          Power Management:off

これで無線LAN経由の通信はいまのところ切断されなくなり、運用できている。

タイトルとURLをコピーしました