Raspberry Pi3, bluealsa - подключены, но нет звука на динамике Bluetooth?

Резюме: Все подключено, вроде работает, но звука из динамика нет - как диагностировать или исправить?

Я пытаюсь воспроизвести звук с моего Raspberry Pi 3 на динамик Bluetooth, но он не работает.

Пи подключается к динамику Bluetooth (подтверждается автоматическим звуком на динамике, когда он подключается, «raspberrypi подключен», и проверка 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

Я искал файлы журналов, в которых может быть информация, но ничего не нашел.

конфигурация блюальса

Я настроил это, следуя инструкциям здесь. Детали этой установки таковы:

  • Raspbian Stretch, изображение от 09.10.2018 (из коробки установлена ​​bluealsa v5.43)
  • bluez v5.49 загружен, собран и установлен (без ошибок)
  • /etc/dbus-1/system.d/bluetooth.conf edited, following lines added to root element:
    • <allow send_interface="org.bluez.ThermometerWatcher1"/>
    • <allow send_interface="org.bluez.HeartRateWatcher1"/>
    • <allow send_interface="org.bluez.CyclingSpeedWatcher1"/>
  • And following also added to the top level busconfig element:
    • <policy group="bluetooth"><allow send_destination="org.bluez"/></policy>
  • Пользователь pi добавлен в группу bluetooth

Я попытался переместить данные HCI, устройства и профиля в файлы .asoundrc и /etc/asound.conf, но они дают те же результаты (вывод на консоль показывает, что все прошло успешно, но при использовании aplay из динамика не слышно звука).

Другие вещи (вероятно, не относящиеся к делу, но в том числе для полноты картины)

  • pi доступ через SSH (это без головы)
  • при загрузке pi sudo systemctl status blueto* показывает сообщение об ошибке в службе Bluetooth: Failed to set privacy: Rejected (0x0b), по-видимому, проблема, связанная с загрузкой (ссылка), которая исправляется ручным перезапуском службы Bluetooth после загрузки с помощью 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

person cfogelberg    schedule 10.11.2018    source источник
comment
У вас уже есть dbus-monitor вывод?   -  person Parthiban    schedule 11.11.2018
comment
@Parthiban спасибо за это предложение - я потерял терпение и просто переустановил все, и с парой настроек я заставил это работать. Поэтому я не могу получить доступ к выводу dbus-monitor из системы, которая не работала. Похоже, что в выводе работающей системы нет ничего, что имело бы к этому отношение, но я все равно включу это в свой ответ ниже.   -  person cfogelberg    schedule 11.11.2018


Ответы (1)


В конечном итоге я не смог отладить это и стал нетерпеливым, поэтому просто стер SD и начал с нуля. Подробные шаги, которые я выполнил, приведены ниже. Это означает, что теперь я могу воспроизводить аудио с помощью aplay без необходимости указывать устройство, например:

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

1) Настройте образ SD-карты

  • используйте гравировщик для записи 2018-10-09-raspbian-stretch.img
  • коснитесь /загрузки/ssh
  • добавьте подходящий файл /boot/wpa_supplicant.conf
  • отредактировать /rootfs/etc/имя хоста

2) ssh-copy-id с хоста на pi, для удобного SSH

3) Настройте программное обеспечение на пи:

  • 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) Обновить блюз

  • 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, then edit:
    • add to 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) Заставить Bluetooth работать

  • sudo adduser pi bluetooth
  • sudo reboot
  • bluetoothctl: scan on
  • bluetoothctl: trust 04:52:C7:5A:3B:A1
  • bluetoothctl: 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) Заставьте Bluetooth работать без указания устройства, создав следующий файл /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"
   ]
person cfogelberg    schedule 11.11.2018
comment
Привет, у меня тот же вопрос, но я не нашел в вашем ответе ответа на ваш вопрос... как диагностировать, как исправить?. - person alpereira7; 04.02.2021
comment
@ alpereira7 шаги, которые я изложил в своем ответе, похоже, помогли решить эту проблему, к сожалению, у меня их нет, у меня нет диагностики основной причины этого - person cfogelberg; 05.02.2021