Raspberry PiをAirPlayサーバにする
Raspberry PiにShairport Syncをインストールした時のメモ。 AirPlayはBluetoothのようにペアリングが必要なく家に帰ってきてWifiに接続するだけでワイアレスでスマホから音楽をかけられるのでたいへん便利。
Shairportには色々な派生バージョンがあるけど、評判のいいShairport Syncをチョイス。 長いので以下Shairportと書くことにする。
Shairport Syncのインストール
基本的にはREADME.mdの通り。
必要なパッケージのインストール
sudo apt-get install libshairport2 autoconf libtool libdaemon-dev libasound2-dev libpopt-dev libconfig-dev avahi-daemon libavahi-client-dev libssl-dev libsoxr-dev
libsoxr-dev(The SoX Resampler)は音を良くする(?)ためのライブラリ。あってもなくても良いけど使うとCPU負荷が高くなるらしい。
ビルド
git clone https://github.com/mikebrady/shairport-sync.git cd shairport-sync autoreconf -i -f ./configure --with-alsa --with-avahi --with-ssl=openssl --with-metadata --with-systemd make
SoXを使いたい人は./configureのオプションに --with-soxr を付け加える。
ユーザーの追加
Shairport用のユーザーを追加する必要があるらしいのでユーザーとグループを追加。
sudo getent group shairport-sync &>/dev/null || sudo groupadd -r shairport-sync >/dev/null sudo getent passwd shairport-sync &> /dev/null || sudo useradd -r -M -g shairport-sync -s /usr/bin/nologin -G audio shairport-sync >/dev/null
インストール
sudo make install
設定
/etc/shairport-sync.confが設定ファイル。
general = { name = "%H";
nameを変更するとAirPlayサーバーの表示名が変わる。お好みで変えると良いです。
USBから音声を出力する
デフォルトだと3.5mmのジャックから音声が出力されるけど音はあまりよくないのでUSBに繋いだDACから音を出すことにする。 DACを繋いでから
aplay -l
無事認識されてればcard 0以外のデバイスが表示される。
pi@raspberrypi:~ $ 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: CODEC [USB Audio CODEC], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0
上の例だとcard 1のSubdevice #0がUSBDAC。 このcard と Subdeviceの番号を覚えとく。
/etc/shairport-sync.confの中に
alsa = { output_device = "default";
とあるのでdefaultをhw:1,0と変える。数字は上で出てきたもの。
systemctl start shairport-sync
でShairport起動。
AirPlay出力先の設定
LAN内にAirPlayサーバーがある状態でコントロールセンター(名前合ってたっけ?)を開くとボリュームの下に見慣れない物がある。 設定がうまくいってればタップして出力先にAirPlayサーバーを選択できるはず。 後はテキトーに音楽を流してスピーカーから音が出れば終了です。お疲れ様でした。
ちなみにShairport "Sync"というだけあって映像と音楽の同期を取ってくれるのでYoutubeとか見てもちゃんと音ズレせずに再生される。すごい