首先声明一下,本文内容参考如下国外大神的配置过程进行操作并成功实现基于树莓派的蓝牙音频接收功能:

https://thecodeninja.net/2016/06/bluetooth-audio-receiver-a2dp-sink-with-raspberry-pi/

我使用的是树莓派3 B+版本硬件,系统为官方Raspbian的最新版本系统,如下:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 9.6 (stretch)
Release:         9.6
Codename:     stretch

$ uname -a
Linux raspberrypi3 4.14.82-v7+ #1165 SMP Wed Nov 21 16:42:28 GMT 2018 armv7l GNU/Linux

1. 安装依赖工具包:

sudo apt-get install pulseaudio-module-bluetooth bluez-tools

2. 将用户加入如下用户组中:

sudo gpasswd -a xbian pulse

sudo gpasswd -a xbian lp

sudo gpasswd -a pulse lp

sudo gpasswd -a xbian audio

sudo gpasswd -a pulse audio

上述xbian是当前的用户名,根据自己环境中实际的用户名称进行对应的修改。

3. 配置PulseAudio,并设置蓝牙的设备类

sudo sh -c "echo 'extra-arguments = --exit-idle-time=-1 --log-target=syslog' >> /etc/pulse/client.conf"
 sudo hciconfig hci0 up
 sudo hciconfig hci0 class 0x200420

配置完成后可以使用如下命令查看一下:

$ hciconfig -a
 hci0:   Type: Primary  Bus: UART
         BD Address: B8:27:EB:D3:82:FB  ACL MTU: 1021:8  SCO MTU: 64:1
         UP RUNNING PSCAN ISCAN
         RX bytes:1107 acl:0 sco:0 events:59 errors:0
         TX bytes:2557 acl:0 sco:0 commands:59 errors:0
         Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87
         Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
         Link policy: RSWITCH SNIFF
         Link mode: SLAVE ACCEPT
         Name: 'raspberrypi3'
         Class: 0x200420
         Service Classes: Audio
         Device Class: Audio/Video, Car Audio
         HCI Version: 4.2 (0x8)  Revision: 0xfc
         LMP Version: 4.2 (0x8)  Subversion: 0x6119
         Manufacturer: Broadcom Corporation (15)

4. 使用如下命令将pulseaudio在后台运行起来:

$ pulseaudio --start &
 [1] 1250

如果声音断续,可以尝试调整如上命令为:pulseaudio --start --high-priority=1 --no-cpu-limit=1&

4. 下面进行蓝牙的配对,输入如下命令进入蓝牙配置界面:

$ bluetoothctl·
[NEW] Controller B8:27:EB:D3:82:FB raspberrypi3 [default]
[bluetooth]#

5. 输入如下命令:

[bluetooth]# agent KeyboardOnly
 Agent registered
 [bluetooth]# default-agent
 Default agent request successful

6. 输入如下命令开始扫描蓝牙设备,此时手机或其它终端上的蓝牙也应打开:

[bluetooth]# scan on
 Discovery started

[CHG] Controller B8:27:EB:D3:82:FB Discovering: yes

7. 输入如下命令进行设备配对并信任设备,其中xx:xx:xx:xx:xx:xx是手机或其它中断的蓝牙MAC地址:

[bluetooth]# pair xx:xx:xx:xx:xx:xx
[bluetooth]# trust xx:xx:xx:xx:xx:xx

8. 此时在手机上的蓝牙设置中应该可以看到树莓派,点击一下即显示已连接成功。我测试使用的是小米手机。

9. 手机上使用音乐播放器播放音乐,可以从树莓派的Analog或HDMI接口听到播放出来的声音。

依照上述方法,在我的测试环境中可以成功将树莓派作为蓝牙音频接收器,通过Analog接口播放音乐,插上耳机即可听到。当然上述方法都是通过ssh连接后由命令行手工输入命令实现的,如果想要开机就实现蓝牙音频接收器功能,需要编写脚本并开机自动执行,对此这里不再叙述。

比较而言,我更喜欢通过DLNA或Airplay的方式进行无线音频的传输,无需配对自动发现更加方便一点,当然需要依赖WiFi环境,对此可以参考我的另一篇blog。总得来说,折腾树莓派挺有意思!