RaspberryPiをBluetoothオーディオレシーバにする方法|簡単にワイヤレスオーディオ

RaspberryPIをBluetoothオーディオレシーバにしてみた。 iPhone、パソコン(MacBook等)からの音楽再生時に、 わざわざスピーカに有線でつなぐのはわずらわしい。 RaspberryPiをBluetoothオーディオレシーバにして、 ワイヤレスで音楽再生ができるようにする。 RaspberryPi 今回やりたいのは、下図な感じ。 iPad,iPhoneから、BluetoothでRaspberryPiに接続し、音楽再生を行う。 RaspberryPiオーディオレシーバのサムネール画像 RaspberryPiは、Bluetoothデバイスを持っていないので、 USB Bluetoothアダプタが必要になる。 RaspberryPiのオーディオ出力は、今回はオンボードのサウンドデバイス(ALSA)を利用する。 RaspberryPiのアナログ出力(ステレオミニ)とスピーカを、オーディオケーブルで接続する。 USB BluetoothアダプタをRaspberryPiのUSBポートに装着し、 必要なファイルのインストールを始める。 $ sudo apt-get install bluez pulseaudio-module-bluetooth python-gobject python-gobject-2 pi というユーザが、Bluetoothデーモンにアクセスできるよう、 lp というグループに pi を追加する。 $ sudo usermod -a -G lp pi A2DPが利用できるように、Bluetoothの設定を行う。 [General]の項目に、以下の記述を追加。 $ sudo vi /etc/bluetooth/audio.conf [General] Enable=Source,Sink,Media,Socket pulse audioのサンプリング関連の設定を行う。 $ sudo vi /etc/pulse/daemon.conf ; resample-method = speex-float-3 resample-method = trivial Bluetoothデバイスが接続された際に、自動で設定が行われるように、 以下のスクリプトを作成。 参考:Raspberry Pi A2DP audio sink $ sudo vi /etc/udev/rules.d/99-input.rules SUBSYSTEM==”input”, GROUP=”input”, MODE=”0660″ KERNEL==”input[0-9]*”, RUN+=”/usr/lib/udev/bluetooth” $ sudo vi /usr/lib/udev/bluetooth #change if you don’t use default audio out AUDIOSINK=”alsa_output.platform-bcm2835_AUD0.0.analog-stereo” echo “[`date`]” >> /var/log/bluetooth_dev echo “Executing bluetooth script…|$ACTION|” >> /var/log/bluetooth_dev ACTION=$(expr “$ACTION” : “([a-zA-Z]+).*”) if [ “$ACTION” = “add” ] then for dev in $(find /sys/devices/virtual/input/ -name input*) do if [ -f “$dev/name” ] then mac=$(cat “$dev/name” | sed ‘s/:/_/g’) bluez_dev=bluez_source.$mac sleep 1 CONFIRM=`sudo -u pi pactl list short | grep $bluez_dev` if [ ! -z “$CONFIRM” ] then echo “Setting bluez_source to:  $bluez_dev” >> /var/log/bluetooth_dev echo pactl load-module module-loopback source=$bluez_dev sink=$AUDIOSINK rate=44100 adjust_time=0 >> /var/log/bluetooth_dev sudo -u pi pactl load-module module-loopback source=$bluez_dev sink=$AUDIOSINK rate=44100 adjust_time=0 >> /var/log/bluetooth_dev fi fi done fi $ sudo chmod 774 /usr/lib/udev/bluetooth ここで、再起動。     $ sudo reboot       起動したら、いよいよBluetoothデバイスとペアリングを行う。 RaspberryPiに以下のコマンドを投入。     $ sudo hciconfig hci0 piscan   $ bluetooth-agent 1234   この後、iPhone等のBluetoothデバイスから、Bluetooth接続を行う。 ペアリングができたら、音楽を再生してみて、音が出ればOK。 もし、音が出なければ、RaspberryPiのオーディオ出力が HDMIを向いていることがあるので、アナログ出力となるよう設定。 $ amixer cset numid=3 1 $ amixer set Master 100% このBluetoothレシーバ機能をサービス化するために、以下の設定を行う。 OS再起動後も、自動起動できるようになる。 $ sudo vi /etc/init.d/bluetooth-agent #! /bin/sh # /etc/init.d/bluetooth-agent USER=root HOME=/root export USER HOME case “$1” in start) echo “setting bluetooth discoverable” sudo -u kei amixer cset numid=3 1 sudo -u kei amixer set Master 100% sudo hciconfig hci0 piscan start-stop-daemon -S -x /usr/bin/bluetooth-agent -c pi -b — 0000 echo “bluetooth-agent startet pw: 0000” ;; stop) echo “Stopping bluetooth-agent” start-stop-daemon -K -x /usr/bin/bluetooth-agent ;; *) echo “Usage: /etc/init.d/bluetooth-agent {start|stop}” exit 1 ;; esac exit 0 $ sudo chmod 755 /etc/init.d/bluetooth-agent $ sudo update-rc.d bluetooth-agent defaults $ sudo /etc/init.d/bluetooth-agent start 以上で完了だ。 少し手順は多かったが、便利になった。 これまで、BELKINミュージック レシーバー を使ってきたが、音質は大差ない。 操作感として、ボリューム操作やストップ/スタートのタイムラグがRaspberryPiの方が少し大きいように感じる。 RaspberryPiに収容することで、配線等もとてもすっきりする。 消費電力もかなり少ないであろう。 AirPlayへの対応も可能とのことなので、これについても今後挑戦したい。

コメント

  1. もみじ より:

    こんにちは
    bluetooth-agent が使えなくなったと思うのですが、どのように変更すればいいでしょうか?