树莓派连接蓝牙音响并播放音频

  • 前提准备
  • 方式一:通过桌面图形界面连接(播放有坑)
  • 方式二:通过命令窗连接(有坑)


前提准备

默认已经完成树莓派系统的烧录及更新

打开命令窗执行以下指令安装蓝牙相关包

sudo apt-get install pi-bluetooth bluez bluez-firmware blueman

方式一:通过桌面图形界面连接(播放有坑)

让树莓派先连接显示器,再外接鼠标键盘或者通过VNC之类的软件远程控制树莓派。具体方法网上有很多这里就不细说了。

然后找到蓝牙标识,左键添加设备即可。

python 树莓派 蓝牙 树莓派控制蓝牙_树莓派


之后在旁边的小喇叭处右键,选择蓝牙音响作为播放设备,之后就可以使用蓝牙音响作为输出了

python 树莓派 蓝牙 树莓派控制蓝牙_输出设备_02


坑!!!!

我选蓝牙音响做输出时,蓝牙会先断开然后再连上,但是不能作为音频播放设备。

出现上述问题时,直接把蓝牙断开,然后直接选择蓝牙音响作为输出,树莓派会自动连接蓝牙音响,然后把蓝牙音响作为音频设备输出。如下图

python 树莓派 蓝牙 树莓派控制蓝牙_linux_03


python 树莓派 蓝牙 树莓派控制蓝牙_树莓派_04

方式二:通过命令窗连接(有坑)

首先输入以下指令进入蓝牙控制命令

sudo bluetoothctl

然后输入以下指令

power on

再输入

agent on

此时蓝牙已经准备好了,输入以下指令,开始搜索设备

sacn on

找到蓝牙音响对应的地址,类似 A0:9F:B2:C4:99:2C
然后输入以下指令进行连接

pair A0:9F:B2:C4:99:2C
trust A0:9F:B2:C4:99:2C
connect A0:9F:B2:C4:99:2C

连接成功后会显示出蓝牙设备的名称,然后exit退出就行,如下图

[京鱼座蓝牙小蛮腰]# exit

第二次连接

#进入蓝牙指令
sudo bluetoothctl
#查看已连接过的设备
devices
#找到对应的地址然后直接连接
connect A0:9F:B2:C4:99:2C
连接成功后退出即可

坑1:
有时候2次连接会失败,如:Failed to connect: org.bluez.Error.Failed,我找了网上很多解决办法都没解决,最后找到的方法是先播放了一个音频文件,再按二次连接的方法就连上了,不知道是什么奇怪的bug。
具体方法如下:

#include "stdlib.h"
#include <stdio.h>
void main(){
  //xxx是你音频文件的名字
  system("play xxx.mp3");
}

编译一个类似的.c文件,然后每次连接前执行一下就好
如果无法播放,则安装以下2个包即可

sudo apt-get install sox
sudo apt-get install libsox-fmt-all

坑2:蓝牙音响连上后,无法作为音频输出设备
我没找到命令窗下如何把蓝牙音响设为音频输出的指令,所以找了个简单粗暴的办法,把HDMI和AV Jack这两个输出都关了,蓝牙音箱连上就是默认输出设备。