手里有一个第一代的树莓派开发板,很长时间都没有使用过。今天尝试着搭建一个支持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=netdev
update_config=1
country=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 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

安装Airplay服务

以下的整个安装都是基于一个开源项目进行的,这是项目主页(https://github.com/juhovh/shairplay)。

其中给出了详细的安装方法。

安装依赖环境

通过SSH登录树莓派,分别执行如下命令

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

从GitHub上获取源码

git clone https://github.com/juhovh/shairplay.git

编译和安装

进入对应的目录

cd shairplay

依次执行如下四条指令,进行代码的编译和安装

./autogen.sh
./configure
make
sudo 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 shairplay
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-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}";;
esac
exit 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/shairplay
update-rc.d shairplay defaults

执行如下命令,切换到用户目录

cd ~

依次执行如下命令,拷贝airport.key

mkdir /usr/local/share/shairplay
cp 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=on
audio_pwm_mode=2

之后通过CTRL+O 保存更改, CTRL+X退出编辑器。


感谢以下文章提供的帮助:
* VNC远程登录树莓派的图形界面
* 树莓派连接无线网设置wifi方法
* 跟着上手树莓派(三)—— 让你的有线音箱从此无拘无束


本文也发在我的个人微博(http://www.hhyqhh.top/)中,欢迎访问!

基于树莓派的AirPlay功能实现相关推荐

  1. 树莓派组装成linux电脑,可放进口袋基于树莓派的GNU/Linux电脑

    原标题:可放进口袋基于树莓派的GNU/Linux电脑 近日开发者Ashish Gulhati在Kickstarter平台上为Noodle Pi项目进行众筹,该项目承诺让你自己打造一款专属于你自己,基于 ...

  2. 【树莓派】基于树莓派,实现无线路由功能

    基于树莓派,实现无线路由功能 Raspberry Pi 3板载了无线网络适配器和陶瓷天线,不需要额外增加无线网卡就可以把它打造成一个无线路由器.有一种方法是给Raspberry Pi刷上OpenWRT ...

  3. 树莓派练手小项目---基于树莓派构建天气查询系统,实现内容的网页自动化检索功能

    目录 一.写在前面 二.基于树莓派构建天气查询系统 三.基于树莓派实现网页内容的自动化检索 四.有关于树莓派的其他小提醒,小技巧 Author:qyan.li Date:2022.6.19 Topic ...

  4. 树莓派云音乐c语言,基于树莓派的红外遥控版网易云音乐播放器

    基于树莓派的红外遥控版网易云音乐播放器.下面是遥控键盘示意图: CH- CH CH+ << >> || - + EQ 0 100+ 200+ 1 2 3 4 5 6 7 8 9 ...

  5. linux树莓派网易云音乐,基于树莓派的红外遥控版网易云音乐播放器

    基于树莓派的红外遥控版网易云音乐播放器.下面是遥控键盘示意图: CH- CH CH+ << >> || - + EQ 0 100+ 200+ 1 2 3 4 5 6 7 8 9 ...

  6. 树莓派环境处理_一种基于树莓派的便携式的环境监测系统的制作方法

    本发明涉及通讯技术领域,尤其涉及一种基于树莓派的便携式的环境监测系统. 背景技术: 树莓派是尺寸仅有信用卡大小的一个小型电脑,可以将树莓派连接电视.显示器.键盘鼠标等设备使用.树莓派能替代日常桌面计算 ...

  7. python与室内设计_基于树莓派和Python的智能家居系统设计

    基于树莓派和 Python 的智能家居系统设计 许礼捷 葛华 陈红 [摘 要] 介绍树莓派第 3 代开发平台,融合 Python 开发技术和 OneNET 云 平台通信技术等先进技术,设计一款智能化的 ...

  8. 树莓派红外避障小车python_基于树莓派的环保“捡垃圾”机器人小车(避障、摄像、红外、WIFI)...

    项目:基于树莓派的环保"捡垃圾"机器人小车控制平台 功能:避障.锁定某个障碍物 概述: 目前这个控制平台能够识别是"垃圾"只是塑料瓶,核心是利用Arduino控 ...

  9. 树莓派模拟电路_基于树莓派的热电偶测量模块 MCC 134

    MCC 134是一款24位,用于测量热电偶的4通道HAT附加模块,可提供专业级精度,是同类产品中的最佳选择.用户最多可连接4路差分热电偶(TC)到MCC 134的输入通道.每通道的TC型号可通过软件选 ...

  10. 基于树莓派的智能家居控制系统设计论文参考

    完整论文咨询可WX联系:gyf1842965496 智能家居控制系统功能实现详细介绍:基于树莓派的智能家居控制系统设计https://blog.csdn.net/G1842965496/article ...

最新文章

  1. 怎样找出插件的api地址_百度云盘免登陆高速下载,调用度云简易分享地址提取在线工具...
  2. 用Javascript获取页面元素的位置
  3. 给Oracle 11g Interval分区进行重命名
  4. 为什么不能在子类的初始化列表里初始化父类的成员
  5. python 模块学习--Numpy
  6. [树状数组][哈希]JZOJ 3240 Seat
  7. 联发科MT8377 MT8389 MT6589 MT6577等芯片详细解析
  8. 【CCCC】L2-009 抢红包 (25分),,间接排序,比较double大小
  9. 生产者消费者之爸爸妈妈儿子女儿苹果橘子编程实现
  10. python中报出lxml怎么改_[lxml]遇到非正常字符就中断处理?
  11. CSITool的安装过程(参照官方教程进行细节处理)
  12. 状态机编程实例及适用范围
  13. openStreetMap数据分析举例-使用Qt统计城市科技指数排名
  14. ai钢笔工具怎么描线_AI: 如何用钢笔工具画曲线
  15. thinkpadE450 进入bios并设置bios为uefi模式U盘启动(也可以是legacy)
  16. 再携手,齐并进!菊风助力宁波银行坐席PUSH外呼项目
  17. linux 基准测试,技术|如何基准测试 Linux PC 的性能?
  18. Java 面试题及答案
  19. 5.基于Abp的DDD框架
  20. 万花尺matlab仿真(圆内旋轮线,异形齿轮)

热门文章

  1. ensp由于win10 ARP表项未过期导致网络不通排查
  2. CAD两条曲线如何连接成平滑的波浪线?
  3. 【UCOSIII操作系统】事件篇
  4. 数据仓库工具hive面试题集锦
  5. Win11怎么设置鼠标箭头图案?Win11更换鼠标图案的方法
  6. ZigBee-CC2530单片机 - 1路硬件PWM控制舵机角度(精度为1us)
  7. 海信LINUX系统改安卓,如何获取海信电视的root许可一键单击海信Smart TV的root卸载内置软件...
  8. 无线路由器CPU浅析 MT7621A、 BCM47189 到底谁强?
  9. SPSS学习笔记(五)卡方检验
  10. C语言实现移位密码算法,仿射密码算法