Windows10でRaspberry Pi Zero (W) をOTGを使ってセットアップする

Raspberry pi Zero WのセットアップをOTGでチャレンジしてみたら、少し詰まるところがあったので、セットアップ手順をまとめてみた。
手順は、OSインストールからOTGでラズパイを設定し、WiFi環境をセットアップし、VNC接続するまで。

# セットアップ手順
## Raspbianダウンロード
ここから、RASPBIAN STRETCH WITH DESKTOPの最新版のzipをダウンロードする。
https://www.raspberrypi.org/downloads/raspbian/
※自分はデスクトップ環境が欲しかったので、WITH DESKTOPを選択

## Etcherインストール
ここからEtcherをインストールする。
https://etcher.io/
※SDカードにRaspbianをインストールするツール。DD for WindowsなどでもOKのはず。

## Raspbianインストール
Raspberry Pi Zero用のmicro SDカードをカードリーダーに挿入し、Etcherを利用して、RaspbianをSDカードにインストールする。Etcherは管理者権限で実行する。
<img width="600" alt="Etcher1" src="https://qiita-image-store.s3.amazonaws.com/0/82651/c9356865-4bd2-a14a-c46c-6d2adda0f12e.png">
Select ImageでダウンロードしたRaspbianのzipを選択すればOK
<img width="600" alt="Etcher1" src="https://qiita-image-store.s3.amazonaws.com/0/82651/367ec6e2-47b3-3478-1b0c-911ed91fc4b7.png">
Flashボタンを押して、zipの内容をSDカードに書き込む。

## SSH有効化
インストールが終了すると、SDカードを一度抜いて、再度挿入する。
そうすると、bootドライブが出てくるので、bootドライブ直下にsshという空のファイルを作成する。
右クリックの新規作成からssh.txtを作成し、.txtを消せばOK。

## cmdline.txt 修正
bootドライブのcmdline.txtに "modules-load=dwc2,g_ether" を追加する。
rootwaitとquietの間に挿入。
>dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=4b5dcf0c-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait <font color=red><b>modules-load=dwc2,g_ether</b></font> quiet splash plymouth.ignore-serial-consoles

## config.txt 修正
bootドライブのconfig.txtの末尾に "dtoverlay=dwc2" を追加

## RPI Driver OTGインストール
ここでだいぶ苦戦した。
「[Raspberry Pi Zero を USB ケーブルだけでセットアップする](http://marrone.jp/labo/?p=1586)」の手順に従って、RPI Driver OTGをインストール
http://domotique.caron.ws/wp-content/uploads/telechargement/RPI%20Driver%20OTG.zip
これをやっておかないと、USB経由でRaspberry Pi Zeroにアクセスができない。

## Bonjourインストール
Bonjourをインストールすると、USBで接続したRaspberry Pi にホスト名でアクセスができるようになる。
iTunesをインストールすればBonjourが自動でインストールされると書いてあるページもあるけど、ウソ。
ここからダウンロードしてインストール。
https://support.apple.com/kb/DL999?locale=ja_JP

## Raspberry Pi Zero 起動
PCとRaspberry Pi ZeroをUSBケーブルでつなぐ。Raspberry Pi側は、電源ソースではない方(内側)に接続。
起動が完了すると、ネットワークの一覧にUSB Ethernetが出てくる。これでSSH接続の準備OK。
<img width="600" alt="network" src="https://qiita-image-store.s3.amazonaws.com/0/82651/f862680d-007b-d549-850b-53b6ec301839.png">

## SSH接続
teratermなどを使って、raspberrypi.localにssh接続を実施。
<img width="400" alt="ssh01" src="https://qiita-image-store.s3.amazonaws.com/0/82651/c9255f88-c77e-a9b4-ccde-a1dfa1f97659.png">
<br>認証を聞いてくるので、pi/raspberryでログイン。
<img width="400" alt="ssh01" src="https://qiita-image-store.s3.amazonaws.com/0/82651/0efb0d6d-d426-ce66-5255-97de6b81c9a6.png">
<br>無事に入れた。
<img width="600" alt="ssh01" src="https://qiita-image-store.s3.amazonaws.com/0/82651/5fb690b1-5661-9d60-aedb-15c4746b7b9e.png">

## WiFiセットアップ
/etc/wpa_supplicant/wpa_supplicant.conf を修正する。
contryをJPに変更し、接続する可能性のあるSSIDをnetworkとして1つないし、複数登録する。
自分は、スマホのテザリング用と自宅のWiFiの2つを登録。登録後はreboot。
>country=<font color=red><b>JP</b></font>
>ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
>update_config=1
>network={
>　　ssid="[SSID]"
>　　psk="[パスワード]"
>　　id_str="myMobile"
>}
>
>network={
>　　ssid="[SSID]"
>　　psk="[パスワード]"
>　　id_str="Home"
>}

他にもいろいろなパラメタがあるが、それは本家を参照。
https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md

## Bluetoothセットアップ
※別稿で記載予定

## VNCセットアップ
つぎに、VNCセットアップ。別の記事には、よく tightvncserver をインストールする手順が記載されている。
自分もそれに従って tightvncserver をインストールしてみたものの、tightvncserver はminiHDMIで接続したメイン画面は操作できず、仮想デスクトップしか操作できなかった。いろいろ調べてみると、そもそもRaspbianには、デフォルトでVNC機能を使えるようになっていた（有効化すれば自動でインストールしてくれるようになっている）。
VNC機能の有効化方法は、raspi-configを実行する。

```
$sudo raspi-config
```
そうすると、GUIが表示されるので、"Interfacing Options" を選択する。
<img width="600" alt="vnc01" src="https://qiita-image-store.s3.amazonaws.com/0/82651/df7b9ab6-1548-208b-7e69-c3ecc6925549.png">

"P3 VNC" を選択
<img width="600" alt="vnc02" src="https://qiita-image-store.s3.amazonaws.com/0/82651/ad8d43c5-45ae-f9cc-b132-268e121f47f6.png">

VNCを有効にするか聞いてくるので、Yesを選択
※VNC機能の有効化は、インターネット接続が有効でないと実施できないので、注意。ちゃんとWiFi接続設定をしてからやること。
<img width="600" alt="vnc03" src="https://qiita-image-store.s3.amazonaws.com/0/82651/f3329732-032a-d861-2c06-4c9b66628493.png">

## VNC接続時の解像度変更
VNCを有効にしただけでは、VGA相当の画面なので、超見難い。
config.txtを修正する。

```
$sudo vi /boot/config.txt
```

修正箇所は以下。すべてコメントアウトされているので、コメントアウトを外す。
>hdmi_force_hotplug=1
>hdmi_group=2
>hdmi_mode=47
>hdmi_drive=2

groupとmodeは以下を参照して適当な値を設定。rebootすると、設定した解像度で表示される。
VNCのビューアーは何でもよい。SSH同様、raspberrypi.local:5900 にアクセスする。
https://elinux.org/RPiconfig#Video_mode_options
<img width="800" alt="vnc03" src="https://qiita-image-store.s3.amazonaws.com/0/82651/352020f8-291d-ff94-985b-893574ba0315.png">



# 参考
[Raspberry Pi Zero(W)のセットアップ](https://qiita.com/hishi/items/8bdfd9d72fa8fe2e7573)
[Raspberry Pi Zero を USB ケーブルだけでセットアップする](http://marrone.jp/labo/?p=1586)
[VNCで接続するためにRaspberryPiの解像度を修正する](https://qiita.com/seiketkm/items/749d858653c2d1490eba)