Raspberry Pi Zero Wのいたずら
HOME BACK

はじめに

久しぶりにRaspberry Piをいじって、D級アンプ・キットと組み合わせてみた。
これに手持ちのRaspberry Piを転用したので、もう1台、Raspberry Piを購入したいと思い、検討してみたところ、Raspberry Pi Zeroが候補となった。

このRaspberry Pi Zero、値段は1,000円以下であるが、能力は手持ちのRaspberry Piよりも高いようである。
しかし、国内で入手しようとすると品薄で、しかも値段が高かったので、UKのPIMORONIから通販で購入することにした。
ただし、Raspberry Pi Zeroの在庫がなく、実際に購入したのは、技適の問題もあるようであるが、WiFi機能の付いたRaspberry Pi Zero Wである。
ついでに本体だけではなく、アダプター類も一緒に購入した。
ネットで注文してから10日後に到着し、送料込みで約2,500円であった。
アダプター類は写真左からUSB(microB to A)変換アダプター、 GPIO用ピン、HDMIミニ変換プラグである。

Raspbian Jessie Liteのヘッドレス・インストール

Raspberry Pi Zero WにインストールするOSとして、Raspberry Pi+MAX98357AにもインストールしたRaspbian Jessie Liteを採用した。
インストールの方法であるが、通常はRaspberry Pi Zero Wにモニターとキーボードを接続して行うが、それらを省いて、コントロール用のWin7PCとLANで接続してSSHでアクセスするヘッドレス・インストールにトライしてみる。

写真左がインストールのセットアップであるが、Raspberry Pi Zero Wにはモバイル・バッテリーへ接続する電源ケーブルとUSB-LAN変換アダプター(TM-microUSBLAN)が接続されている。
USB-LAN変換アダプターにはLANケーブルが接続され、Win7PCからSSHでコントロールされる。

インストールの手順は
1 OSのダウンロード
2 マイクロSDカードへのコピー
3 SSHの有効化
4 Win7PCとのLAN接続
5 各種設定
となる。

1 OSのダウンロード
2 マイクロSDカードへのコピー
については、このメモを参照してもらいたい。
なお、今回、ダウンロードしたのは2017-04-10-raspbian-jessie-liteである。

3 SSHの有効化
Raspbian Jessie Liteでは以前のRaspbianとは違い、セキュリティーの観点からデフォルトでSSHが有効になっていない。
そのため、Raspbianをヘッドレスインストールする (SSHの有効化)を参照して、マイクロSDカードにコピーしたOSに空のsshファイル(テキスト型式)を追加した。

4 Win7PCとのLAN接続
SSHの有効化を施したマイクロSDカードをRaspberry Pi Zero Wに挿入、LANケーブルを接続、電源ケーブルをモバイル・バッテリーへ挿入するとLEDランプが点滅してブートが始まる。
SSHクライアントのTera Termを立ち上げて、ホストに
raspberrypi.local
とタイプすると接続されるので、
id pi
pass raspberry
でログインできる。
もちろん、DHPCサーバーから割り当てられるIPを推測して接続することも出来るが、こちらの方が簡単である。

5 各種設定
ログイン後、raspi-configを立ち上げて、必要な設定を行う。
$ sudo raspi-config

筆者が実施した設定箇所は以下のとおりである。
1 Change User Password
4 Localisation Options
>I2 Change Timezone
>I4 Change Wi-fi Country
5 Interfacing Options
>P2 SSH
>P8 Remote GPIO
7 Advanced Options
>A1 Expand Filesystem
>A3 Memory Split

