Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
65
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@Liesegang

USB 1本とSDカードライタだけでできるUSB OTGを用いたRapsberry Pi Zero WH のセットアップ

以下,Raspberry Pi Zeroと書くのは長いため,RPZと省略する場合があります.

Macの場合とWindowsの場合両方に対応しています

1. Raspberry Pi Zero のセットアップ

USB 1本とSDカードライタだけでできるRaspberry Pi Zeroのセットアップ方法を紹介します.

1.1 OSのインストール

1.1.1 OSのダウンロード

Raspberry Pi専用のOSであるRaspberry Pi OS(旧Raspbian)は,公式サイトのダウンロードページからダウンロードできます.しかし,海外サーバーは遅いため,日本にあるミラーサーバーを利用しましょう.

WITH DESKTOP版とLITE版の違いは主にデスクトップ環境の有無です.Full版はWITH DESKTOPにさらにおすすめのソフトウェアが付属したものです.これらは後からでもインストールできます.自分の目的にあったものを選びましょう.サーバーやIoTデバイスを作る場合は,LITEで十分でしょう.今回は,IoTデバイスを作りたいので,LITEを選択します.

Index_of__pub_raspberrypi_raspbian_lite_images_raspbian_lite-2018-03-14.png

最新のフォルダを開き,<日付>-raspios-buster-armhf.zipまたは<日付>-raspios-buster-lite-armhf.zipをダウンロードします.容量が大きなファイルなので,環境にもよりますが10分前後かかります.

1.1.2 OSの書き込み

最近になって,公式のOSをSDに書き込むためのソフトが発表されました.今回はそれを使用します.

公式のダウンロードページ

からお使いのOSにあったRaspberry Pi Imagerをダウンロードします.Windows, Mac, Linux版が用意されています.指示に従ってインストールしてください.

image.png

実行すると上のような画面が表示されます.

CHOOSE OSを選択し

image.png

Use customを選択します

image.png
先ほどダウンロードした<日付>-raspios-buster-armhf.zipというようなファイルを選択します..imgを選択しろと書いてありますが.zipファイルのままで問題ありませんでした.

CHOOSE SD CARDを選択し,SDカードを選択します.

image.png
SDカード以外も表示されるので,間違いがないかよく確認してください.間違えるとOSや大事なデータが消える可能性があります.

WRITEを選択し書きこみます

image.png
10分ほどかかるので,紅茶でも飲みながらゆっくり待ちましょう.

1.2 パソコンからSSH接続しよう

1.2.1 USB On-the-Go Ethernetとして認識させる

まず,Raspberry Pi ZeroとUSBでインターネット接続できるように,SDカードの中身を書き換えていきます.SDを挿し直すと,bootという名前で認識されます.その中にある,config.txtというファイルの一番下に下記の行を追加しましょう.

config.txt
#下記の行を一番下に追加
dtoverlay=dwc2

次に,commandline.txtを以下に置き換えましょう.
rootwaitの後に modules-load=dwc2,g_etherが追加されています.

  • Raspbian WITH DESKTOPの場合
commandline.txt
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=15ca46a5-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait modules-load=dwc2,g_ether quiet init=/usr/lib/raspi-config/init_resize.sh splash plymouth.ignore-serial-consoles
  • Raspbian Liteの場合
commandline.txt_for_Raspbian_Lite
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=a8fe70f4-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait modules-load=dwc2,g_ether quiet init=/usr/lib/raspi-config/init_resize.sh

1.2.2 SSH接続を許可する

bootの直下にsshという空のファイルを置くことによって,ssh接続ができるようになります.
テキストエディタで空のファイルをbootsshという名前で保存しましょう.このとき,.txtなどの拡張子が付かないように注意してください.

また,このファイルは一度OSを起動すると消えますが,設定は反映されているはずです.安心してください.

1.2.3 PCに接続しよう

SDカードをRPZに差し込みます.USB A-MicroB(下図のUSBケーブル)でPCに繋ぎましょう.充電用のケーブルは通信をすることができません.データ転送用のケーブルを用意してください.
使用するUSBケーブル

RPZにはPWR INUSBと書かれた2つのUSBポートが有りますが,PWR INは給電専用です.必ずUSBと書かれたポートを使用してください.そうしないとUSBを通してインターネット接続をすることができません.
USB.png

RPZが起動し始めます.起動が終わるまで少し待ちましょう.緑のLEDが点滅せずに点灯するようになったら起動が完了しています.初回はかなり時間がかかるので,気長に待ちましょう.

1.2.3 ドライバの設定をしよう

ドライバの設定

COMポートとして認識されているRPZをネットワークデバイスとして認識させるために,ドライバを変更します.下記のドライバをダウンロードして解凍してください.
RPI Driver OTG

Windowsロゴを右クリックして、デバイスマネージャを開きます.
DeviceManager.png

