【问题标题】:Raspberry Pi3, bluealsa - connected but no sound output on bluetooth speaker?Raspberry Pi3,bluealsa - 已连接但蓝牙扬声器上没有声音输出?
【发布时间】:2019-04-14 01:57:08
【问题描述】:

总结:一切都已连接,似乎工作正常,但扬声器没有声音 - 如何诊断或修复?

我正在尝试从我的 Raspberry Pi 3 向蓝牙扬声器播放声音,但它无法正常工作。

pi 连接到蓝牙扬声器(连接时通过扬声器上的自动音频确认,“raspberrypi 已连接”,检查 pi 上的echo "info 04:52:C7:5A:3B:A1" | bluetoothctl 也表明它已连接)。

扬声器音量未静音,其他设备可以连接到它并通过它播放。检查alsamixer 确认音频未静音。

但是使用 aplay 通过蓝牙扬声器播放声音只会导致震耳欲聋的沉默。虽然看起来可行:

$ aplay -D bluealsa:HCI=hci0,DEV=04:52:C7:5A:3B:A1,PROFILE=a2dp /usr/share/sounds/alsa/Front_Center.wav
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono

我已查找可能包含信息的日志文件,但没有找到任何内容。

bluealsa 配置

我按照here 的说明进行了设置。此设置的详细信息是:

  • Raspbian Stretch,2018-10-09 映像(bluealsa v5.43 开箱即用安装)
  • bluez v5.49 已下载、构建和安装(无错误)
  • /etc/dbus-1/system.d/bluetooth.conf 已编辑,以下行添加到 root 元素:
    • <allow send_interface="org.bluez.ThermometerWatcher1"/>
    • <allow send_interface="org.bluez.HeartRateWatcher1"/>
    • <allow send_interface="org.bluez.CyclingSpeedWatcher1"/>
  • 以下还添加到顶级busconfig元素:
    • <policy group="bluetooth"><allow send_destination="org.bluez"/></policy>
  • pi 用户添加到蓝牙组

我已尝试将 HCI、设备和配置文件详细信息移动到 .asoundrc 和 /etc/asound.conf 文件中,但这些文件会产生相同的结果(控制台输出表明成功,但当我使用 aplay 时扬声器没有声音)。

其他事情(可能不相关但包括完整性)

  • pi 访问是通过 SSH(它是无头的)
  • 在启动 pi 时,sudo systemctl status blueto* 在蓝牙服务上显示错误消息:Failed to set privacy: Rejected (0x0b),显然是与启动相关的问题 (link),通过在启动后使用 systemctl 手动重新启动蓝牙服务来修复(丑陋,但现在可以作为一种解决方法)
  • dmesg、user.log 或 boot.log 中没有可疑的消息
  • 但以下内容在 daemon.log 中,它与上面的 aplay 命令的执行相关(但我已经多次使用相同的控制台输出尝试该命令,它有时只生成它们):

.

Nov 10 21:02:16 rpi_3e5ccf bluealsa[789]: /usr/bin/bluealsa: Unsupported AT message: SET: command:+CLIP, value:1
Nov 10 21:02:16 rpi_3e5ccf bluealsa[789]: /usr/bin/bluealsa: Unsupported AT message: CMD: command:+CLCC, value:(null)
Nov 10 21:02:16 rpi_3e5ccf bluealsa[789]: /usr/bin/bluealsa: Unsupported AT message: SET: command:+CSRSF, value:0,0,0,1,0,0,0

【问题讨论】:

  • 你已经有dbus-monitor 输出了吗?
  • @Parthiban 感谢这个建议 - 我很不耐烦,只是重新安装了所有东西,并进行了一些调整,我让它工作了。所以我无法访问系统不工作的 dbus-monitor 输出。工作系统的输出中似乎没有任何内容,但无论如何我都会将它包含在下面的答案中。

标签: bluetooth raspberry-pi raspberry-pi3 raspbian bluez


【解决方案1】:

最终我无法调试这个并且很不耐烦,所以只是擦除了 SD 并从头开始。我遵循的详细步骤如下,这意味着我现在可以使用 aplay 播放音频而无需指定设备,例如:

aplay /usr/share/sound/alsa/Front_Center.wav

