株式会社インデペンデンスシステムズ横浜

システム開発エンジニアの西田五郎が運営しております。Raspberry Pi や Arduino その他新規開発案件のご依頼をお待ちしております。

Raspberry Pi

Raspberry Piをモニターとキーボードなしで導入する(2021年5月版 その2)SSH接続とWifiの設定からログインまで

投稿日:2021年5月2日 更新日:

今現在(2021年5月)の方法でRaspberry Piをヘッドレス(モニターとキーボードなしの状態)で導入する方法について書いています。前回は全体概要からSDカードの作成まで書きました。今回は作成したSDカードにPCからSSH接続とWifiの設定を書き込んでそのSDカードでRaspberry Piを起動してログインするところまで書きます。

まず前回と同じですが、ヘッドレスとは以下のような構成です。

Raspberry PiとPC環境等は以下です。
Raspberry Pi4 メモリ4G版
micro SDカード32Gとアダプター
ACアダプター(充分な電力が供給できるものでRaspberry Pi4の場合は USB Type C)
ノートPC Windows10 Pro(SDカードスロット内蔵タイプか、なければ外付けSDカードリーダー・ライターを用意する)
(自分用の)Wifi環境または有線LAN環境

全体的な作業手順

この環境でここでは以下のように作業を進めます。
1. Raspberry Pi OSをSDカードへ書き込む
2. 書き込んだSDカードへSSH接続の許可とWifiの接続情報を書き込む
3. Raspberry Pi OSを起動してRaspberry PiのIPアドレスを検索する
4. Windows PCからSSHでRaspberry Piへログインする

5. Raspberry Pi OSのアップデートを実行する
6. Raspberry Pi OSでリモートデスクトップを導入する
7. Windows PCからリモートデスクトップでRaspberry Piへログインする
8. Raspberry Pi の初期設定を行う。

今回は、上記の2から4までです。順番に書きます。

(※2021/05/10 追記)
Raspberry PI ImagerでSDカード作成時にWifiやSSHの設定も出来るようになっていました。以下で書きました。こちらの方法もぜひ使ってください。但し、ここで書いた自分で設定ファイルを作成する方法は知っていると使える場面はたくさんあると思います。
Raspberry Pi Imager でSDカード書き込み時にWifiやSSH接続を設定する方法
(※2021/05/10 追記ここまで)

SDカードへSSH接続の許可とWifiの接続情報を書き込む
まずはここでの作業は以下の目的です。
デフォルトでは初期状態ではSSH接続でログインが出来ないのでその許可を設定する
モニター、キーボードがないので、Wifiの接続をSDカードへ直接書き込む

(※もし、有線LANで接続出来て、IPアドレスが自動で割り振られる場合はもちろんWifi接続の設定は不要です。)

前回までのSDカードが準備出来ていれば、SDカード内は以下のようなファイル構成になっていると思います。

ここに上記の情報のファイルを作成(コピー)します。

SSHの許可
SDカード直下にssh.txtというファイルを作成またはコピーします。中身は不要です。このファイルがあれば初期状態でSSH接続を許可してくれます。これは有線LANでも必要です。

wifiの設定
同じくSDカード直下にwpa_supplicant.confというファイル名で以下のようなWifiの接続情報を書き込みます。

country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="yourssid"
    psk="yourpskの平文"
}

pskを平文で書くのは良くないと言う場合は、例えばですが、以下が便利です。(ありがとうございます。)
Raspberry Piの無線LANをmicroSDで簡単に設定するためのツールを作った – Qiita

上記が説明のページで実際のツールのページが以下です。
https://mascii.github.io/wpa-supplicant-conf-tool/

使い方はSSIDとPassphrase:を入力して追加ボタンをクリックします。必要であれば続けて別のSSIDとPassphrase:を入力してまた追加ボタンをクリックします。追加ボタンは忘れないでください。

最後にwpa_supplicant.conf作成をクリックすれば必要なwpa_supplicant.confがダウンロード出来ます。次にssh.txtボタンをクリックすれば前項のssh.txtとファイルもダウンロード出来ます。(中身は何も書いていませんが。)

これらのファイルをSDカードへ直接ダウンロードするかコピーすればここでの作業は完了です。以下のようにファイルがあります。

Raspberry Pi OSを起動してRaspberry PiのIPアドレスを検索する
前項までの準備が出来たSDカードをRaspberry Piにセットして起動します。そうするとWifiが正常に利用出来る状態で、SDカードの設定が正しければRaspberry PiもWifiに接続出来ているはずです。また有線LANの場合はLANケーブルを接続して下さい。

ヘッドレス状態ではモニターからIPアドレスも確認出来ないので同じネットワークからWindows PCで接続します。

raspberrypi.localのホスト名で検索出来るかどうか
ここでのPCはWindows10としてまずは、raspberrypi.localのホスト名でpingコマンドを発行します。以下です。
> ping -4 raspberrypi.local

以下のように無事に応答がありました。

この場合は、raspberrypi.localでも192.168.3.112でもraspberry piにアクセス出来るはずです。

但し、このraspberrypi.localで応答がない場合もあります。その場合のWindows PowerShellでの探し方の例です。
(※このraspberrypi.localでアクセス出来るのはavahiの仕組みです。補足を参照して下さい。)

