自我介绍
笔者系计算机系在校生,搞机生涯丰富,强迫症患者,喜欢自己给自己找事,想尽办法让生活过的方便一丢丢,多年果粉 & Nexus 粉一枚,未来的码农,目前深陷 Apple Loop 无法自拔。
前言
截至目前,你应该拥有了一块正常运行的树莓派,掌握了与他互动的两种方式(SSH 以及 VNC),本期让我们开始搞一个小东西,一款名叫 Shairplay 的应用。它可以让你的有线老音箱与树莓派结合,瞬间变成一款支持 AirPlay 的智能 Wi-Fi 音箱,你的 iOS 设备在家中可以无缝连接到同一音箱上,就像下图所示:
1. 更换软件源
刚才说过,这个功能的实现是通过一款叫做 Shairplay 的应用来实现的,我们可以直接在树莓派从软件源上下载安装该应用,但由于树莓派默认的软件源是国外的服务器,访问较慢,所以在开始之前我们把软件源更改为阿里云提供的高速镜像源。(必须感谢下阿里爸爸)
① SSH 登录至树莓派,输入 nano /etc/apt/sources.list
。
② 将文件按下图修改:(注意将原来的 deb-src 那一行的行首加一个 "#" 来注释掉原来的源)
阿里云镜像源:
deb http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib
③ 然后按 Ctrl + O,回车,Ctrl + X,保存退出。
④ 最后输入 sudo apt-get update && apt-get upgrade -y
更新,可以看到此时连接的速度已经快到飞起了,待更新完毕,继续下面的教程。
2. 安装 Shairplay
接下来就可以愉快的安装 Shairplay 了,一切根据 Github 上的教程走:
① 依次输入以下命令,安装 Shairplay 和必要依赖:
sudo apt-get install autoconf automake libtool
sudo apt-get install libltdl-dev libao-dev libavahi-compat-libdnssd-dev sudo apt-get install avahi-daemon
② 依次输入以下命令,来编译和安装 Shairplay:
git clone https://github.com/juhovh/shairplay.git
cd shairplay
./autogen.sh
./configure
sudo make install
③ 至此,你的 Shairplay 就安装完毕了。
3. 第一次运行 Shairplay
① 确保你在 shairplay 的路径下,输入 shairplay -a Shairplay
,看到以下输出,即成功运行:
② 此时使用你的 iOS 设备查找 Airplay 音箱,即可找到你的小音箱。
4. TrubleShoot (噪音问题)
如果你遇到音箱有莫名噪音的问题,除了使用共地滤波器解决一下之外,还可以尝试更改 Audio 的 PWM 模式,修改为图中样子(没有的话就新增),之后重启一下就好了。
5. 设置开机自启
截至目前,一旦我们关闭 SSH 的窗口,音箱就不能再用 Airplay 了。而当我们想使用的时候,也需要手动打开,所以设置开机自动启动就是件必备的事情:
① 建立 shairplay 服务,输入:
cd /etc/init.d/
sudo touch shairplay
sudo nano shairplay
② 开启启动脚本,复制粘贴以下:
#!/bin/bash
#
# This starts and stops shairplay
#
### BEGIN INIT INFO
# Provides: shairplay
# Required-Start: $network
# Required-Stop:
# Short-Description: Free portable AirPlay server implementation similar to ShairPort.
# Description: Free portable AirPlay server implementation similar to ShairPort.
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
# Source function library.
. /lib/lsb/init-functions
DAEMON="/usr/local/bin/shairplay"
DAEMON_ARGS="-a Wohnzimmer" # 这里的 Wohnzimmer 可以替换成你想要的音箱名称
AIRPORT_KEY_DIR="/usr/local/share/shairplay"
[ -x $binary ] || exit 0
RETVAL=0
start() {
echo -n "Starting shairplay: "
start-stop-daemon --start --quiet --chdir $AIRPORT_KEY_DIR \
--exec "$DAEMON" -b --oknodo -- $DAEMON_ARGS
log_end_msg $?
}
stop() {
echo -n "Shutting down shairplay: "
start-stop-daemon --stop --quiet --exec "$DAEMON" \
--retry 1 --oknodo
log_end_msg $?
}
restart() {
stop
sleep 1
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status shairplay
;;
restart)
restart
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
;;
esac
exit 0
③ 依旧 Ctrl+O,回车, Ctrl+X 退出。
④ 输入 chmod +x /etc/init.d/shairplay
,赋予其可执行权限。
⑤ 输入 update-rc.d shairplay defaults
,更新 Shairplay 设置。
⑥ 输入 cd ~
回到用户目录。
⑦ 输入以下命令,储存 airport.key。
sudo mkdir /usr/local/share/shairplay
sudo cp shairplay/airport.key /usr/local/share/shairplay
⑧ 输入 nano /etc/rc.local,复制以下脚本:
# Don't run multiple instances - start just one screen, named "shairplay":
[[ $(screen -list | grep shairplay) == '' ]] &&
screen -dmS shairplay sh
# Keep shairplay perpetually running. When it crashes, we can just SIGKILL it, and it comes back:
[[ $(ps aux | grep -v grep | grep pts | grep '/usr/bin/shairplay') == '' ]] &&
screen -S shairplay -p 0 -X stuff "while true; do /usr/bin/shairplay --apname=Airamaplay --ao_devicename=default; sleep 2s; done
"
⑨ 粘贴到 exit 0 之前,Ctrl+O,回车,Ctrl+X,退出。
⑩ 输入 reboot,重启,开机就会自动启动 Shairplay 了。
Enjoy it.
我的新浪微博:@Sunbelife,欢迎和我讨论和分享好玩的东西。
附:
1、调整音量,可在树莓派输入:alsamixer 调整。
2、出现:The following packages have unmet dependencies: libavahi-compat-libdnssd-dev 问题可以查看:https://www.douban.com/note/619209826/,如果无法解决,请更换其他软件源。
3、如果不能成功自启,请检查 screen 是不是没有装上。