ドライバをインストールしない場合はシリアルデバイスとして認識されています.
serial.png

USBシリアルデバイスという項目を右クリックして,ドライバーの更新をクリックします.
driver.png

コンピュータを参照してドライバーソフトウェアを検索 を選択します.次へを押します.
reference.png

先程ダウンロードしたzipファイルを解凍したディレクトリを指定します.次へを押します.
referrence2.png

成功すると.ネットワークアダプターの欄にUSB Ethernet/RNDIS Gadgetが表示されます.
success.png

デバイスマネージャを閉じましょう.

1.2.4 SSH接続しよう

ターミナル,またはパワーシェルで以下のように打つことで、ssh接続することができます.

$ ssh pi@raspberrypi.local

初めて接続すると,Are you sure you want to continue connecting (yes/no)?と聞かれるのでyesと入力しEnterを押します.
パスワードを聞かれるので,パスワードを打ちましょう.このとき入力しても何も表示されませんが,きちんと入力できているので最後まで打ってEnterを押しましょう.
初期状態では

user name: pi
password: raspberry

になっています.

トラブルシューティング

sshで接続した際に,以下のようなエラーが出る場合があります.
これは,RPZのIPアドレスが変化した場合などに表示されます.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The ECDSA host key for raspberrypi.local has changed,
and the key for the corresponding IP address 0000::0000:0000:0000:0000%21
is unknown. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:******************************************.
Please contact your system administrator.
Add correct host key in /c/Users/****/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /c/Users/****/.ssh/known_hosts:1
ECDSA host key for raspberrypi.local has changed and you have requested strict checking.
Host key verification failed.

以下のコマンドで,ホストの情報を消去することによって再び接続できるようになります.

$ ssh-keygen -R raspberrypi.local

1.2.5 シャットダウン,再起動の仕方

コンソールに以下のように打ちます

# シャットダウン
$ sudo poweroff

# 再起動
$ sudo reboot

1.3 インターネットに接続しよう

RPZからPCを介してインターネットに接続ができるように設定します.

1.3.1 インターネットの共有

Macの場合

[]-[システム環境設定]-[共有]を開きます.
下記の画面のようにインターネット共有を選択し,RNDIS/Ethernet Gadgetにチェックを入れ,インターネット共有にチェックを入れます.
共有.png

Windowsの場合

右下の通知(吹き出しマーク)をクリックして,すべての設定を押します
setting.png

ネットワークとインターネットを押します
internet.png

イーサネットを選び,右の欄からアダプターのオプションを変更するを押します
adopter.png

表示方法詳細にします
view.png

デバイス名USB Ethernet/RNDIS Gadget となっているデバイスの名前を確認します.ここでは,これを「ネットワークA」と呼びます.
name.png

接続インターネットアクセスになっているものを探します.それを右クリックします.
right_click.png

プロパティを選びます
property.png

共有タブに移動します
share.png

ネットワークをほかのユーザーに...にチェックを入れ,ホームネットワーク接続で「ネットワークA」の名前を選びます.
homenet.png

OKを押して終了です.

1.3.2 インターネット接続のチェック

ssh接続を行った,raspberry pi上のコンソールで,以下のコマンドを打ちます.

$ ping -c 4 8.8.8.8

以下のように0% packet lossと表示されれば,無事インターネットに繋がっています.

$ ping -c 4 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=55 time=6.73 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=55 time=18.8 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=55 time=5.90 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=55 time=6.46 ms

--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 5.907/9.480/18.816/5.398 ms

以下のように100% packet lossと表示された場合は,うまくインターネットに接続されていません.設定を確認してもう一度やってみましょう.

$ ping -c 4 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 169.254.98.74 icmp_seq=1 Destination Host Unreachable
From 169.254.98.74 icmp_seq=2 Destination Host Unreachable
From 169.254.98.74 icmp_seq=3 Destination Host Unreachable
From 169.254.98.74 icmp_seq=4 Destination Host Unreachable

--- 8.8.8.8 ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3141ms
pipe 4

1.4 Wifiの設定をしよう

以下のようにコマンドを打ちましょう

$ cd ~

# パスワードが履歴に残らないように,ファイルに書く
$ vi pass 

# 設定をファイルに書き出す
$ sudo sh -c 'wpa_passphrase "wifiのSSID" < pass >> /etc/wpa_supplicant/wpa_supplicant.conf'

# 生のパスフレーズがコメントアウトされて書き込まれているので消去する(#psk="**********"という行)
$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

# 再起動
$ sudo reboot

# つながったらパスワードファイルを消去
$ rm ~/pass

1.5 Updateしよう

セキュリティの心配があるため,定期的にソフトウェアをアップデートしましょう.
$ sudo apt-get update
$ sudo apt-get upgrade

参考記事

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
65
Help us understand the problem. What are the problem?