Raspberry Piで時間経過でWiFi接続が切れる件

未分類

状況

RaspberryPiが一定時間たつとWiFiからの接続が途切れてしまいネットワークにつながらなくなってしまう。ルータから確認すると最初は表示されるのだが一定時間たつとルーターから認識されなくなってしまう。

SSH接続ができなくなってしまい、再度SSH接続できるようにするにはネットワークに接続する必要あり。これは不便。

原因

どうやらウェブで調べてみた感じ、パワーマネジメント設定(省力化設定)のせいらしいということが判明しました。

iwconfig wlan0

と入力して

Power Management:on

と表示されればパワーマネジメントはオンになっているので、これが原因の可能性が高いでしょう。

対策①

Power Managementをオフにしてみる

sudo iwconfig wlan0 power off

これで解決!…とはならないのですよね…これ再起動するともとに戻ってしまうみたいです…

この状態でWiFiが途切れなければこの設定を永続化しちゃいましょう。次の章へ…

設定の永続化

pingをcronで打ち続けてネットワークを維持する方法、切れたら再度ネットにつながるようなスクリプトを実行する方法などいろいろあるみたいですが…今回はSystemdに登録し起動時に自動でスクリプトを実行するようにしようと思います。

sudo nano /etc/systemd/system/disable-wlan0-power.service

上のコマンドでサービスファイルを作成します。

[Unit]
Description=Disable power saving on wlan0
Wants=network-online.target
After=network-online.target

[Service]
Type=oneshot
ExecStart=/sbin/iwconfig wlan0 power off
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

上のファイルを書き込んで、Ctrl+Oで保存してください。

それができたら下のコマンドを一行ずつ順番に実行してください

sudo systemctl daemon-reload
sudo systemctl enable disable-wlan0-power.service
sudo systemctl restart disable-wlan0-power.service
sudo systemctl status  disable-wlan0-power.service

順番に実行してエラーが出ずかつActive:actice(exited)になっていれば成功です。

iwconfig wlan0

を叩いて“Power Management:off” になっているかも確認してみてください。

対策②

これでもうまくいかない場合があります。ラズパイはネットワークマネージャー側でパワーセーブを行っているようなので、そちら側の設定にもパワーセーブオフを行っていきましょう。

sudo mkdir -p /etc/NetworkManager/conf.d
sudo tee /etc/NetworkManager/conf.d/10-wifi-powersave.conf > /dev/null << 'EOF'
[connection]
wifi.powersave = 2
EOF
sudo reboot now

最後に

もしこれで動けばそれでいいですが、動かない際はping作戦などもやってみてください。

自分は対策②で動くようになりました

コマンドだけで機能をオフにできない設定がたたあるのですが、このpower management系にはdebianを触っていると多々悩まされます…

参考文献

Raspberry Pi Zero 2 W で Wi-Fi が切れてしまう問題を解決したお話 - Miya-Gadget
microSD故障後の新OSインストールでWi‑Fiが切断。無線アダプタの省電力設定が原因と判明し、systemdで自動無効化する解決策を備忘録として解説。

コメント

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