用樹莓派做音頻airplay效果不錯,老書架音箱又可以用起來了。

實現方式是shairplay-sync,利用HDMI轉VGA線上的3.5mm音頻輸出孔,因為我的樹莓派2B的3.5mm音視頻輸出口沒有合適的轉接頭。

我用的是Arch Linux ARM,需要手動開啓HDMI輸出。修改/boot/config.txt

1
2
3
4
hdmi_force_hotplug=1
hdmi_drive=2
config_hdmi_boost=4
dtparam=audio=on

重啓後,用alsamixer把樹莓派音量調整到最大值。

AUR里沒有針對ARM的shairplay-sync,需要手動編譯:

1
git clone https://github.com/mikebrady/shairport-sync.git
1
2
# 生成configure
autoreconf -i -f
1
2
3
4
5
6
# 針對systemd編譯
./configure --sysconfdir=/etc --with-alsa --with-avahi --with-ssl=openssl --with-metadata --with-soxr --with-systemd
# END
1
2
3
4
5
6
7
8
# 如果shairport-sync用戶不存在,新增用戶和用戶組
getent group shairport-sync &>/dev/null || sudo groupadd -r shairport-sync >/dev/null
getent passwd shairport-sync &> /dev/null || sudo useradd -r -M -g shairport-sync -s /usr/bin/nologin -G audio shairport-sync >/dev/null
# END

airplay默認的服務名和樹莓派的hostname一致,可以到/etc/shairport-sync.conf里修改:

1
2
3
general = {
name = "pi";
}

FAQ

ALSA lib confmisc.c:767:(parse_card) cannot find card ‘0’

樹莓派沒聲音,嘗試用mpg123播放mp3時報這個錯。解決辦法是在/boot/config.txt里增加dtparam=audio=on