今回は、通常のRaspberry Pi zeroの設定回りなので、有識者には不要かと思われる。
が、自分用メモなのでお構いなしにメモる。メモれー。うなづきマーチ。
○ ソフトウェアの準備(基礎編)
OSインストールの準備というと、昔はISOからbootableでCD焼くとか手順を調べて色々悩んだものだけれど、RPiへのOSインストールは簡単でいい。
配布サイトで適切なOSイメージファイル(ダウンロードページで Raspberry Pi 0/1 を選ぼう)を拾ったら、圧縮したままEtcherに渡すとmicroSDに展開しながら焼き込んでくれるので、後はRPiに挿して起動するだけで、OSの起動まで行ける。行けるのだが、これだとちょっと不便なので、いくつかおまじないをする。
・SSHの有効化
RetroPieの最新版はRaspbian Stretchベースなので、デフォルトではsshdが停止しているらしい。設定変更するのにディスプレイを切り替えるのは面倒なので、ssh接続できるようにする。
microSDの焼きこみ後、microSDの /boot パーティションは、FATのドライブとしてPCからアクセスできるので、microSDの直下にエディタ(メモ帳)で"ssh"という名前の空ファイルを作成します。拡張子は無し。もし、"ssh.txt"になってしまっていたら、"ssh"にリネームする。
・USB経由でログインできるようにする
RPi zeroは、PCとUSB経由でIP接続することができる。USBテザリングで使われるRNDIS(Remote Network Driver Interface)、いわゆるUSB-ethernetという接続仕様が使えるので、RPi側、PC側のドライバを仕込む。
1. config.txtの修正
"ssh"ファイルを置いたフォルダに、"config.txt"というファイルがあるので、ここにUSBコントローラのドライバ設定を追記。
2.コマンドラインの追記
OS起動時のパラメータを追記するので、同じく/boot下の"cmdline.txt"を編集。rootwait の直後にモジュール名が列挙されているので、以下の太字部分を追記する。
dwc2の次のカンマ以降が「USB Gadjet」の機能本体の名前で、今回はssh接続のための似非USB-Etherアダプタなのでg-etherにしているが、Mass Storageとか他の機能も持たせられるらしい。
3.Windows側にUSB/RNDISドライバを入れる
MacとかLinuxが母艦の人は、それぞれ調べてください。
とりあえず、PCとRPi zeroのUSBポート(真ん中寄り)を普通のUSBケーブルでつないで、USBドライバをインストールします。
Windows10の場合: Acer USB/RNDIS Gadjet ドライバをインストールする。
Windows7/8の場合: RPi zeroをPCからUSB接続して、デバイスドライバのインストールダイアログから ネットワークアダプタ>Microfsoft Corp>Remote NDIS Compatible… を選んでインストール
4.RNDISで接続できるようになったら、ホスト側IPアドレスを設定する
母艦経由でインターネット接続もできるようにするなら、母艦のインターネット側ネットワークアダプタのプロパティ>共有タブ で、RNDISアダプタをプルダウンで選んでNW接続を共有。(自動的にPCが192.168.137.1になる)
共有しない場合も、接続アドレスが変ると鬱陶しいのでRNDISアダプタの固定IPアドレスを192.168.137.1/24に設定。
5.zeroにつなぐ(1回目)
RPi zeroに挿したUSBを抜いて、電源リセット。再接続すると、ホスト側からIPアドレスを払い出すので通信できるようになる。コマンドプロンプトで、それっぽいIPアドレスを探す。
端的に言えば、arpでそれっぽいアドレスが無いか確認して、telnetで試してみる。
そりゃ他に繋がってないので見つかりますな。192.168.137.255はブロードキャストアドレスなので、それ以外で137にある192.168.137.★がRPi。とはいえ、DHCPの動作順で複数見えたりすることもあるので注意。
事前準備をやってあれば、sshでつながるはずなので、teratermなどで、上記の192.168.137.★につなぐ。
アカウント名は pi 、初期パスワードは raspberry です。
6.zero側のIPアドレスを固定設定
USB etherドライバでの接続設定をします。sshでつなぐ毎にIPアドレスを確認するのは面倒なので、固定IPアドレス(192.168.137.81)にします。DNSはgoogleの公開DNSを使用。
$ sudo nano /etc/dhcpcd.conf で、以下の設定を追記します。
Ctrl+O Ctrl+Xで保存して終了。
ネットにつなぐので、パスワードも変更します。
$ sudo raspi-config で設定メニューを起動。
最初は、8 Updateでツール自体を最新化。その後、再度起動して以下を設定。
1 Change User Password で、ユーザ piのパスワードを変更。
2 Network Options > N1 Hostname で、このRPiのホスト名を何か設定しておく。Windowsファイル共有なんかでもこの名前が使われる。
4 Localisation Options > I2 Change Timezomne で、時刻を Asia > Tokyo に合わせる。
4 Localisation Options > I4 Change Wi-Fi Country で、WiFiのリージョンをJPにしておく。
5 Interface Options > P4 SPI、 P5 I2C をそれぞれenableにしておく。
P2 SSHは、やらなくてもよさげ。
7 Advanced Options > A1 Expand Filesystem は、自動でやってるような気がするんだけれども、dfとってみてSDCardの容量よりパーティションが明らかに小さいようなら、色々ファイルを入れる前にやってみてもいいかも。

