Windows10から、ラズベリーパイ(Raspberry Pi Zero WH)にTeraTermで接続しようとしたら「無効なホスト」というエラーが出てしまいました。
結論からいうと、Windows10のVersion1803にバグがあって、Version1809にUpdateしたら解決しました。
他の方が調べたり試したりしている経緯のサイトなどを見ると、とても参考になるので、このサイトでも今回のエラーの調査と確認方法を紹介したいと思います。
エラーの発生状況
こちらの記事の通り、ネットワークの設定をしました。電源を入れればつながるはずです。
ラズベリーパイ(Raspberry Pi Zero WH)の初期設定(ディスプレイ、キーボードなし)
ラズベリーパイ(Raspberry Pi Zero WH)に電源を接続して起動します。
TeraTermを起動して「新しい接続」ウィンドウで
ホスト:raspberrypi.local
と入力し、「OK」ボタンをクリックしました。
「無効なホスト」というエラーが出てしまいました!
まずは原因を究明するために、こちらのサイトを参考に、ラズベリーパイ(Raspberry Pi Zero WH)のipアドレスを調べてみました。
同じLAN内に接続したRaspberry PiのIPアドレスを調べる (情報、ありがとうございます!)
Windowsのスタートメニューから、[Windowsシステムツール]-[コマンドプロンプト]を起動します。
以下のコマンドを入力します。
for /l %i in (0,1,255) do ping -w 1 -n 1 192.168.0.%i
(192.168.0.0から192.168.0.255までping)
数分後に止まったら、以下のコマンドを入力します。
>arp -a
インターフェイス: 192.168.0.8 --- 0xe
インターネット アドレス 物理アドレス 種類
192.168.0.1 00-xx-xx-xx-xx-10 動的
192.168.0.3 10-xx-xx-xx-xx-d2 動的
192.168.0.13 dc-xx-xx-xx-xx-be 動的
192.168.0.20 f0-xx-xx-xx-xx-27 動的
192.168.0.26 b8-27-eb-xx-xx-xx 動的
192.168.0.255 ff-ff-ff-ff-ff-ff 静的
224.0.0.22 xx-xx-xx-xx-xx-xx 静的
224.0.0.252 xx-xx-xx-xx-xx-xx 静的
239.255.255.250 xx-xx-xx-xx-xx-xx 静的
239.255.255.253 xx-xx-xx-xx-xx-xx 静的
255.255.255.255 ff-ff-ff-ff-ff-ff 静的
この中で、物理アドレス(MACアドレス)がb8から始まるのが、ラズベリーパイ(Raspberry Pi )ということで……。
やったー! ありました。192.168.0.26がラズベリーパイ(Raspberry Pi Zero WH)です。
ラズベリーパイ(Raspberry Pi Zero WH)は、ちゃんとWifiにつながっているようです。
一応、Pingもしてみます。
ping 192.168.0.26
C:Usersxxxx>ping 192.168.0.26
192.168.0.26 に ping を送信しています 32 バイトのデータ:
192.168.0.26 からの応答: バイト数 =32 時間 =64ms TTL=64
192.168.0.26 からの応答: バイト数 =32 時間 =6ms TTL=64
192.168.0.26 からの応答: バイト数 =32 時間 =7ms TTL=64
192.168.0.26 からの応答: バイト数 =32 時間 =7ms TTL=64
大丈夫。ちゃんとIPアドレスで通信ができています。
では、ホスト名では?
C:Usersxxxx>ping raspberrypi.local
ping 要求ではホスト raspberrypi.local が見つかりませんでした。
ホスト名を確認しても う一度実行してください。
名前解決ができていない(ラズベリーパイ(Raspberry Pi Zero WH)が探せていない)ようです。
固定IPアドレスにする?
IPアドレスではアクセスできていますので、今後はIPアドレスで通信するという方法もあります。
通常IPアドレスは、動的に割り振られますので、アドレスが変わります。
毎回、ラズベリーパイ(Raspberry Pi Zero WH)を起動するたびにIPアドレスを調べて接続するのは大変なので、IPアドレスが変わらない固定IPアドレスにしてしまうというのも手です。
でも、今までIPアドレスの管理は、Wi-Fi親機(Wi-Fiルータ)が自動でやってくれていたのに、この不具合のためだけに、自分でこのアドレスは固定だからとか、覚えて管理しなくてはいけなくなってしまいます。
新しく機器を追加するときとか、このアドレスは使っちゃいけないからとか気にすることが増えるし、間違いの元になってしまうかもしれません。
特別な機能を実現したくて固定IPアドレスにするなら納得ですが、単に不具合を回避するために、面倒なことをしなくてはいけないなんて。
他に方法がないのか探してみました。
Bonjour(ボンジュール)をインストールする?
以前の情報でiTunesに付属しているBonjour(ボンジュール)というサービスをインストールすれば、IPアドレスを調べなくてもWindowsからraspberrypi.localにsshで接続できる(名前解決できる)という情報がネット上に多くあります。
Bonjour(ボンジュール)は、米アップルが開発したゼロ・コンフィギュレーション技術の実装である。 主にLANにおいて、何の設定も行わず機器を使用可能にすることができる。
引用元:ウィキペディア(Wikipedia)
ただ、Bonjourを入れてから、パソコンが遅くなったという情報もありますし、あまりそういうソフトを入れたくない……。
他に方法はないのか調べてみました。
WindowsでmDNSがサポートされている?
こちらのサイトでBonjourを入れなくても、Windowsで名前解決ができるとありました。mDnsという仕組みです。
Bonjour for Windows不要!Windows10マシンに”.local”でアクセスしよう!
でも、2017年10月のUpdateでサポートから外されてしまった!? ようです。
さらにこちらのサイトにWindows10 Version 1803にmDNSが実装されているが、バグがあるとの情報が。
しかも、Windows10 Version 1803にBonjour(ボンジュール)を入れると不具合がたくさん出て大変なことになってしまうそうです。
Windowsのバージョンを確認してみます。
Windowsの左下のスタートボタンをクリックし、[設定]-[システム]-[バージョン情報]で確認できます。
確認したら、まさにWindows10 Version 1803でした!
あぶない、あぶない。Bonjourを入れなくてよかったです。
WindowsをUpdateして解決!
Windows10 Version1809では、mDNSが改善されているようなので、Windows Updateしてみました。
これは、かなり大きくて、家の環境がいまだにADSLのせいもあると思いますが、3時間くらいかかってしまいました。
そして、先ほどと同じようにpingをしてみると、無事に通りました!
わーい。解決です。TeraTermでも無事に接続できて、今のところ、問題はないです。
Windowsバージョンのバグ情報は、チェックしていかなくてはいけませんね。
この後、家にある他のパソコンにもWindows Updateの通知がきていたので、どんどんUpdateしました。
引き続き、問題が起こらないか注意していきます。