树莓派连接蓝牙音箱

软件安装

apt-get --no-install-recommends install pulseaudio pulseaudio-module-bluetooth bluez

用户授权

adduser pi pulse-access

编辑文件 /etc/dbus-1/system.d/pulseaudio-bluetooth.conf 并输入如下内容:

<busconfig>
  <policy user="pi">
    <allow send_destination="org.bluez"/>
  </policy>
</busconfig>

建立自启动文件

新建文件 /etc/init.d/bluepulse,文件内容如下:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          deamon
# Required-Start:    $local_fs $remote_fs $network $syslog $named
# Required-Stop:     $local_fs $remote_fs $network $syslog $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# X-Interactive:     true
# Short-Description: Start/stop bluepulse server
### END INIT INFO
 
case "$1" in
 start)
  su -c '/usr/bin/pulseaudio --start' - pi
  su -c '/bin/bash /home/pi/bluetooth.sh' - pi
  ;;
 stop)
  su -c '/usr/bin/pulseaudio --stop' - pi
  ;;
  *)
  echo "Usage: /etc.init.d/bluepulse {start|stop}"
  exit 1
  ;;
esac

添加 shell 脚本文件

新建文件 /home/pi/bluetooth.sh,其内容如下:

#!/bin/bash
DEVICE_MAC="68:EE:AC:19:40:73"
while true
  do
    index=$(pactl list sinks short | awk '$2 ~ /bluez/ {print $1}')
    running=$(pactl list sinks short | awk '$7 ~ /RUNNING/ {print $1}')
    
    if [ -z "$index" ] ; then
        echo -e "connect $DEVICE_MAC\nquit" | bluetoothctl > /dev/null 2>&1
    elif [[ ! -z "$running" && "$running" != "$index" ]] ; then
        pactl move-sink-input "$index" "$index"
    fi
    sleep 30
done

注意 DEVICE_MAC 要换成目标蓝牙音箱的 MAC

设置蓝牙模块

输入 bluetoothctl,并输入 power onagent ondefault-agentscan onpairtrust 等命令来完成蓝牙的设置。

服务的启动与测试

输入命令 sudo service bluepulse start 来启动 bluepulse 服务,并使用下面的命令来测试音频的播放:

mplayer file.mp3

标签: none

添加新评论