自我介绍

笔者系计算机系在校生,搞机生涯丰富,强迫症患者,喜欢自己给自己找事,想尽办法让生活过的方便一丢丢,多年果粉 & Nexus 粉一枚,未来的码农,目前深陷 Apple Loop 无法自拔。

 上一期:跟着上手树莓派(二)—— SSH & VNC 连接


前言

截至目前,你应该拥有了一块正常运行的树莓派,掌握了与他互动的两种方式(SSH 以及 VNC),本期让我们开始搞一个小东西,一款名叫 Shairplay 的应用。它可以让你的有线老音箱与树莓派结合,瞬间变成一款支持 AirPlay 的智能 Wi-Fi 音箱,你的 iOS 设备在家中可以无缝连接到同一音箱上,就像下图所示:

 macOS 上可以按住 Option,点击音量,选择把音频从音箱输出。

                                                     

 iOS 上也可以在音乐界面或控制中心里选择从音箱输出。

1. 更换软件源

刚才说过,这个功能的实现是通过一款叫做 Shairplay 的应用来实现的,我们可以直接在树莓派从软件源上下载安装该应用,但由于树莓派默认的软件源是国外的服务器,访问较慢,所以在开始之前我们把软件源更改为阿里云提供的高速镜像源。(必须感谢下阿里爸爸)

   ①  SSH 登录至树莓派,输入 nano /etc/apt/sources.list

   ②  将文件按下图修改:(注意将原来的 deb-src 那一行的行首加一个 "#" 来注释掉原来的源)

8CCD6205-2F7F-4C7A-8133-BEF021555B89

阿里云镜像源:

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 更新,可以看到此时连接的速度已经快到飞起了,待更新完毕,继续下面的教程。

0C011034-0FBA-4C21-B144-4DF879867432

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 音箱,即可找到你的小音箱。

IMG_3194

4. TrubleShoot (噪音问题)

如果你遇到音箱有莫名噪音的问题,除了使用共地滤波器解决一下之外,还可以尝试更改 Audio 的 PWM 模式,修改为图中样子(没有的话就新增),之后重启一下就好了。

7C76F889-3A61-4DD8-B154-BB775AE425A6

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 是不是没有装上。