インターフェース関係の状況は以下のとおりである。
$ ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:e0:4c:36:0d:55
inet addr:192.168.0.129 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::898:fbb1:2ac8:f1ee/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:9464 errors:0 dropped:0 overruns:0 frame:0
TX packets:7194 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10677435 (10.1 MiB) TX bytes:1372297 (1.3 MiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:264 errors:0 dropped:0 overruns:0 frame:0
TX packets:264 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:21840 (21.3 KiB) TX bytes:21840 (21.3 KiB)

wlan0 Link encap:Ethernet HWaddr b8:27:eb:86:b2:21
inet6 addr: fe80::64dc:c676:3800:aca4/64 Scope:Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

USB-LAN変換アダプターはeth0と認識されているので、IPの固定化を行った。
設定するファイルは/etc/dhcpcd.confで以下を付け加えた。
なお、192.168.0.89は本機に割り振ったIPである。
$sudo vi /etc/dhcpcd.conf
interface eth0
static ip_address=192.168.0.89/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

Raspberry Pi Zero W + pHAT DAC

とりあえず、基本設定が終了したので応用してみるが、やはりオーディオ関連ですかね。
Raspberry Pi Zero W と pHAT DACを組み合わせてみます。

追補 Raspbian Stretch Liteのヘッドレス・インストール(WiFI編)

RaspbianがJessieからStrechにバージョンアップしたので、2017-09-07-raspbian-stretch-liteをヘッドレス・インストールしWiFiがすぐに使えるようにしてみる。
参考にしたのはraspberrypi.orgのRaspbian Stretch Headless Setup Procedureである。
手順としては上述した「Raspbian Jessie Liteのヘッドレス・インストール」とほぼ同じであるが、3に一手間必要となる。
1 OSのダウンロード
2 マイクロSDカードへのコピー
3 SSHの有効化、wpa_supplicant.confの作成
4 Win7PCとのWiFi接続
5 各種設定

3 SSHの有効化、wpa_supplicant.confの作成
この作業を行う前にWindowsPCであれば、常にファイルの拡張子を表示させておくため、「拡張子の表示」を以下のように設定する。

[スタートメニュー] から [すべてのプログラム] − [アクセサリ] − [エクスプローラー] をクリックしてエクスプローラーを開きます。
[ALT] キーを押し、[ツール] → [フォルダオプション]と開きます。 [表示] タブを選択、[登録されている拡張子は選択しない] のチェックを外します。

次にマイクロSDカードにコピーしたOSにssh.txtとwpa_supplicant.conf.txtの2つのファイル(テキスト型式)を追加する。

次にwpa_supplicant.conf.txtに以下の内容を記入する。
なお、ssidとpassは使用しているWifiルータのものを記入する。

  ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
ssid="ssid"
scan_ssid=1
psk="pass"
key_mgmt=WPA-PSK
}

最後にssh.txtをsshへ、wpa_supplicant.conf.txtをwpa_supplicant.confへと名前を変更する。

4 Win7PCとのWiFi接続
SSHの有効化、wpa_supplicant.confの作成を施したマイクロSDカードをRaspberry Pi Zero Wに挿入、電源ケーブルをモバイル・バッテリーへ挿入するとLEDランプが点滅してブートが始まる。
SSHクライアントのTera Termを立ち上げて、ホストに
raspberrypi.local
とタイプすると接続されるので、
id pi
pass raspberry
でログインできる。

WiFi接続でもIPを固定化することができる。
設定するファイルは/etc/dhcpcd.confで以下を付け加える。
なお、192.168.0.90は本機に割り振ったIPである。
$sudo vi /etc/dhcpcd.conf
interface wlan0
static ip_address=192.168.0.90/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

当然、WiFi接続ではUSB-LAN変換アダプターは不要なので、非常にすっきりとしている。

追補2 Raspbian Stretch Lite + PCM5102A DAC

Raspbian Stretch Liteをインストールしたので、既存ミュージック・サーバーのRaspberry Pi+PCM5102A DACで使用している初期パージョンのRaspberry PiをRaspberry Pi Zero Wに置き換えてみた。
使用しているDAC基板はDIYINHK384kHz/32Bit PCM5102A DAC, I2S input, Ultra Low Noise Regulatorである。
このPCM5102ARaspberry Pi Zero W + pHAT DACのpHAT DACでも使用されている。

I2S接続
Raspberry Pi Zero WのGPIOとPCM5102A DAC基板とをI2S接続するが、左写真がGPIOのピン・アサインであり、この
BCK(PIN 12)
LRCK(PIN 35)
GND(PIN 39)
DATA(PIN 40)
を4本の線でDAC基板のBCK、LRCK、GND、DATAと結線する。