まず自分のipアドレスをipconfigコマンドで確認します。私の場合は、192.168.3.116と表示されました。これを踏まえて例えば以下のコマンドで探します。

foreach($i in 100..254){ ping 192.168.3.$i }

単純にpingコマンドをループさせているだけです。ipアドレスの最後が100から254まででpingコマンドを発行しています。この場合、ずっと画面を見ている必要があります。

途中で以下のような応答がありました。

つまり、192.168.3.112は応答が帰ってきたので他にPC等が接続されなければ、192.168.3.112がRapberry Piかなと推測出来ます。

他にもarpコマンドとの組み合わせで探せるようですが必要であれば調べてみて下さい。ここではやはりツールを利用します。

ExPingツールを使う
raspberrypi.localのホスト名でpingコマンドの応答がないと想定してExPingというツールを使ってみます。

今現在以下からダウンロード出来ます。もう更新されていないですが、今でも定番ツールの一つのようです。最新版はLHA書庫版なので別途解凍ソフトが必要です。
http://www.woodybells.com/exping.html

解凍するとフォルダ内に実行ファイル(ExPing.exe)があるので実行します。環境タブを選択します。

ここでは念のためタイムアウトを3000ミリ秒に設定しました。

メインメニュー => 機能 => 範囲指定Pingを実行 から範囲指定Pingを実行します。

既に答えが分かっているので100から200の範囲にして実行します。

112と116が〇になりました。116はPCなので112がRaspberry Piと推測出来ます。

整理します。
raspberrypi.localでアクセス出来れば、このホスト名でSSH接続が出来る。raspberrypi.localでアクセス出来なければ、pingコマンド等を直接実行するか、ツールで範囲指定でRaspbery Piを探します。

Windows PCからSSHでRaspberry Piへログインする
いよいよ今回の最終段階です。Windows PCからSSHでRaspberry Piへログインします。
TeraTermを使います。もちろん、とりあえず、Windows PowerShellからSSHを使っても、他のターミナルソフトを使ってもいいです。

初期状態のユーザ名とパスワードは以下です。
ユーザ名:pi
パスワード:raspberry
すいません、途中の画面は省略します。無事にログイン出来ました。これでコマンドラインレベルですがヘッドレスの状態でRaspberry Piが使えます。

今回はここまでとします。次回ははここからRaspberry Piの初期設定を行います。次回へ進む

(補足1)別のWifiに接続する場合
始めにSDカードへ作成したWifi設定のwpa_supplicant.confファイルは削除されます。ですが、また同じWifiに接続する場合はそのまま接続出来ます。別のWifiに接続する場合は、またSDカードにwpa_supplicant.confファイルを作成すればいいです。随時必要に応じてwpa_supplicant.confファイルで設定出来ます。

また、Wifiの設定が複数あってその設定情報が分かっている場合は、複数の設定でwpa_supplicant.confを作成しておけばいいです。

(補足2)avahiについて
もう随分と古くなってしまった記事ですが、以下でavahiについて書きました。
Raspberry PiでAvahi を使ってホスト名でアクセスする

記事としては古くなりましたが仕組みの基本は変わっていなくて「ホスト名でのアクセス」ということです。また今現在では、仕様上では、Raspberry Pi、Windows10、MacOSで追加インストール等なしでこの仕組みが使えます。

Windows10ではデフォルトでmDNS(multicast DNS)の機能が実装されていて初期状態でホスト名のアクセスが可能です。但しですが、私の経験ではホスト名でアクセス出来ない時もあったりするので何とも言えないです。

AdSense

AdSense

-Raspberry Pi

執筆者:

関連記事

Raspberry Piでタッチアプリ開発(その3)Kivyでレイアウト・ボタン作成

Raspberry Piでタッチアプリ開発の3回目です。前回はKivyの導入について書きました。今回は具体的なレイアウトとボタンを配置してみます。以下のレイアウトについて順番に書きます。Kivyでのレ …

Raspberry Piでセンサネットワーク稼働試験(AWS SORACOM編)構成・課題等

Raspberry Piでセンサネットワークを構築して実際に稼働してみます。今回は、AWS SORACOM編として通信モジュールにSORACOMの3G対応データ通信端末 AK-020を使用してAWSに …

温度センサADT7410(その1)i2C通信とは

温度センサのADT7410を使ってみます。ADT7410はアナログ・デバイセズ社の製品ですが、実際には以下の秋月さんのモジュールを使います。 ADT7410使用 高精度・高分解能 I2C・16Bit …

Raspberry PiでAvahi を使ってホスト名でアクセスする

Raspberry PiでAvahiを使ってホスト名でのアクセスを可能にする方法についてです。ホスト名でのアクセスとは192.168.1.10といったIPアドレスではなく、raspberrypi.lo …

無線マイコン ToCoStickのシリアル通信専用アプリを使ってみた

無線マイコンの ToCoStick(トコスティック)のシリアル通信専用アプリを使ってみました。ToCoStickとはパソコン等のUSBに接続して無線通信が出来るモジュールです。メーカの製品ページは以下 …