019 通过蓝牙音箱播放音乐 - llj2kh/studynote GitHub Wiki

通过蓝牙音箱播放音乐


参考资料:
Home Assistant 搭建日志(五)——让蓝牙音箱唱歌
树莓派连接蓝牙音箱播放音乐
树莓派连接蓝牙音箱或者耳机
ALSA音频工具amixer,aplay,arecord

1. rfkill 命令

该命令可以控制机上的无线设备,打开或关闭设备。

蓝牙设备上电提示Failed to set power on: org.bluez.Error.Blocked
原因及解决办法:
这是由于蓝牙设备没有上电造成的,可通过如下命令解决此问题:

  • rfkill unblock bluetooth
    hciconfig hci0 up

  • rfkill
    显示机上无线设备状态

  • rfkill block 0
    停用系统中第一个启用RFKill的设备。

您还可以使用 rfkill 阻断某一类设备,或者所有启用了RFKill的设备。例如:

  • rfkill block wifi
    停用系统中的所有Wi-Fi设备。要停用所有启用了RFKill的设备,请运行:

  • rfkill block all
    要重新使用设备,请运行 rfkill unblock。要获得 rfkill 可停用的完整设备类别列表

2. bluetoothctl 控制蓝牙设备连接

使用bluetoothctl连接蓝牙耳机

  • 进入bluetoothctl命令行
    bluetoothctl
    进入bluetoothctl命令行后,类似:[bluetooth]#
    Controller代表arm板上的蓝牙设备,Device代表蓝牙耳机
    按如下步骤初始化蓝牙设备,并连接蓝牙耳机
  • 查看帮组
    help
  • 查看蓝牙设备
    list

power on
agent on
default-agent

  • 启动扫描
    scan on

  • 关闭扫描
    scan off

  • 显示可配对的设备
    devices

  • 配对
    pair E3:28:E9:24:21:07

  • 信任该地址,以后可自动连接。假如蓝牙耳机地址为:E3:28:E9:24:21:07
    trust E3:28:E9:24:21:07

  • 连接
    connect E3:28:E9:24:21:07

  • 查看蓝牙耳机信息
    info E3:28:E9:24:21:07

  • 断开连接
    disconnect E3:28:E9:24:21:07

  • 不想自动连接上蓝牙耳机,可以删除配对信息
    remove E3:28:E9:24:21:07

  • 连接完毕使用命令退出蓝牙控制器
    quit

  • 测试蓝牙音箱能否播放音乐
    aplay -D bluealsa:DEV=蓝牙设备mac地址,自己修改,PROFILE=A2DP test.wav
    test.wav是要播放的音频,自己找个音频代替,但是aplay是不支持mp3的,能播放音乐的话就下一步。

此时两个设备应该连接好

3. 使用bluealsa进行播放

经过网上n多的搜索,发现除了pulseauio的另一个蓝牙控制软件-bluealsa,经测试播放很流畅,建议大家使用。
首先安装bluealsa
sudo apt install bluealsa

3.1 添加pi用户到蓝牙用户组

sudo usermod -aG bluetooth pi

3.2 修改bluealsa配置,设置bluealsa为默认播放插件

sudo vi /etc/asound.conf
内容如下: 其中 device 我改成来蓝牙音箱的地址

pcm.!default {  
      type plug  
      slave.pcm {  
              type bluealsa  
	      	  interface "hci0"  
              device "12:34:56:78:9a:bc"  
              profile "a2dp"  
      }  
      hint {  
              show on  
              description "BT Speaker"  
      }  
}  

搞不懂该配置,也不知道有用没,暂时写在这

4. 蓝牙音响破音杂音等问题的解决办法

个人认为是加用户组起到了作用,但不确定,之前禁用wifi也没效果
树莓派系统里默认安装的pulseauido播放毛病比较多。使用bluealsa即可流畅的进行播放。

  • 卸载pulseaudio
    sudo apt remove pulseaudio*

  • 安装bluealsa
    sudo apt-get install bluealsa

  • 添加pi用户到蓝牙用户组
    sudo usermod -aG bluetooth pi

重启后再通过蓝牙连接,蓝牙音响终于正常了!

5. 播放音乐

因为许多深层东西不懂,只好照猫画虎,编写脚本来播放。

#!/bin/bash  
  
cd /samba/DLNA/Music/wav  
for mu in *.wav;do  
        aplay -D bluealsa:DEV=88:00:00:00:03:E5,PROFILE=A2DP $mu  
done  

另 ===================

  • 重启bluealsa服务
    sudo service bluealsa restart

  • 重启蓝牙服务
    sudo service bluetooth restart

6. 音量调节

根据相关资料,准备用 amixer 命令进行音量调节,但在实际应用中设置不起作用。

  • amixer scontrols
    查看当前有哪些选择可以控制
  • amixer scontents
    可以查看当前所有可以控制的变量的值,

查看之后,确定控制音量的变量,即可用下面命令进行调节。

  • amixer cget controls中所输出的某个参数
  • amixer cset controls中所输出的某个参数 具体的值(比如,0,1,On,Off等)