ここまで実施したら、$ sudo reboot。
7.WiFiの設定
外部につなぐのに、PCなしでも行けるようにWiFiを設定します。
本音は、USB ether経由の設定だと、セキュリティを見られる環境だとなんかやらかしそうなので。
なお、わざわざ手動でやらなくても、上記6.のraspi-configでWiFi設定もできるような気もする。
たとえば、SSIDが"lain"、パスフレーズが"PresentDayPresentTime"に設定してあるWiFiアクセスポイントに接続する場合は以下のようにパラメータを設定して暗号化パスフレーズを作成。
この結果をwpa_supplicant.confに追記する。
Ctrl+O Ctrl+X で書いて終了。
何も設定しなければ、再起動後にwpa_supplicantが上がって自動接続してくれる、はず。
つながらない場合は、$ sudo ipconfig wlan0 off → $ sudo ipconfig wlan0 on でWiFiインタフェースを再起動し、wpa_supplicantを強制的に叩いてみるなど。
WiFiを固定IPアドレスにする場合は、dhcpcd.confにSSID毎の設定を追加(Raspbian Stretchの場合)。
WiFiは繋がってるのにDHCPでアドレスが払い出されていない場合は、
$ sudo dhclient wlan0 として、強制DHCPリクエストを。
一般的な設定が終わったところで、次回はWaveshare 1.3" IPS LCD Hat特有の設定とか。
が、自分用メモなのでお構いなしにメモる。メモれー。うなづきマーチ。
○ ソフトウェアの準備(基礎編)
OSインストールの準備というと、昔はISOからbootableでCD焼くとか手順を調べて色々悩んだものだけれど、RPiへのOSインストールは簡単でいい。
配布サイトで適切なOSイメージファイル(ダウンロードページで Raspberry Pi 0/1 を選ぼう)を拾ったら、圧縮したままEtcherに渡すとmicroSDに展開しながら焼き込んでくれるので、後はRPiに挿して起動するだけで、OSの起動まで行ける。行けるのだが、これだとちょっと不便なので、いくつかおまじないをする。
・SSHの有効化
RetroPieの最新版はRaspbian Stretchベースなので、デフォルトではsshdが停止しているらしい。設定変更するのにディスプレイを切り替えるのは面倒なので、ssh接続できるようにする。
microSDの焼きこみ後、microSDの /boot パーティションは、FATのドライブとしてPCからアクセスできるので、microSDの直下にエディタ(メモ帳)で"ssh"という名前の空ファイルを作成します。拡張子は無し。もし、"ssh.txt"になってしまっていたら、"ssh"にリネームする。
・USB経由でログインできるようにする
RPi zeroは、PCとUSB経由でIP接続することができる。USBテザリングで使われるRNDIS(Remote Network Driver Interface)、いわゆるUSB-ethernetという接続仕様が使えるので、RPi側、PC側のドライバを仕込む。
1. config.txtの修正
"ssh"ファイルを置いたフォルダに、"config.txt"というファイルがあるので、ここにUSBコントローラのドライバ設定を追記。
・・・ dtoverlay=dwc2 ・・・ |
2.コマンドラインの追記
OS起動時のパラメータを追記するので、同じく/boot下の"cmdline.txt"を編集。rootwait の直後にモジュール名が列挙されているので、以下の太字部分を追記する。
・・・rootwait modules-load=dwc2,g-ether quiet ・・・ |
dwc2の次のカンマ以降が「USB Gadjet」の機能本体の名前で、今回はssh接続のための似非USB-Etherアダプタなのでg-etherにしているが、Mass Storageとか他の機能も持たせられるらしい。
3.Windows側にUSB/RNDISドライバを入れる
MacとかLinuxが母艦の人は、それぞれ調べてください。
とりあえず、PCとRPi zeroのUSBポート(真ん中寄り)を普通のUSBケーブルでつないで、USBドライバをインストールします。
Windows10の場合: Acer USB/RNDIS Gadjet ドライバをインストールする。
Windows7/8の場合: RPi zeroをPCからUSB接続して、デバイスドライバのインストールダイアログから ネットワークアダプタ>Microfsoft Corp>Remote NDIS Compatible… を選んでインストール
4.RNDISで接続できるようになったら、ホスト側IPアドレスを設定する
母艦経由でインターネット接続もできるようにするなら、母艦のインターネット側ネットワークアダプタのプロパティ>共有タブ で、RNDISアダプタをプルダウンで選んでNW接続を共有。(自動的にPCが192.168.137.1になる)
共有しない場合も、接続アドレスが変ると鬱陶しいのでRNDISアダプタの固定IPアドレスを192.168.137.1/24に設定。
5.zeroにつなぐ(1回目)
RPi zeroに挿したUSBを抜いて、電源リセット。再接続すると、ホスト側からIPアドレスを払い出すので通信できるようになる。コマンドプロンプトで、それっぽいIPアドレスを探す。
端的に言えば、arpでそれっぽいアドレスが無いか確認して、telnetで試してみる。
c:\> arp -a -N 192.168.137.1 インターフェイス: 192.168.137.1 --- 0x8 インターネット アドレス 物理アドレス 種類 192.168.137.★ **-**-**-**-**-** 動的 192.168.137.255 ff-ff-ff-ff-ff-ff 静的 224.0.0.2 **-**-**-**-**-** 静的 ・・・ |
そりゃ他に繋がってないので見つかりますな。192.168.137.255はブロードキャストアドレスなので、それ以外で137にある192.168.137.★がRPi。とはいえ、DHCPの動作順で複数見えたりすることもあるので注意。
事前準備をやってあれば、sshでつながるはずなので、teratermなどで、上記の192.168.137.★につなぐ。
アカウント名は pi 、初期パスワードは raspberry です。
6.zero側のIPアドレスを固定設定
USB etherドライバでの接続設定をします。sshでつなぐ毎にIPアドレスを確認するのは面倒なので、固定IPアドレス(192.168.137.81)にします。DNSはgoogleの公開DNSを使用。
$ sudo nano /etc/dhcpcd.conf で、以下の設定を追記します。
interface usb0 static ip_address=192.168.137.81/24 static routers=192.168.137.1 static domain_name_servers=8.8.8.8 8.8.4.4 |
Ctrl+O Ctrl+Xで保存して終了。
ネットにつなぐので、パスワードも変更します。
$ sudo raspi-config で設定メニューを起動。
最初は、8 Updateでツール自体を最新化。その後、再度起動して以下を設定。
1 Change User Password で、ユーザ piのパスワードを変更。
2 Network Options > N1 Hostname で、このRPiのホスト名を何か設定しておく。Windowsファイル共有なんかでもこの名前が使われる。
4 Localisation Options > I2 Change Timezomne で、時刻を Asia > Tokyo に合わせる。
4 Localisation Options > I4 Change Wi-Fi Country で、WiFiのリージョンをJPにしておく。
5 Interface Options > P4 SPI、 P5 I2C をそれぞれenableにしておく。
P2 SSHは、やらなくてもよさげ。
7 Advanced Options > A1 Expand Filesystem は、自動でやってるような気がするんだけれども、dfとってみてSDCardの容量よりパーティションが明らかに小さいようなら、色々ファイルを入れる前にやってみてもいいかも。

