ラズパイのオンボードWiFiパワーマネージメントを無効にする

ラズパイのオンボードWiFiはパワーマネージメントがonになっていて、一定期間時間が経過するとWiFiがサスペンドに入る。例えばサーバー用途やWiFiアクセスポイント、リピーターなど、ラズパイの利用方法によってはこのパワーマネージメントが厄介となり、これを無効にする必要がある。その設定方法についての手順がこちら。

設定確認

まずは初期設定をiwconfigで確認する。

iwconfig wlan0
wlan0     IEEE 802.11  ESSID:"MYNETWORK"  
          Mode:Managed  Frequency:5.745 GHz  Access Point: XX:XX:XX:XX:XX:XX   
          Bit Rate=175.5 Mb/s   Tx-Power=31 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
          Link Quality=42/70  Signal level=-68 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:2  Invalid misc:0   Missed beacon:0

Power Management: on となっている。

パワーマネージメントを無効に

これを無効にするには、同じiwconfigコマンドを使って設定を変更する。

sudo iwconfig wlan0 power off
wlan0     IEEE 802.11  ESSID:"LunaticSol_A"  
          Mode:Managed  Frequency:5.745 GHz  Access Point: 20:C0:47:E9:A5:F8   
          Bit Rate=234 Mb/s   Tx-Power=31 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=39/70  Signal level=-71 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:2  Invalid misc:0   Missed beacon:0

Power Management: off となったことがわかる。

スクリプトをサービス化

しかし、この設定はラズパイ再起動後に戻ってしまう。以下のスクリプトをsystemdを使ったサービスにすることで起動ごとにパワーマネージメントを無効にすることが可能。

スクリプトは github から /home/pi/services 以下で git clone すれば良い。

git clone https://github.com/takarocks/rpiwlan0poweroff.git

ここでは手動でセットアップする方法を説明。

1. services/rpiwlan0poweroff ディレクトリを作成し、移動

cd ~
mkdir -p services/rpiwlan0poweroff
cd services/rpiwlan0poweroff

2. wlan0poweroff.sh シェルを services/rpiwlan0poweroff ディレクトリに作成

#!/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

3. wlan0poweroff.sh シェルのパーミッションに実行権限を追加

chmod +x wlan0poweroff.sh

4. 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

5. wlan0poweroff.service を /etc/systemd/system/ にコピー

sudo cp wlan0poweroff.service /etc/systemd/system/

6. サービスを有効に設定

sudo systemctl enable wlan0poweroff.service

まとめ

次回の起動以降、このスクリプトが処理されてRPi内臓のWiFiパワーマネージメントが常にオフになる。常時WiFiを稼働させておく必要があるRPi利用目的の場合は、あれ繋がらない?というような問題を回避してくれるので便利だ。

このサービスの実行を停止してパワーマネージメントをONにしておきたい場合は以下のコマンドでサービスを停止すればいい。

sudo systemctl disable wlan0poweroff.service

リポジトリ

Raspberry Pi on board WiFi power management disable service

https://github.com/takarocks/

参考

コメントを残す

メールアドレスが公開されることはありません。