1) 设置 SD 卡映像

  • 使用etcher烧写2018-10-09-raspbian-stretch.img
  • 触摸 /boot/ssh
  • 添加合适的 /boot/wpa_supplicant.conf 文件
  • 编辑 /rootfs/etc/主机名

2) ssh-copy-id 从主机到 pi,方便 SSH

3) 在 pi 上设置软件:

  • passwd
  • sudo apt update; sudo apt dist-upgrade
  • sudo apt install vim git screen htop rpi-update
  • sudo apt autoremove
  • sudo systemctl set-default multi-user.target # don't start X windows on boot
  • sudo BRANCH=next rpi-update
  • sudo reboot

4) 更新 bluez

  • sudo apt install libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev
  • wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.50.tar.xz tar -xf bluez-5.50.tar.xz`
  • cd bluez-5.50/
  • ./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --enable-experimental
  • make -j4
  • sudo make install
  • sudo cp /etc/dbus-1/system.d/bluetooth.conf /etc/dbus-1/system.d/bluetooth.conf.bak,然后编辑:
    • 添加到root<allow send_interface="org.bluez.ThermometerWatcher1"/><allow send_interface="org.bluez.HeartRateWatcher1"/><allow send_interface="org.bluez.CyclingSpeedWatcher1"/>
    • 添加busconfig的新孩子:<policy group="bluetooth"><allow send_destination="org.bluez"/></policy>

5) 让蓝牙正常工作

  • sudo adduser pi bluetooth
  • sudo reboot
  • 蓝牙控制:scan on
  • 蓝牙控制:trust 04:52:C7:5A:3B:A1
  • 蓝牙控制:connect 04:52:C7:5A:3B:A1
  • aplay -D bluealsa:HCI=hci0,DEV=04:52:C7:5A:3B:A1,PROFILE=a2dp /usr/share/sounds/alsa/Front_Center.wav # test it works at all

6) 通过创建以下 /etc/asound.conf 文件,无需指定设备即可使蓝牙正常工作:

pcm.bose {
 type plug
  slave {
    pcm {
      type bluealsa
      interface hci0
      device 04:52:C7:5A:3B:A1
      profile "a2dp"
    }
  }
  hint {
    show on
    description "Bose speaker"
  }
}
pcm.!default {
    type plug
    slave.pcm "bose"
}
ctl.!default {
    type hw
    card 0
}

作为参考和信用,这是基于以下三个来源的信息:

作为对上述@Parthiban 评论的回复,这里是当前工作系统的 dbus-monitor 输出:

signal time=1541964336.104905 sender=org.freedesktop.DBus -> destination=:1.1 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
   string ":1.1"
signal time=1541964336.105032 sender=org.freedesktop.DBus -> destination=:1.1 serial=4 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameLost
   string ":1.1"
method call time=1541964336.106756 sender=:1.0 -> destination=org.freedesktop.DBus serial=3 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=RequestName
   string "org.freedesktop.systemd1"
   uint32 7
signal time=1541964336.106880 sender=org.freedesktop.DBus -> destination=(null destination) serial=5 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameOwnerChanged
   string "org.freedesktop.systemd1"
   string ""
   string ":1.0"
signal time=1541964336.107024 sender=org.freedesktop.DBus -> destination=:1.0 serial=4 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
   string "org.freedesktop.systemd1"
method return time=1541964336.107096 sender=org.freedesktop.DBus -> destination=:1.0 serial=5 reply_serial=3
   uint32 1
method call time=1541964336.108116 sender=:1.0 -> destination=org.freedesktop.DBus serial=4 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=ListNames
method return time=1541964336.108179 sender=org.freedesktop.DBus -> destination=:1.0 serial=6 reply_serial=4
   array [
      string "org.freedesktop.DBus"
      string "org.freedesktop.systemd1"
      string ":1.0"
   ]

【讨论】:

  • 您好,有同样的问题,但我没有在您的回答中找到您问题的答案...“如何诊断,如何解决?”。
  • @alpereira7 我在回答中概述的步骤似乎可以解决它,不幸的是我没有我没有根本原因诊断
猜你喜欢
  • 1970-01-01
  • 2020-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多