首先声明一下,本文内容参考如下国外大神的配置过程进行操作并成功实现基于树莓派的蓝牙音频接收功能:
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。总得来说,折腾树莓派挺有意思!