ここまで実施したら、$ sudo reboot。
7.WiFiの設定
外部につなぐのに、PCなしでも行けるようにWiFiを設定します。
本音は、USB ether経由の設定だと、セキュリティを見られる環境だとなんかやらかしそうなので。
なお、わざわざ手動でやらなくても、上記6.のraspi-configでWiFi設定もできるような気もする。
たとえば、SSIDが"lain"、パスフレーズが"PresentDayPresentTime"に設定してあるWiFiアクセスポイントに接続する場合は以下のようにパラメータを設定して暗号化パスフレーズを作成。
$ wpa_passphrase lain PresentDayPresentTime network={ ssid="lain" #psk="PresentDayPresentTime" psk=6dad3850d260d3dd40cc8fd735110bd9b6bbc950cb831b5ac983327092d30c99 } |
この結果をwpa_supplicant.confに追記する。
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=JP network={ ssid="lain" #psk="PresentDayPresentTime" psk=6dad3850d260d3dd40cc8fd735110bd9b6bbc950cb831b5ac983327092d30c99 key_mgmt=WPA-PSK pairwise=CCMP group=CCMP } |
Ctrl+O Ctrl+X で書いて終了。
何も設定しなければ、再起動後にwpa_supplicantが上がって自動接続してくれる、はず。
つながらない場合は、$ sudo ipconfig wlan0 off → $ sudo ipconfig wlan0 on でWiFiインタフェースを再起動し、wpa_supplicantを強制的に叩いてみるなど。
WiFiを固定IPアドレスにする場合は、dhcpcd.confにSSID毎の設定を追加(Raspbian Stretchの場合)。
$ sudo nano /etc/dhcpcd.conf <既存の内容は消さないで、最後に追記> interface wlan0 ssid lain static ipaddress=192.168.7.7/24 static routers=192.168.7.1 static domain_name_servers=192.168.7.1 8.8.8.8 |
WiFiは繋がってるのにDHCPでアドレスが払い出されていない場合は、
$ sudo dhclient wlan0 として、強制DHCPリクエストを。
一般的な設定が終わったところで、次回はWaveshare 1.3" IPS LCD Hat特有の設定とか。