ラズパイ3がwifiに繋がらないときの簡単な復旧方法

ラズパイ3がwifiに接続できない状況となりました。その状況と、原因よりも復活するための方策を述べています。

1.ラズパイがニュースを喋らない!

実は、ニュースを喋らせているラズパイ3が、ニュースを喋ってくれない事態に陥ってしまったことに、最近気づきました。

ニュースの代わりに、「残念ですがニュースが取得出来ませんでした。」みたいなことを喋ってくれます。

そこで、ニュースを喋るプログラムを調べたところ、NHKニュースのXMLを取得できないときに、この内容を喋ることがわかりました。

2.wifiと繋がらない

そこで、sshでこのラズパイに接続しようとしましたが、接続できない状態です。

ここで、ことの重大さに気が付きました。

このマシンは、ブログのバックアップマシンを兼ねているので事態は深刻です。

早々、マシン切り替え機の2番に、このラズパイ3をつないで内容を確認してみました。

一応、Xの画面は立ち上がりました。そこで、ifconfigを入力した結果(wifi)がこれです。

wlan0     Link encap:イーサネット  ハードウェアアドレス b8:27:eb:85:08:38
          inetアドレス:169.XXX.118.64 ブロードキャスト:169.XXX.255.255  マスク:255.255.0.0

60爺のネットワークは、192.168.XXX.nnnのはずなのに、まるで違うIPアドレスが付加されています。

ということは、このラズパイ3は、60爺の指定したDHCPに入っていないことになります。

3.対策

このような場合の対策です。

(1) 再起動
(2) ラズパイのシャットダウン
(3) ルータの電源入れ直し
(4) 固定IPアドレスの設定

(1)、(2) の方法で大体治るんですが、それらの方法で解決しない場合は、思い切って、(4) でIPアドレスを固定化してしまいましょう。固定IPアドレスにすれば、wifi に繋がらなくなることはまずありません。

(1) 再起動

ラズパイを reboot すると元に戻る可能性があります。早速やってみましょう。

sudo reboot

ラズパイが立ち上ったら、再度、ifconfigを入力してみてみましょう。

wlan0     Link encap:イーサネット  ハードウェアアドレス b8:27:eb:85:08:38
          inetアドレス:169.254.118.64 ブロードキャスト:169.254.255.255  マスク:255.255.0.0

ガーン!変化なしです。

(2) ラズパイのシャットダウン

次はラズパイをシャットダウンする方法です。次のコマンドで、ラズパイをシャットダウンします。

sudo shutdown -h now

電源が落ちた後、起動してみましょう。

ラズパイが立ち上ったら、再度、ifconfigを入力してみてみましょう。

しかし、状況は変わりませんね。

wlan0     Link encap:イーサネット  ハードウェアアドレス b8:27:eb:85:08:38
          inetアドレス:169.254.118.64 ブロードキャスト:169.254.255.255  マスク:255.255.0.0

今回、60爺は、電源断の後、すぐに電源を入れなおしたのですが、少し放置しておくといいようです。

シャットダウンした後、10分ほど放置してみましょう。そうすると、高い確率で wifi に接続できます。

(3) ルータの電源断

reboot も shutdown も効かないときは、ルータを疑ってみましょう。

実際、60爺の wifi は時々スマホとの接続が切れてしまい、ルータの電源断を行ったのち、再度電源を入れなおすと スマホでは、ほぼ100% wifi が復活しています。

ですので、ルータの電源を切った後、再度電源を入れて wifi が復活するか見てみましょう。

(4) 固定IPアドレスの設定

reboot も shutdown 及びルータの電源入れ直しも効果がないときは、IPアドレスを固定化してしまいましょう。こうすると、ほぼ間違いなく wifi に接続できます。

① dhcpcd.conf 編集

RaspberryPi のIPアドレスを固定IPアドレスにするには、次のファイルに設定を行います。

/etc/dhcpcd.conf

設定内容は以下の4行です。これを、最終行に追加して下さい。

interface wlan0
static ip_address=192.168.XXX.YYY/24
static routers=192.168.XXX.1
static domain_name_servers=192.168.XXX.ZZZ
  • 1行目で、固定IPの指定を表わします。今回は、wifi なので wlan0 と設定します。もし、有線LANで行うなら、この部分を eth0 と指定します。
  • 2行目で、IPアドレス(/24は必須)を指定します。
  • 3行目で、デフォルトゲートウェイ即ちルータのIPアドレスを指定します。普通は最後が1です。皆さんの環境に合わせてください。
  • 4行目は、DNSサーバです。60爺は、別途、DNSサーバを設けていますので、そのIPアドレスを指定しました。何もやっていない場合は、3行目で指定したルータのIPアドレスと同じです。

② IPアドレスの確認

dhcpcd.conf の編集が終了したら、以下のコマンドでラズパイを立ち上げ直してIPアドレスを確認しましょう。

sudo reboot

ifconfig でIPアドレスの内容を確認します。

wlan0: flags=4163  mtu 1500
         inet 192.168.XXX.YYY  netmask 255.255.255.0  broadcast 192.168.XXX.255
         inet6 240d:1a:1ef:7d00:352:e707:bc6f:d17f  prefixlen 64  scopeid 0x0
         inet6 fe80::1a61:35bb:64eb:347e  prefixlen 64  scopeid 0x20
         ether b8:27:eb:d4:cb:98  txqueuelen 1000  (イーサネット)
         RX packets 496478  bytes 25050366 (23.8 MiB)
         RX errors 0  dropped 31  overruns 0  frame 0
         TX packets 14244  bytes 1949301 (1.8 MiB)
         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0 の2行目にある inet にある数値が先ほど編集した際の値になっていれば、IPアドレスの固定化は成功です。

今回は問題なく設定できました。