手里有一个第一代的树莓派开发板,很长时间都没有使用过。今天尝试着搭建一个支持AirPlay的服务。顺便回顾一下树莓派的烧录、配置、远程登录等操作。
概述
AirPlay是苹果公司的在iOS4.2及OS X Mountain Lion中加入的一种播放技术,可以将iPhone、iPod touch、iPad及Mac(需要OS X Mountain Lion或更新版)上的视频镜像传送到支持Airplay的设备
前一段时间购买了“Beats X”这个耳机,被苹果设备间切换的流畅与无缝所吸引。想着时候可以让其他的音频设备也实现这样的无缝切换。查资料发现苹果自家的AirPlay技术可以实现这样的流畅体验(AirPlay与Beats X耳机的实现原理不同。前者是基于无线局域网,后者是蓝牙和icloud的协同配合。但是用户体方面很像,可以在苹果设备的控制中心控制)。基于网上的相关教程,通过树莓派运行一个Airplay服务,配合小音响实现相应的功能。
烧录系统
树莓派支持很多系统,这里选用的官方的raspbian系统。
下载后得到raspbian-jessie.zip
的压缩包,解压得到系统镜像raspbian-jessie.img
。通过Win32DiskImager
软件烧录镜像到一张空白SD卡上。
待烧录完毕,插入树莓派,上电即可开机。
登陆
一般来说,登陆到树莓派的系统有三种方式:
1. 开发板外接显示器和键盘鼠标。
2. 通过VNC远程桌面登陆
3. 通过SSH登陆
这次用树莓派,只是需要搭建AirPlay服务,所以SSH远程登陆时最省时省力的方式。
SSH登陆
目前的树莓派系统默认是关闭SSH服务的,所以无法在第一次直接使用SSH登陆,首先在刚才烧录好SD卡的根目录下建立一个名为SSH
文件(大写,且没有后缀名)。之后再插卡上电就可以使用了。
通过网线将树莓派和路由器相连,登陆路由器后台可以查询树莓派获得的IP地址。
知道树莓派的IP后可以通过软件PuTTY
进行登陆。
Host Name(or IP address)这里填写刚才查到的IP地址,Connection type选择SSH。其他选项默认,点击Open。依次输入树莓派的账户和密码:
VNC登陆
在SSH登陆的基础上,可以配置实现远程桌面登陆(图形化界面)。
由于系统中默认没有安装相关服务,所以首先需要安装。
执行如下命令:
sudo apt-get install tightvncserver
安装完毕后设置密码
vncpasswd
启动服务
tightvncserver -geometry 800x600 :1
通过软件RealVNC Viewer
远程登陆图形化界面
VNC Server 这里填写IP地址:控制台号码。刚才命令tightvncserver -geometry 800x600 :1
表示以800x600的分辨率开启1号控制台。所以这里输入192.168.123.5:1
。之后点击登陆,输入密码就可以看到以图形化界面访问到树莓派。
如果希望每次都使用VNC登陆树莓派,可以配置其开机启动。具体方法可以参考文章《VNC远程登录树莓派的图形界面》。其中有详细的配置方法。
无线链接
刚才的是通过网线使树莓派和电脑在同一个局域网下的。第一代的树莓派默认硬件是不支持无线网络的(貌似新的树莓派支持无线)。我采用了树莓派默认免驱的无线网卡RTL8188CUS
。通过USB接口和树莓派相连。在SSH登陆的情况下(SSH登陆对网络质量要求低)。通过命令:
lsusb
可以显示是否识别到了无线网卡
同时执行命令:
ifconfig
也可以查询无线网卡的信息(Wlan0)
通过一下命令, 搜素当前环境的无线网络。
sudo iwlist wlan0 scan | grep ESSID
通过如下命令备份原始文件。
sudo cp /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf.bak
通过命令
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
修改其中的内容
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1country=GBnetwork={ssid="your_wfi_Name"psk="your_wifi_PassWord"key_mgmt=WPA-PSK}
这里ssid
psk
key_mgmt
分别指无线网的名称、密码、加密方式。更改完后,CTRL+O
保存更改,CTRL+X
退出编辑器。
如果你用VNC的形式登录树莓派,则配置Wifi只要点击远程桌面右上角的Wifi图表进行连接即可。
更新软件
更改软件源
树莓派默认的软件源地址比较慢(亲测只有20~30 kb/s)。所以普遍会更关国内的镜像源
SSH方式登录树莓派
输入以下命令
nano /etc/apt/sources.list
复制一下内容在其中,并且通过#
号注销原来的地址
deb /raspbian/raspbian/ jessie main non-free contribdeb-src /raspbian/raspbian/ jessie main non-free contrib
效果如下
之后通过CTRL+O
保存更改,CTRL+X
退出编辑器。
执行更新
执行如下命令,进行更新系统软件。
sudo apt-get update && apt-get upgrade -y
安装Airplay服务
以下的整个安装都是基于一个开源项目进行的,这是项目主页(/juhovh/shairplay)。
其中给出了详细的安装方法。
安装依赖环境
通过SSH登录树莓派,分别执行如下命令
sudo apt-get install autoconf automake libtoolsudo apt-get install libltdl-dev libao-dev libavahi-compat-libdnssd-devsudo apt-get install avahi-daemon
从GitHub上获取源码
git clone /juhovh/shairplay.git
编译和安装
进入对应的目录
cd shairplay
依次执行如下四条指令,进行代码的编译和安装
./autogen.sh./configuremakesudo make install
启动
进入软件的当前目录/home/pi/shairplay
。执行如下命令即可开启服务
shairplay -a your_AirPlay_Name
此时ios设备或者Mac设备连接在同一个Wifi下,便可看到支持AirPlay的设备,名称就是your_AirPlay_Name
。点击连接后,苹果设备的音频信号就通过Wifi传输到树莓派的3.5mm音频口。这里可以接入音响的信号输入口。
完善
为了使树莓派每次上电后可以自动开启AirPlay服务。需要配置自启动,另外消除噪声。
自启动
创建启动脚本文件
依次执行如下命令,建立一个启动脚本文件。
cd /etc/init.d/touch shairplaynano 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-functionsDAEMON="/usr/local/bin/shairplay"DAEMON_ARGS="-a your_AirPlay_Name"AIRPORT_KEY_DIR="/usr/local/share/shairplay"[ -x $binary ] || exit 0RETVAL=0start() {echo -n "Starting shairplay: "start-stop-daemon --start --quiet --chdir $AIRPORT_KEY_DIR \--exec "$DAEMON" -b --oknodo -- $DAEMON_ARGSlog_end_msg $?}stop() {echo -n "Shutting down shairplay: "start-stop-daemon --stop --quiet --exec "$DAEMON" \--retry 1 --oknodolog_end_msg $?}restart() {stopsleep 1start}case "$1" instart)start;;stop)stop;;status)status shairplay;;restart)restart;;*)echo "Usage: $0 {start|stop|status|restart}";;esacexit 0
其中刚才的脚本文件中的DAEMON_ARGS="-a your_AirPlay_Name"
可以设置自己的名字。
DAEMON="/usr/local/bin/shairplay"DAEMON_ARGS="-a your_AirPlay_Name"AIRPORT_KEY_DIR="/usr/local/share/shairplay"
之后通过CTRL+O
保存更改,CTRL+X
退出编辑器。
加入执行权限
依次执行如下命令。赋予脚本执行权限,并且更新配置信息。
chmod +x /etc/init.d/shairplayupdate-rc.d shairplay defaults
执行如下命令,切换到用户目录
cd ~
依次执行如下命令,拷贝airport.key
mkdir /usr/local/share/shairplaycp shairplay/airport.key /usr/local/share/shairplay
输入一下命令,在etc/rc.local
中添加内容
nano /etc/rc.local
添加的内容如下(在exit 0之前)。
# 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"
之后通过CTRL+O
保存更改,CTRL+X
退出编辑器。
之后通过重启树莓派,就直接可以在苹果设备中选择AirPlay服务了。
消除噪音
如果音响输出有噪声,可以尝试树莓派Audio的pwm模式。
执行如下命令
sudo nano /boot/config.txt
在最后增加如下配置参数
dtparam=audio=onaudio_pwm_mode=2
之后通过CTRL+O
保存更改,CTRL+X
退出编辑器。
感谢以下文章提供的帮助:
* VNC远程登录树莓派的图形界面
* 树莓派连接无线网设置wifi方法
* 跟着上手树莓派(三)—— 让你的有线音箱从此无拘无束
本文也发在我的个人微博(http://www.hhyqhh.top/)中,欢迎访问!