Raspberry Pi Zero Wの無線LANをディスプレイやキーボードなしで設定する(有線LAN利用)

(2017/07/29追記)
コメントでmicroSDにあらかじめファイルを作成しておくことで、無線LANの設定ができるというご指摘をいただき、その方法を記事にいたしました。

[Raspberry Piの無線LANをmicroSDで設定する](http://qiita.com/mascii/items/0d1a280ac58ed8f6f999)

こちらの方が簡単に無線LANの設定ができると思いますので、参照してください

# 前書き

Raspberry Pi Zero Wには無線LAN(WiFi)が内蔵されましたが、何らかの方法でSSIDとパスフレーズを設定しないと無線での通信はできません。
以前に書いた[Raspberry PiとMac or Windows PCを有線で直接繋いでさくっとSSH接続する](http://qiita.com/mascii/items/7d955395158d4231aef6)という記事ではRaspberry Pi 3 Model Bに搭載されている有線LANポートを活用していましたが、今回は以前の記事の方法を踏襲しつつ、Raspberry Pi Zero Wに**USBで一時的に有線LANポートを設ける**するやり方で、ディスプレイやキーボードを使わずにSSIDとパスフレーズを設定する方法を紹介します。

<img width="480" alt="P7230612.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/137045/4ad1976d-3054-e0b3-fc20-f3748da5883a.jpeg">

# 動作環境
## リモート(Raspberry Pi)側
- Raspberry Pi Zero W
    - Raspbian Jessie Lite 2017-07-05
        - イメージをMicroSDに書き込んだ後、MicroSDのルートディレクトリに`ssh`という名前で空のファイルを作成
            - 詳しくは[Raspberry PiとMac or Windows PCを有線で直接繋いでさくっとSSH接続する](http://qiita.com/mascii/items/7d955395158d4231aef6)などを参照
    - micro USB OTGケーブル
        - 内側のmicro USBコネクタと外付けLANアダプターを接続
    - 外付けLANアダプター
        - BUFFALO LUA3-U2-ATX (https://www.amazon.co.jp/dp/B002IT5ZPG)
            - USB2.0 to Ethernet
            - 実売価格:1,071円程度
            - Mac側でもRaspberry Pi側でもドライバーインストール不要で認識した
                - Nintendo Switchでも認識する万能さ

## ホスト側
- MacBook Pro (Retina, 13-inch, Early 2015)
    - macOS Sierra
    - 外付けLANアダプター
        - Apple Thunderbolt - ギガビットEthernetアダプタ

# SSH接続してみる
最初にお見せした写真の通り配線すれば、やっていることは以前に書いた[Raspberry PiとMac or Windows PCを有線で直接繋いでさくっとSSH接続する](http://qiita.com/mascii/items/7d955395158d4231aef6)と全く同じです。

Raspberry PiにRaspbianが入っているMicroSDを入れて、電源を入れます。OSが起動するまで1分ほど待ちます。

```text:macOS
$ ssh pi@raspberrypi.local
```

パスワードを聞かれるので、 `raspberry`  と入力してreturnキーを押します。

```text:macOS
pi@raspberrypi.local's password: 
```

繋がるはずです。

```text:Raspbian
pi@raspberrypi:~ $
```

うまく繋がらない場合は、以前接続した際の設定が残っている可能性があるので、known_hostsの設定削除を行ってください。

```text:macOS
$ ssh-keygen -R raspberrypi.local
```

# SSIDとパスフレーズを設定する
以前に書いた[Raspberry Pi 3の内蔵WiFiを無効にしてUSB WiFiアダプタを利用する](http://qiita.com/mascii/items/14cccd6c791f43beb492)とほぼ同じです。

2.4GHz帯のもののみ利用できます。ルーターのデフォルトの設定では、2.4GHz帯のSSIDにはgやGといった文字が含まれていることが多いです。

`(ssid)`, `(passphrase)` を置き換えて以下のコマンドをRaspbian上で実行します

```text:Raspbian
pi@raspberrypi:~ $ sudo sh -c 'wpa_passphrase (ssid) (passphrase) | grep -v "#psk=" >> /etc/wpa_supplicant/wpa_supplicant.conf'
pi@raspberrypi:~ $ sudo wpa_cli reconfigure
```

パスフレーズがない場合は、[Life with IT - Raspberry Pi 3でパスフレーズなしのWi-Fiアクセスポイントに接続する設定(Raspbian Jessie Lite)](http://l-w-i.net/t/raspbian/wifi_001.txt)を見て設定してください(自己責任でお願いします)

# USBケーブルだけでも設定できる
Raspberry Pi Zero (Zero W)の内側のmicro USBコネクタを用いて、**USBケーブル一本で電源供給＋ネットワーク接続**することもできるようです。
[Raspberry Pi Zero(W)のセットアップ](http://qiita.com/hishi/items/8bdfd9d72fa8fe2e7573)

## 今回紹介した方法との比較
### 今回紹介した方法のメリット
- Micro SDにRaspbianイメージ書き込みした後、`ssh`ファイルの作成以外の書き込みや変更がない
- Raspberry Pi Zero Wを有線でルーターに接続することもできる
    - 無線LANと関係無くなりますが、ルーター横に置く超小型サーバーとして利用することもできそうです
- 電源供給と通信を分けることができる

### 今回紹介した方法のデメリット
- 外付けLANアダプターが必要
- 電源供給のためのケーブルが別途必要

# 参考サイト
- [SSH接続エラー回避方法：.ssh/known_hostsから特定のホストを削除する/削除しないで対処する3つの方法](http://qiita.com/grgrjnjn/items/8ca33b64ea0406e12938)
- [Raspberry Pi Zero(W)のセットアップ](http://qiita.com/hishi/items/8bdfd9d72fa8fe2e7573)