树莓派Airplay将有线音箱变成WiFi音箱
方案选择
因为是想要作为WiFi音箱使用,方案二shairport-sync更适合我
视频airplay
教程:https://zhuanlan.zhihu.com/p/340535327
项目地址:https://github.com/FD-/RPiPlay
音频airplay
教程:https://sspai.com/post/74318
项目地址:https://github.com/mikebrady/shairport-sync
shairport-sync安装
树莓派系统选择
建议使用树莓派官方的Raspberry Pi OS,驱动全面少踩坑。之前将树莓派当做小服务器在用,一直跑的Rocky Linux,配置音箱的时候发现缺少驱动,找不到声卡。
编译安装
关于如何安装参考上面的教程即可
- nqptp是 Shairport Sync 监控时间的重要依赖
https://github.com/mikebrady/nqptp.git - sps-alsa-explore帮助配置Shairport Sync
https://github.com/mikebrady/sps-alsa-explore.git - Shairport Sync本体
https://github.com/mikebrady/shairport-sync
可选方案docker
项目官方提供了docker方案: https://hub.docker.com/r/mikebrady/shairport-sync
1 | docker run -d --restart unless-stopped --net host --device /dev/snd \ |
shairport-sync配置
使用sps-alsa-explore的建议配置即可
踩坑记录
grep output_device查看配置选项为hw:
后接字符串
1 | root@rpi0:~# grep output_device ./shairport-sync/audio_alsa.c -C 2 |
aplay显示的设备和hw:
样式对不上
1 | root@rpi0:~# aplay -l |
查资料后确认,具体对应关系为hw:card名称或编号:子设备编号
,而shairport-sync只需要用到card这一层,也即hw:0
https://superuser.com/questions/53957/what-do-alsa-devices-like-hw0-0-mean-how-do-i-figure-out-which-to-use
关闭WiFi节能模式
为了防止设备WiFi设备休眠,导致查找不到音箱,需要关闭节能模式
1 | iw dev wlan0 set power_save off |
其他小问题修复
目录权限问题
journal -u shairport-sync
发现有报错提示没有目录权限,不影响正常使用
1 | mkdir -p /home/shairport-sync/.config/pulse |
最大音量调整
- 为了避免扰民,可以使用
alsamixer
设置树莓派的最大输出音量 /etc/shairport-sync.conf
中有音量相关的配置,有待尝试
后续计划
- 使用单独usb声卡,解决自带3.5mm接口的底噪问题
- 重新连接后音量设置有时不会记忆的问题解决
底噪问题解决
京东18块购入海贝思USB声卡,插入后免驱运行,修改配置为hw:3
和Speaker
,重启服务后获得了更大的音量上限和更低的底噪(还是有,小了很多)
1 | output_device = "hw:3"; |