WiFi (wlan0) が上手く起動しない
Back
HOME
Raspterry Pi のイメージャでデフォルト設定した WiFi が起動しないときの地獄模様。今までも有りはしたが、割とある方法でさらっと解決した。今回は wlan0すら見えず、やっと見えたかと思いきや IPアドレスを取得してくれない。もう味わいたくないのでメモメモ(._.)φ
GUIでは便利な NetworkManager だが!?
これは、もう長年設定変更して使い慣れている systemd-networkd と wpa_supplicant@wlan0.service, systemd-resolved を使用することとする。
設定の詳細については
「テキストモードでWi-Fi接続を安定にする」を開いて、いつもコピペで済ます。
これで、自宅、車、WiFiスポット(スマホ・テザリング)さえ有れば何処でも即接続出来る。
設定終了後再起動しても wlan0 が現れないとき
先ず、次のコマンドを打ってみる。
$ sudo rfkill unblock wifi
参考に、接続出来ていたとき、いつの間にか切断している場合は
スリープを疑う。
unblock で動いたときの恒久化処理
次の様な、ユニットファイルを作成する。
$ sudo nano /etc/systemd/system/unblock-wifi.service
GNU nano 7.2 /etc/systemd/system/unblock-wifi.service
[Unit]
Description=Unblock WiFi Modem
DefaultDependencies=no
Before=sys-subsystem-net-devices-wlan0.device
Before=wpa_supplicant@wlan0.service
Before=systemd-networkd.service
[Service]
Type=simple
ExecStart=/usr/sbin/rfkill unblock wifi
[Install]
WantedBy=multi-user.target
これを再起動してチェックする
$ sudo systemctl daemon reload
$ sudo systemctl enable unblock-wifi.service
$ sudo reboot
wlan0 は無事現れたが IPアドレスを取得できない
前項のユニットファイルを見ても分かるようにサービスの起ちあげには順番が有り、IPアドレスを取得出来るタイミングずれているとこの現象が出る。
$ sudo nano /etc/systemd/system/wpa_supplicant@.service
GNU nano 7.2 /etc/systemd/system/wpa_supplicant@.service
[Unit]
Description=WPA supplicant daemon (interface-specific version)
After=unblock-wifi.service sys-subsystem-net-devices-%i.device
Requires=sys-subsystem-net-devices-%i.device
Before=network.target
Wants=network.target unblock-wifi.service
[Service]
Type=simple
ExecStart=/sbin/wpa_supplicant -i%i -c/etc/wpa_supplicant/wpa_supplicant-%i.conf
[Install]
Alias=multi-user.target.wants/wpa_supplicant@%i.service
この順番、After や Before、Requires に指定されるサービスについて
ChatGPT 聞いてみた。しかし思い通りにはIPアドレスを取得出来なかった。
(今後もう少し練ってみて、上手く稼働したらここを修正したいと思う)
そこで特効薬的保険
本筋は、上述の順番を調整することであるが取り敢えず動かした上で、本来のサービスを稼働させる必要が有ったので保険的処理をする。
$ sudo nano /etc/systemd/system/wifi-restart.service
GNU nano 7.2 /etc/systemd/system/wifi-restart.service
[Unit]
Description=WiFi Restart Service
[Service]
Type=simple
ExecStart=systemctl restart wpa_supplicant@wlan0.service
[Install]
WantedBy=multi-user.target
更にこれを、指定したタイミングで起動させる為にタイマーを設定する。
$ sudo nano /etc/systemd/system/wifi-restart.timer
GNU nano 7.2 /etc/systemd/system/wifi-restart.timer
[Unit]
Description=WiFi Restart Timer
[Timer]
OnBootSec=2min
[Install]
WantedBy=timers.target
特に遅い昔の Raspberry Pi であったことと、常に再起動することも無いので 2m (2分) に設定した。30sec のような秒指定も出来る。
$ sudo systemctl enable wif-restart.timer
$ reboot
今回タイマを設定しているので、タイマのみ有効にして、サービスは無効のままとし、タイマに起動させる。
結果は IPアドレスを取得もでき一先ずOKとなった。
Back
HOME

この 作品 は
クリエイティブ・コモンズ 表示 - 非営利 - 改変禁止 4.0 国際 ライセンス
の下に提供されています。
English
Powered by