Raspberry PiでAirPlay Clientを構築する


人気のRaspberry Piですが用途が色々とありすぎてどう使っていいかわからないかもしれません。用途の一つにAirPlay Clientがあります。インストールが簡単で複数のスピーカーを同時に使う際には非常に有効的です。

Raspberry PiのDebianで構築しましょう。

# apt-get install git libao-dev libssl-dev libcrypt-openssl-rsa-perl libio-socket-inet6-perl libwww-perl avahi-utils
# git clone https://github.com/albertz/shairport.git shairport
# cd shairport
# make
# make install # /usr/local/bin 以下にインストール

あとは起動スクリプトを書いて完成です。shairportの使い方は下記の通り。

ShairPort version 0.05 - Airport Express emulator
Usage:
shairport.pl [OPTION...]

Options:
  -a, --apname=AirPort            Sets AirPort name
  -p, --password=secret           Sets password
  -o, --server_port=5002          Sets Port for Avahi/dns-sd/howl
  -i, --pipe=pipepath             Sets the path to a named pipe for output
      --ao_driver=driver          Sets the ao driver (optional)
      --ao_devicename=devicename  Sets the ao device name (optional)
      --ao_deviceid=id            Sets the ao device id (optional)
  -s  --squeezebox                Enables local Squeezebox Server integration
  -c  --cliport=port              Sets the SBS CLI port
  -m  --mac=address               Sets the SB target device
  -l  --volume=level              Sets the SB volume level (in %)
      --play_prog=cmdline         Program to start on 1st connection
      --stop_prog=cmdline         Program to start on last disconnection
  -d                              Daemon mode
  -w  --writepid=path             Write PID to this location
  -v  --verbose                   Print debugging messages
  -h, --help                      This help

起動スクリプトを作ります。パーミッションは755で。

# vim /etc/init.d/shairport

内容は下記の通り。

#!/bin/bash

### BEGIN INIT INFO
# Provides:          shairport
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the shairport
# Description:       starts the shairport
### END INIT INFO

TARGET_SCRIPT=/usr/local/bin/shairport.pl
FASTCGI_USER=www-data
RETVAL=0
PIDFILE=/var/run/shairport.pid
case "$1" in
  start)
    $TARGET_SCRIPT --writepid=$PIDFILE -d > /dev/null 2>&1
    RETVAL=$?
  ;;
  stop)
    kill `cat $PIDFILE`
    echo '' > $PIDFILE
    RETVAL=$?
  ;;
  restart)
    kill `cat $PIDFILE`
    echo '' > $PIDFILE
    $TARGET_SCRIPT --writepid=$PIDFILE -d > /dev/null 2>&1
    RETVAL=$?
  ;;
  *)
    echo "Usage: shairport {start|stop|restart}"
    exit 1
  ;;
esac
exit $RETVAL
console output

monitなどを入れて落ちないように工夫します。

# vim /etc/monit/conf.d/shairplay.conf

内容は下記の通り。

check process shairport with pidfile /var/run/shairport.pid
start program = "/etc/init.d/shairport start"
stop  program = "/etc/init.d/shairport stop"
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です