なお、GPIOのPIN4が電源の+5V、PIN6が電源のGNDなので、電源はUSB端子を使用せず、このPIN4、PIN6へ供給した。

写真左側が初期パージョンのRaspberry Pi、右側がRaspberry Pi Zeroに換装後である。

DAC・MPD関連の設定
DAC・MPD関連の設定をする前に、raspi-configを立ち上げてupdateを実施する。
$ sudo raspi-config
8 Update

次にPCM5102Aを使用するための設定を施す。
以下のファイルを作成する。
$ sudo vi /etc/asound.conf
pcm.!default {
type hw card 0
}
ctl.!default {
type hw card 0
}

/boot/config.txtに以下を追記する。
$ sudo vi /boot/config.txt
dtoverlay=hifiberry-dac

これでリブートしてaplay -lで確認すると、ドライバー等が組み込まれたことが判る。
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: sndrpihifiberry [snd_rpi_hifiberry_dac], device 0: HifiBerry DAC HiFi pcm5102a-hifi-0 []
Subdevices: 0/1
Subdevice #0: subdevice #0

次はMPD関連の設定を行う。
$sudo apt-get install mpd mpc
$sudo apt-get install alsa-utils

MPDの設定ファイルである /etc/mpd.conf を編集する。
$sudo vi /etc/mpd.conf
最初に bind_to_address という行を探し#でコメントアウトする。
#bind_to_address "localhost"

次の箇所を以下のように編集する。
audio_output {
type "alsa"
name "My ALSA Device"
device "hw:1,0" # optional
# mixer_type "hardware" # optional
# mixer_device "default" # optional
# mixer_control "PCM" # optional
# mixer_index "0" # optional
}

今回は32GBのマイクロSDカードを使用したので、楽曲ファイルはマイクロSDカード本体に格納することにした。
/ に music ディレクトリーを作りマウントし、/var/lib/mpd/musicへリンクする。
$sudo mkdir /music
$sudo mount -a
$sudo ln -s /music /var/lib/mpd/music

> 設定が終わったら、MPDを下記のコマンドで再起動する。
sudo /etc/init.d/mpd restart
[ ok ] Restarting mpd (via systemctl): mpd.service

次にUSBメモリーの自動マウントの設定を行う。
$sudo apt-get install usbmount
$sudo ln -s /media /var/lib/mpd/music

ただし、Raspbian Stretch LiteではUSBメモリーの自動マウントを有効にするためには、以下をslaveからsharedに変更する。
$sudo vi /lib/systemd/system/systemd-udevd.service
MountFlags=shared
リブートすると設定が有効になる。

次にsamba関連の2つのソフトをインストールする。
$sudo apt-get install samba
$sudo apt-get install samba-common-bin
sambaの設定ファイルを編集し下記を追記する。
$sudo vi /etc/samba/smb.conf
[music]
comment = music
read only = no
locking = no
path = /music
guest ok = yes
force user = root

次にpasswdを設定する。
今回はsambaとした。
$sudo smbpasswd -a root
New SMB password:samba
Retype new SMB password:samba

sambaを再起動して完了である。
$sudo service samba restart
Failed to restart samba.service: Unit samba.service is masked.
再起動出来なかったが、それでもWindowsPCから\\192.168.0.90\musicでアクセスすると問題なく/musicに到達し、楽曲ファイルも格納できた。

DAC自体の特性は、初期パージョンのRaspberry PiでもRaspberry Pi Zeroでも同じであるが、Music ServerをWiFiでコントロールするメリットとして、DACのアナログ出力ノイズが低減することが挙げられる。
Raspberry Pi+PCM5102A DACはLANケーブルでコントロールしており、残留ノイズは0.1mVであったが、Raspberry Pi Zero WのWiFIによるコントロールでは0.02mVに激減した。

OSとMPDのバージョンは以下のとおりである。
$ uname -a
Linux raspberrypi 4.9.41+ #1023 Tue Aug 8 15:47:12 BST 2017 armv6l GNU/Linux

$ mpd -V
Music Player Daemon 0.19.21

HOME BACK

Last Update 3/Dec/2017 by mac