Network AudioをRaspberry Piで その2(音だしとAirPlay)

Air Playのインストールをしたいと思います。

最終的にはUSB-DACでアンプから音を出す事をしたいわけですが、

まずは、イヤホンジャックから音を出しましょう。

 

参考にしたサイトはここ

Raspberry pi

UbuntuをAirPlayの母艦にする - Shairport - DIMENSION 2.00

/usr/share/sound/alsa

にサンプルの音源があるので、vlcをapt-getして音を鳴らしましょう。

鳴ったら問題ないです。

鳴らない場合は、Sound cardの設定を見直しましょう

sudo amixer cset numid=3 1

と設定してみましょう。末尾の1がイヤホンジャック。2にするとHDMI出力になるようです。

やってみた結果、音が小さい!と言う人は、

sudo amixer controls

と打ってPCM Playback Volumeと出たnumidを覚えておいて

amixer cset numid=1 98%

とボリューム調整してみましょう。

AirPlayエミュレーターShairportのインストール

では音も鳴った事ですので、目的のものをインストールします。

sudo apt-get install git libao-dev libssl-dev libcrypt-openssl-rsa-perl libio-socket-inet6-perl libwww-perl avahi-utils libmodule-build-perl

ビルドする為のツールをインストールしたら、

githubからshairportのコードを落としてきてビルドする。

 

git clone https://github.com/abrasive/shairport.git
cd shairport/
./configure
make

ビルドが通ったら、shairportを起動させる。名前は任意。AirPlayPiで起動させる

./shairport.pl -a "AirPlayPi"

同じネットワーク上のiTunesから見える様になるか確認

f:id:tront1982:20151026231029p:plain

見えました。これで音が鳴ればshairport動作確認完了です。

その次に、インストールしてデーモンとして登録しましょう。

sudo make install

install -D -m 0755 hairtunes /usr/local/bin/hairtunes

install -D -m 0755 shairport.pl /usr/local/bin/shairport.pl

install -D -m 0755 shairport /usr/local/bin/shairport

 

sudo cp -a shairport.init.sample /etc/init.d/shairport

 

 

 

 

次はいよいよUSB-DACとの接続です。...といってもまだ買ってないので記事のアップはちょっと先になりそう。年末までには欲しい!でもお金がない(|||| ToT)

 

 

参考

Raspberry PiでUSBスピーカーをAirPlay対応する | count0.org

Raspberry Piを「AirPlay化」して音楽をストリーミングする方法 | ライフハッカー[日本版]

 

追記

ALSAエラーでAirPlayが急に動作しなくなったので調べてみた

./configure 

Configuring Shairport

OpenSSL found

libao found

PulseAudio or its dev package not found

ALSA or its dev package not found

Avahi client or its dev package not found

getopt.h found

dns_sd.h not found

CFLAGS:

LDFLAGS: -lm -lpthread -lssl -lcrypto -lao

Configure successful. You may now build with 'make'

 

こんな感じでエラーが出てました。

なのでドライバのインストールを実行

sudo apt-get install libasound2-dev

sudo apt-get install libpulse-dev

これでエラーがなくなるはず 

 

追記の追記

なんか急にAirPlayがつながらなくなったので原因を調べてみた

$ ./shairport -a "AirPlay"

Starting Shairport 1.1.1-23-gd65b8e8

FATAL: could not bind any listen sockets!

Shutting down...

 こんなエラーが出た。

ポートがlisten状態にできないということらしいので

netstat -lnt

稼働中のインターネット接続 (サーバのみ)

Proto 受信-Q 送信-Q 内部アドレス            外部アドレス            状態       

tcp        0      0 0.0.0.0:5002            0.0.0.0:*               LISTEN     

tcp6       0      0 :::5002                 :::*                    LISTEN    

 となっていることを確認。5002ポートでshairportは動作しているので、すでにLISTEN状態になっているところにさらに起動しようとしてエラーになっていたみたい。

init.dに登録してある設定を全部削除してデーモンも消したらエラーが解消された。

init.dの登録してあると./shairport -a AirPlayを実行できなさそうなことまでわかった。

init.dに登録してあれば起動時に自動でAirPlayから見えるはずなのに見えないので、スクリプトの解析を行う