2019年8月20日火曜日

Raspberry Pi ZeroとpHAC DACでAirPlayオーディオ再生

こんばんは,季那狐です!

一年前に買ったRaspberryPi ZeroとpHAC DACを発掘しましたので,AirPlayで再生できるようにしてみました.
失敗しまくって4回くらいOSインストールやり直したので,成功例だけ載せておきます.


今回使用したもの
・Raspberry Pi Zero WH:https://www.switch-science.com/catalog/3646/
 (Raspbian Buster with Desktop 2019-06-20)
・pHAT DAC:https://www.switch-science.com/catalog/3187/
・Mac Book Pro : macOS Mojave 10.14.5
・microSD 8GB
・microSDカードリーダー:https://www.amazon.co.jp/Transcend-Super-カードリーダー-microSDXC-TS-RDF5K/dp/B009D79VH4
・microUSB-USB-ACアダプタ(microUSBから電源取れればOK)
・適当なイヤホンorスピーカー


完成図


ラズパイの上にpHAT DACが乗っかってる感じです.
挿すべきコードは電源(microUSB)と出力(イヤホンジャック)だけ!シンプル!

pHAT DACについて...
ラズパイで手軽にそこそこ良い音を出そうって子
ピンソケットは自分ではんだ付けする必要あり.
サイズがZeroに合わせてあるので小さく収まって良い感じです


1,ラズパイOSインストール
公式サイト(https://www.raspberrypi.org/downloads/raspbian/)から最新版のRaspbianをダウンロード.
3つくらいあるんですが,今回はwith desktopというのを選びました.(2019-06-20-raspbian-buster.zipがダウンロードされます.)
最近,stretchからbusterに名前を変更したみたいでビビってたんですが,busterでも問題なく動きました.

その間に,microSDの初期化.ディスクユーティリティからexFatで初期化しました.(詳細はググって)

OSのインストールには色々な方法があるんですが,今回はEtcherを使いました.Etcherはzipのまま書き込みが出来ること,間違ってHDDなどに書き込む心配がないことからオススメ.
サイトから最新版をダウンロード,インストールしてください.
Select Image:さっきダウンロードしたOSのzipファイル
Select Target:microSD
を選んでFlash!
数分かかります

2,SSH設定
Flashが終わったら一度microSDを取り外し,再度接続.
wifi経由でのsshの設定をするため,sshファイルとwifi関係の設定を書き込んでいきます.

microSDの名前がbootになっているはずなので,boot直下にsshというファイルを作ります.
$ touch /Volumes/boot/ssh

configファイルを作って以下の設定を書き込む.SSIDとパスワードは変更してください.
$ vim wpa_supplicant.conf

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

network={
    ssid="接続するwi-fiのSSID"
    psk="SSIDのパスワード"
}

ここまで出来たらmicroSDを外してラズパイに付けます.

3,Raspberry Pi ZeroとpHAT DAC初期設定

pHAT DACは半田付けの必要があるので,ピンを付けて,ラズパイと合体させます.
ラズパイにmicroUSB電源を挿してスイッチオン(右側のmicroUSB端子)
ラズパイにssh接続します.
ssh pi@raspberrypi.local

こんな感じになったら接続完了.どんどん命令を打ち込んでいく
pi@raspberrypi:$

まずはおまじない.初回はめちゃくちゃ長い.raspbianのバージョンが古いともっと長い
$ sudo apt-get update
$ sudo apt-get upgrade

config画面を開いてオーディオの出力先設定
$ sudo raspi config
Advanced Options>AudioでForce 3.5mm (‘headphone’) jackを選択

pHATの初期設定
$ curl https://get.pimoroni.com/hpatdac | bash


4,AirPlay設定
必要になるライブラリをまとめてダウンロード
$ sudo apt-get install git autoconf libdaemon-dev libpopt-dev libconfig-dev libasound2-dev libpulse-dev libavahi-client-dev libssl-dev libsoxr-dev

今回利用するのはshairport-syncというもの
gitからcloneしてmakeする.
$ git clone https://github.com/mikebrady/shairport-sync.git
$ cd shairport-sync
$ autoreconf -i -f
$ ./configure --sysconfdir=/etc --with-alsa --with-pa --with-avahi --with-ssl=openssl --with-metadata --with-soxr --with-systemd
$ make && sudo make install

ここで,shairpot-sync.confというファイルを編集.
私はこのconfが作成されてなくて毎回新規作成してたけど,conf開いて何も書いてなかったらmake失敗なのでやり直し.
$ sudo nano /etc/shairport-sync.conf

とりあえず,nameだけ変えれば大丈夫.
interpolation="soxr"にすると音が良くなるらしい.(わからぬ)
general =
{
 name = "AirPi";    //AirPlayサーバの名前(任意)
 interpolation = "soxr";
}

OS起動時にshairport-syncが起動するよう設定
$ sudo systemctl enable shairport-sync

起動
$ sudo systemctl start shairport-sync.service


iPhoneとかMacとかでMusicを開いてAirPlayで表示されたら接続
(画像はBluetoothイヤホン繋いでる時のもの
 私の今のイチオシアーティストsajou no hana)


接続できたら適当なイヤホンorスピーカーをpHATに接続して,再生!



5,終わり
紆余曲折しましたが,なんとかAirPlay接続できるようになりました.
conf作成されなかったのが今回の最大の敗因.なぜかはわからぬ

ここまでやってから知ったのですが,AirPlayってwifi使ってたんですね..
車とかで使おうと思ってたんですが,wifi繋げないんで使えませんね...
大人しくおうちの中で使う用にしようかな....

参考
ラズパイ設定
https://qiita.com/hishi/items/8bdfd9d72fa8fe2e7573
https://www.ukeyslabo.com/raspberry-pi/init-and-ssh/
AirPlay設定
https://dounokouno.com/2018/05/05/raspberry-pi-airplay-shairport-sync/