これらの日 Reddit で「Linux 上の AirPlay 2」という投稿を見ました。その中で、Shairport Sync プロジェクトが推奨されていましたので、自宅で使用している Raspberry Pi の AirPlay をアップグレードすることにしました。興味のある方は元の記事を直接ご覧ください。ドキュメントは非常に詳細に書かれています。
準備#
-
Linux または FreeBSD デバイス(性能は Raspberry Pi 2 以上である必要があります)
-
ポート 319 と 320 が使用されていないこと
-
スピーカー(最適なのは 3.5mm ジャックです)
インストールの開始#
まず、システムを最新の状態に更新することをお勧めします。これにより、さまざまな不明な問題が大幅に減少します。
sudo apt-get update #アップデートの確認
sudo apt-get upgrade #アップデートの実行
Wi-Fi パワーセーブの無効化#
デバイスが Wi-Fi 接続を使用している場合、パワーセーブを無効にする必要があります。これにより、インストール後にデバイスがパワーセーブモードに入ってスピーカーが見つからなくなることを防ぐことができます。
iwconfig wlan0 power off
依存関係のインストール#
apt install --no-install-recommends build-essential git xxd xmltoman \ autoconf automake libtool libpopt-dev libconfig-dev libasound2-dev \ avahi-daemon libavahi-client-dev libssl-dev libsoxr-dev libplist-dev \ libsodium-dev libavutil-dev libavcodec-dev libavformat-dev uuid-dev libgcrypt-dev
nqptp#
nqptpは Shairport Sync の重要な依存関係であり、手動でコンパイルしてインストールする必要があります。
git clone https://github.com/mikebrady/nqptp.git #プロジェクトのダウンロード
cd nqptp #プロジェクトディレクトリに移動
autoreconf -fi #コンパイル
./configure --with-systemd-startup #設定
make #ビルド
make install #インストール
インストールが完了したら、nqptp を起動する必要があります。
systemctl enable nqptp #自動起動の設定
systemctl start nqptp #nqptpの起動
sps-alsa-explore#
Shairport Sync をサポートするためのツールで、現在のオーディオ出力デバイスを直感的に表示することができます。手動でコンパイルしてインストールする必要があります。
git clone https://github.com/mikebrady/sps-alsa-explore.git #プロジェクトのダウンロード
cd sps-alsa-explore #プロジェクトディレクトリに移動
autoreconf -fi #コンパイル
./configure #設定
make #ビルド
スピーカーを Raspberry Pi に接続し、sps-alsa-explore ディレクトリで./sps-alsa-explore
を実行します:
Device Full Name:"hw:Headphones"
とPossible mixers:"Headphone"
をメモして、後続の設定ファイルで使用します。
#
Shairport Sync のコンパイルとインストール#
git clone https://github.com/mikebrady/shairport-sync.git #プロジェクトのダウンロード
cd shairport-sync #プロジェクトディレクトリに移動
git checkout development #developmentブランチに切り替え
autoreconf -fi #コンパイル
./configure --sysconfdir=/etc --with-alsa --with-soxr --with-avahi --with-ssl=openssl --with-systemd --with-airplay-2 #設定
make -j #ビルド
make install #インストール
#
Shairport Sync の設定#
Shairport Sync の設定ファイルのパスは/etc/shairport-sync.conf
です。ここで、出力デバイスを設定する必要があります。vi/vim に慣れている方は、sudo vi /etc/shairport-sync.conf
で直接設定できます。output_device
とmixer_control_name
は、先ほどの./sps-alsa-explore
の結果から見つけることができます。
alsa =
{
output_device = "hw:Headphones";
mixer_control_name = "Headphone";
};
設定ファイルには多くのコメントがありますので、必要に応じて設定してください。
Shairport Sync の起動#
systemctl enable shairport-sync #自動起動の設定
systemctl start shairport-sync #Shairport Syncの起動
HomeKit への追加#
アクセサリを追加する際に、「コードがないまたはスキャンできない場合」をクリックすると、ホームアプリが AirPlay 2 デバイスを検出します。クリックして追加できます。
問題に遭遇した場合#
「マルチルームオーディオシステム」で再生する際に遅延が発生する場合、Shairport Syncの Issues を調べたところ、すべての人にこの問題があるわけではないことがわかりました。通常、HDMI 接続のデバイスは約 100 ミリ秒の遅延があります。ドキュメントのトラブルシューティングセクションには、遅延を手動で設定する方法が記載されています。設定ファイル/etc/shairport-sync.conf
には、audio_backend_latency_offset_in_seconds
という設定項目があります(単位は秒):
他の問題がある場合は、トラブルシューティングのドキュメントを参照してください。
使用感想#
いくつかの日を使ってみた結果、まあまあ使える状態だと感じました。これにより、「マルチルームオーディオシステム」の機能を体験することができましたが、音楽やポッドキャストなどのオーディオに限定されます。AirPlay の遅延は頭の痛い問題であり、多くのビデオソフトウェアは AirPlay に対応していないため、音声と映像が同期しない問題が発生します。AirPlay に対応している場合でも、バッファリングの遅延が存在します。ただし、オーディオプレーヤーとしては、「マルチルームオーディオシステム」で非常に便利です。
もちろん、手間をかけたくない人には、Airport Express 2 (A1392)がより良い選択肢かもしれません。簡単な設定でスピーカーを AirPlay 2 に対応させることができます。中古市場では 150〜200 の価格で入手できます。