IoT
RaspberryPiZeroW

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であるRASPBIANは,公式サイトのダウンロードページからダウンロードできます.しかし,海外サーバーは遅いため,日本にあるミラーサーバーを利用しましょう.

Index_of__pub_raspberrypi_raspbian_lite_images_raspbian_lite-2018-03-14.png

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

WITH DESKTOP版とLITE版の違いは主にデスクトップ環境の有無なので,自分の目的にあったものを選びましょう.サーバーやIoTデバイスを作る場合は,LITEで十分でしょう.今回は,IoTデバイスを作りたいので,LITEを選択します.

1.1.2 OSの書き込み

今回は,Etcherを使ってSDカードに書き込みます.自分のOSにあったソフトウェアをダウンロードしてインストールします.
Etcher.png
1. Select Imageを押して先程ダウンロードした<日付>-raspbian-stretch.zipまたは<日付>-raspbian-stretch-lite.zipを選択します.
2. Select Driveを押して書き込み先のSDカードを選択します.間違えるとファイルが消えてしまうため,注意しましょう.
3. Flashを押して書き込みを開始します.かなり時間がかかるので紅茶でも飲みながらゆっくり待ちましょう.

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などの拡張子が付かないように注意してください.

1.2.3 PCに接続しよう

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

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

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

Macの場合

MacにはBonjourが最初からインストールされています.また,ドライバも接続時に自動で設定されるため,特に操作は不要です.

Windowsの場合

Bonjourのインストール

まずは,Bonjourをインストールしましょう.この工程は,windows 10では既にインストールされているため不要です.また,iTunesにはBonjourが付いてくるため,iTunesをインストールしている場合も不要です.

以下を,インストールしましょう.
Bonjour Print Service

ドライバの設定

次に,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.4 インターネットに接続しよう

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

1.4.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.4.2 インターネット接続のチェック

以下のコマンドを打ちます.

$ 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.5 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.6 Updateしよう

$ sudo apt-get update
$ sudo apt-get upgrade

参考記事