0. 概要
Raspberry Pi Zero Wに母艦 (windows 10)から接続するまでに思いの外、時間が掛ったので備忘録として残しておく。
1. Installation
Raspberry Pi Zero Wが焼かれたSDカードの作成までをここで行う
必要なもの
RaspberryのIMG:
https://www.raspberrypi.org/downloads/raspbian/
SDカードにIMGを焼く(DDコマンド的なもの):
https://sourceforge.net/projects/win32diskimager/
色々と試したがWin32Diskimagerが一番エラーが出ずにうまくいった。
作業
1)RaspberryのIMGファイルを公式サイトからダウンロードする
2)SDカードを母艦のマシンに指して、ドライブの番号を覚えておく
3)Win32Diskimagerを使って、ダウンロードしたRaspberryのIMGを指定、SDカードのドライブを指定してWriteを押す。
後は1時間ほど待てばSDカードが出来あがる。
基本的には、この作業のみでRaspbbery Piは立ち上げることができる。
その後、Raspberry Pi上で作業を行うにあってRaspberry PiのI/Fから作業するのは面倒なので、Raspberry Piをネットワークに接続してSSH接続をし、母艦から操作する必要がある。
なお、ネットワークも環境が変わればいつでも接続できるわけではないので、シリアルコンソールで扱いたいと考える。GPIOのシリアルをUSBに変換してくれる市販のツールもあるが、非常に面倒なのでRaspberryのUSBから直接シリアルコンソールを使えるようにしたい。
2. Setup SSH
SDカードに焼いた後、SDカードのboot
パスを開き、
以下の設定を行いSSH接続およびUSB経由でシリアルコンソール接続を行う
2.1. Lunch up SSH
SSHの接続について説明する。
1) SDカードのboot
パスをく
2) 空ファイルのsshを作成する
これで起動時にssh接続ができるようになる。
このファイルがない場合はConnection refuseというエラーが出る。
2.2. Network Configuration
ワイヤレス接続の設定について説明する。
1) SDカードのboot
パスをく
2) wpa_supplicant.confファイルを作成する
3) 以下をファイルに書き込む
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="SSID"
psk="Passphrase"
}
これで起動時にネットワーク接続の設定ファイルがコピーされて、起動時に自動接続されるようになる。
2.3. SSH over USB
なお、2.2.の設定を終えたところで、インターネットに自動接続されないことが多々ある。このため、USBのインタフェースを通してRaspberry piと母艦マシンをシリアル接続したいと考える。
1) SDカードのboot
パスを開く
2) config.txt
を開き以下を入力する
dtoverlay=dwc2
入力個所はEnable Audioあたりに入れておくのが一般的らしい。
3) cmdline.txt
ファイルを開き、以下を入力する。
modules-load=dwc2,g_serial, g_ether
入力個所はrootwaitに次ぎ位に入れるのが一般的らしい
これでシリアル接続が可能になる。また、G_etherを入れることで、ネットワークインターフェースとしても使える
4) Raspberry piを起動した後に以下をシェルに入力してUSBをシリアル接続化させる。
$sudo systemctl enable getty@ttyGS0.service
3. Mesh network
おまけでメッシュネットワークを構築する。
adhoc
まず/etc/network/interface
を開き、以下を末尾に入力する
auto wlan0
iface wlan0 inet static
address 192.168.6.2
netmask 255.255.255.0
wireless-channel 11
wireless-mode ad-hoc
wireless-essid testadhoc
wireless-key 12367890
そして、Rebootする。
ノード化
以下でノード化するアプリケーションをインストールする
$ sudo apt-get install olsrd
以下で起動
$ sudo olsrd -i wlan0 -d 1
これで、Ad-hocでOpen Shortest Path First(OSPF)的なルーティングを可能とする。
例えば2-3が接続断でも2が1を介して3に接続するなんていうことができる。