Raspberry Pi Zero 2 W で Wi-Fi が切れてしまう問題を解決したお話

こんにちは、七宮さん (@shichinomiya_s) です。

今回の記事では、microSDが故障して新しくOSをインスコしたら何故かWi-Fiが切れてしまう問題にハマったので、備忘録を載せておこうと思います。

 

状況

ハマったときの私の状況を箇条書きにしてみました。

Wi-Fi ルーター側から接続を確認できない。(DHCPリストにも載ってない)

Raspberry Pi の緑ランプは正常っぽい

Raspberry Pi を起動した直後には、Wi-Fiネットワークに接続できSSHが可能。

 

原因

無線アダプタの省電力設定の問題でした。

Windows の高速スタートアップがいい例ですが、本当にお節介機能が原因でハマることありますよね。

iwconfig wlan0 を叩いてPower Management:on と出れば、この可能性が非常に高いです。

shichinomiya@raspberrypizero2:~ $ iwconfig wlan0
wlan0 IEEE 802.11 ESSID:"xxxxxxxxxxxx"
Mode:Managed Frequency:2.447 GHz Access Point: 11:45:14:19:19:YJ
Bit Rate=72.2 Mb/s Tx-Power=31 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:on
Link Quality=70/70 Signal level=-28 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:18 Invalid misc:0 Missed beacon:0

 

省電力設定の無効化

なーんだ、じゃあ無効にすればええやん、という話なのです。

ということで、以下を実行すればOKです。

iwconfig wlan0 power off

はい、これでおしまい、と言いたいところですが、これ、再起動すると元に戻るクソ仕様なんですよね。

ということで、起動時に自動実行化をしたいと思います。

 

起動時に自動実行化

systemd 用いて自動実行をします。最近知ったんですが、rc.localやcronより最近はこっちが推奨されてるとか。

まずは以下にユニットファイルを作成します。

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

 

ファイル中には以下を記述します。起動後毎にiwconfig wlan0 power off させるだけです。

保存したら、systemd のリロードと有効化をしましょう。

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

 

取り急ぎの確認もしましょう。active になってたらOKです。

shichinomiya@raspberrypizero2:~ $ sudo systemctl status disable-wlan0-power.service
● disable-wlan0-power.service - Disable power management on wlan0
Loaded: loaded (/etc/systemd/system/disable-wlan0-power.service; enabled; >
Active: active (exited) since Tue 2025-02-25 22:27:47 JST; 1h 15min ago
Process: 452 ExecStart=/sbin/iwconfig wlan0 power off (code=exited, status=>
Main PID: 452 (code=exited, status=0/SUCCESS)
CPU: 8ms

Feb 25 22:27:47 raspberrypizero2 systemd[1]: Starting disable-wlan0-power.servi>
Feb 25 22:27:47 raspberrypizero2 systemd[1]: Finished disable-wlan0-power.servi>

動作確認のため、再起動をします。

sudo reboot now

 

再起動後、先ほどの確認コマンドを入力して、active になってることを確認します。

sudo systemctl status disable-wlan0-power.service

 

iwconfig 側も確認してみましょう。

iwconfig wlan0 を叩いてPower Management:off と出れば、systemdによる自動化ができています。

shichinomiya@raspberrypizero2:~ $ iwconfig wlan0
wlan0 IEEE 802.11 ESSID:"xxxxxxxxxxxx"
Mode:Managed Frequency:2.447 GHz Access Point: 11:45:14:19:19:YJ
Bit Rate=72.2 Mb/s Tx-Power=31 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:off
Link Quality=70/70 Signal level=-28 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:18 Invalid misc:0 Missed beacon:0

 

さいごに

状況は改善しましたでしょうか?私の環境の場合、これでしっかりと改善しました。

昔はこんな設定を放り込んだ記憶がないので、最近のバージョンで追加されたのでしょうか。

どちらにせよ、お節介機能な挙句、恒久的な停止もできないクソ仕様は何とかしていただきたいですね。。。

 

スポンサードリンク

 

Raspberrypi5 8G ラズベリーパイ5 技適取得済マーク入り商品

Raspberrypi5 8G ラズベリーパイ5 技適取得済マーク入り商品

価格: 14,000円 (2025/03/03時点)

Amazonで購入

Raspberry Pi Zero 2 W 日本技適取得済商品 ラズベリーパイゼロW2

Raspberry Pi Zero 2 W 日本技適取得済商品 ラズベリーパイゼロW2

価格: 3,600円 (2025/03/03時点)

Amazonで購入

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です