Headless_RaspberryPiをAirPlay_Receiverにする
2020/11/7+
USBスピーカ(JBL Pebbles)を接続した際の
考慮すべきことを纏めて追加した。
2020/11/6
初版
Headless RaspberryPi AirPlay Receiver
Headless RaspberryPi AirPlay Receiver
概要
Headless_RaspberryPiをAirPlay_Receiverにする。
RaspberryPiをAirPlay_Receiver(server)にして、iPhoneなどからオーディオデータをWiFi経由で受信してRaspberryPiのオーディオ出力で再生する。
そのためにshairport-syncをインストールする。
(shairport-syncは、shairportの後継にあたる。なお、オリジナルのshairportは保守を停止している)
インストール方法
以下を実行する:
# 関連ライブラリやツールのインストール
sudo apt update
sudo apt install libshairport2 autoconf libtool libdaemon-dev
sudo apt install git libpopt-dev libconfig-dev libasound2-dev libpulse-dev libavahi-client-dev libssl-dev libsoxr-dev
# shairport-syncのビルド
cd ~/Downloads
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
# ビルドしたバージョンの確認(表示)
./shairport-sync --version
3.3.7rc3-OpenSSL-Avahi-ALSA-pa-soxr-metadata-sysconfdir:/etc
# 属性などの変更
sudo groupadd -r shairport-sync
sudo useradd -r -M -g shairport-sync -s /usr/bin/nologin -G audio shairport-sync
# インストール
sudo make install
# systemdへの登録状況を確認し、有効化する
systemctl status shairport-sync
sudo systemctl enable shairport-sync
systemctl status shairport-sync
# デフォルトのオーディオ出力の設定(.confの変更)
cd /etc
sudo cp shairport-sync.conf shairport-sync.conf.original
sudo nano shairport-sync.conf
#以下の内容を置き換える:
/etc/shairport-sync.conf
general =
{
name = "%h";
interpolation = "soxr";
}
alsa =
{
output_device = "plughw:0";
mixer_device = "plughw:0";
}
上の内容は以下を意味する:
・AirPlayのデバイス名は、RaspberryPiのhostnameになる。
・"plughw:0"の部分は、実際にオーディオ出力するカード番号にする。
実際のカード番号を知るには以下を実行する:
$ aplay -l
**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: Device [USB Audio Device], デバイス 0: USB Audio [USB Audio]
サブデバイス: 0/1
サブデバイス #0: subdevice #0
カード 1: b1 [bcm2835 HDMI 1], デバイス 0: bcm2835 HDMI 1 [bcm2835 HDMI 1]
サブデバイス: 4/4
サブデバイス #0: subdevice #0
サブデバイス #1: subdevice #1
サブデバイス #2: subdevice #2
サブデバイス #3: subdevice #3
カード 2: Headphones [bcm2835 Headphones], デバイス 0: bcm2835 Headphones [bcm2835 Headphones]
サブデバイス: 4/4
サブデバイス #0: subdevice #0
サブデバイス #1: subdevice #1
サブデバイス #2: subdevice #2
サブデバイス #3: subdevice #3
この例では、[USB Audio Device]にオーディを出力したいので、カード番号は0になり .confの設定値としては、"plughw:0"になる。
起動
起動する場合、以下を実行する:
sudo systemctl start shairport-sync
# 設定(.conf)を変更した場合は以下を実行する:
sudo systemctl restart shairport-sync
接続
「iPhone、iPad、iPod touch から AirPlay でオーディオをストリーミングする」 を参考にして、iPhoneからRaspberryPiに接続する。上手くいけば、RaspberryPiの設定したオーディオ出力から音が出る。
トラブルシュート
・AirPlayとして接続してみて音が途切れるようなら
.confの「interpolation = "soxr";」をコメントアウトすると改善する可能性がある。(行の先頭に「//」を付ける)
・AirPlayとして接続してみて最大音量が小さい場合、
以下の命令を実行して音量を調整する。
alsamixer
アプリの接続実績
動作したアプリ:
YouTube,PrimeVideo,radiko,TVer,AmebaTV,
YouTubeMusic (最初は「AirPlayのデバイス名が見えない(接続できず)」の状態だったが、そのうち接続できるようになった)
動作しないアプリ:
・Hulu 動画が止まって音だけ流れる
その他
shairport-syncを起動したらlogoutしても動いているので必要ならlogoutする。
logout
RaspberryPi起動時に自動でAirPlayサーバーを起動しておきたい場合は、
次のようにサービスに登録させておく。
sudo service shairport-sync start
sudo systemctl enable shairport-sync.service
USBスピーカ(JBL Pebbles)を接続する
以下のUSBスピーカを接続した際の考慮点を纏めた:
JBL Pebbles
本スピーカは、音質は6000円くらいの価格のスピーカとしては 音質が良く評価できるが、音量調整については難がある。
以下、それについて述べる:
1.音量調整の挙動
(1)USBをPC(ubuntu20.04)に接続した場合、Pebblesの音量調整は動作する。
(Pebblesのツマミの動きに連動してPCの音量調整スライダーが動作する)
ただし、調整幅が粗いので、微調整はアプリ側の音量調整を使うことになる。
[AUX IN]入力にスマフォのヘッドフォン出力などを接続すると
自動的にスマフォのヘッドフォン出力がPebbleのスピーカに流れる。
このときもPebblesの音量調整は有効で、調整可能である。
(2)USBをRaspberryPiに接続した場合、Pebblesの音量調整は動作しない。
[AUX IN]入力にスマフォのヘッドフォン出力などを接続した場合も
同様に音量調整は動作しない。
(3)USBをPC(windows10)に接続した場合、Pebblesの音量調整は動作する。
(Pebblesのツマミの動きに連動してPCの音量調整スライダーが動作する)
「(1)のPC(ubuntu20.04)」のときよりも、調整幅が細かく使いやすい、
[AUX IN]入力にスマフォのヘッドフォン出力などを接続すると
自動的にスマフォのヘッドフォン出力がPebbleのスピーカに流れる。
このときもPebblesの音量調整は有効で、調整可能である。
以上、windows10に接続して使用するときは特に問題はない。
(4)USB接続をPCでなくUSB電源アダプターにした場合、
([AUX IN]入力を使用する場合)
Pebblesの音量調整は可能で調整幅が細かくなる。
(「(3)のPC(windows10)」のときと同様の調整幅になる)
2.結論
(1)USBスピーカとして使用している場合、
(=[AUX IN]に何も接続しない場合)
PC(ubuntu20.02)に接続したときは、Pebblesの音響調整は可能。
RaspberryPiに接続した場合、音量調整は不可能。
これは、UBS音量コントロールのドライバの違いのせいと考えられる。
このため、RaspberryPiでAirPlay-Receiverを動かす場合、
sshでログインしてalsamixerで音量調整する。
(2)アナログ入力のパワード・スピーカとして使用している場合、
(=[AUX IN]にアナログのオーディオ出力を接続している場合)
USBには電源としてUSB電源アダプターを接続することにより
Pebblesの音量調整が有効になる。
参考URL
・Raspberry Piにshairport-syncをインストールする
・ラズパイをAirPlayサーバーにしてオーディオ環境を快適にしてみた
・ざっくりとALSAとPulseAudioの関係
・UbuntuStudioTips/Setup/UbuntuSoundSystem
・Pirate Audio: Headphone Amp for Raspberry Pi
・USB Audio Adapter - Works with Raspberry Pi
以上
| 固定リンク
「RaspberryPi」カテゴリの記事
- Headless RaspberryPi(64bits)インストール方法(USB/SSD boot)(2021.06.16)
- Arduino-IDEでPicoを動かす(2021.04.01)
- Headless_RaspberryPiでSambaサーバーを動かす(2020.11.23)
- Headless_RaspberryPiでPirateAudioを使用する(2020.11.14)
- Headless_RaspberryPiをVolumioをインストールする(2020.11.08)
「AirPlay」カテゴリの記事
- Headless_RaspberryPiをAirPlay_Receiverにする(2020.11.05)
この記事へのコメントは終了しました。
コメント