Автоматическое переключение устройства вывода звука на гарнитуру Bluetooth и принудительное подключение к профилю A2DP при подключении

11

Моя bluetooth-гарнитура (Plantronics Backbeat Go2) очень хорошо подключена к моей системе, но я должен выполнить несколько шагов вручную, чтобы автоматизировать эту работу:

  1. После каждой перезагрузки мне нужно запустить pactl load-module module-bluetooth-Discover в терминале, чтобы устройство вообще подключалось. Я попытался поместить это в сценарий оболочки для запуска при запуске, но не игра в кости :(
  2. Моя гарнитура подключается автоматически без проблем, но по умолчанию всегда используется дуплекс телефонии или даже выключено вместо A2DP; Я пытался и потерпел неудачу с несколькими различными стратегиями, чтобы заставить A2DP :(
  3. Принудительно использовать гарнитуру BT в качестве устройства вывода по умолчанию. Здесь тоже опробовано несколько стратегий ... к сожалению, каждый раз, когда я подключаю гарнитуру, индекс из pacmd, похоже, меняется, поэтому я не могу принудительно установить значение по умолчанию в файле конфигурации PA set-default-sink. И использование указанного имени тоже не работает - если гарнитура отсутствует, она переключается на динамики и не переключается обратно, если гарнитура подключается :(

Спасибо за любые советы по решению этих проблем!

Логотипы
источник

Ответы:

8

Это сработало для меня: https://sandalov.org/blog/2146/

Инструкции, скопированные здесь для потомков:

Add to /etc/pulse/default.pa to automatically switch pulseaudio sink to Bluez:

.ifexists module-bluetooth-discover.so
load-module module-bluetooth-discover
load-module module-switch-on-connect  # Add this
.endif

Modify/Create /etc/bluetooth/audio.conf to auto select A2DP profile (instead of HSP/HFP):

[General]
Disable=Headset # Add this

Apply changes:

pulseaudio -k # Restarts pulseaudio

# You may need to turn your bluetooth headphones off, then back on
Харви
источник
1
Примечание: комментарий «добавить это» важен, так как строка « .ifexists module-bluetooth-discover.so» уже существует. Сначала я попытался добавить все четыре строки в конце, и это не сработало. Работает только добавление одной строки в нужном месте.
Фабиан Релинг,
2
на Ubuntu Bionic я установил, AutoConnect=trueа не
отключил
Обратите внимание, что после PulseAudio версии 11 auto_switch был преобразован в целое число, поэтому для него требуется значение 0, 1, 2 в зависимости от необходимой вам функции автоматического переключения: freedesktop.org/wiki/Software/PulseAudio/Notes/11.0
mitsos1os
2

Не только после перезагрузки, но и после отключения и повторного подключения устройства, поддерживающего оба профиля, HSP и A2DP, Bluez всегда подключает его в режиме HSP (headest).

Я не могу подробно рассказать, что происходит под капотом (у Bluetooth есть некоторые причуды), но я подозреваю, что мы подключаем новое устройство как гарнитуру, а не как устройство Audio или AudioSink через dbus.

Там, кажется, нет настройки, с помощью которой мы можем контролировать это. Мне неизвестно о каких-либо настройках, которые мы можем сделать для настройки устройства Bluetooth по умолчанию на A2DP при подключении (но я не могу исключить, что где-то пропустил часть документации). Это можно считать ошибкой.

В какой-то момент я написал скрипт для установления Bluetooth-соединения с помощью профиля Audio . Этот скрипт был включен в небольшое приложение Python с графическим интерфейсом ( bt-autoconnect на панели запуска или через мой ppa: takkat-nebuk / takkat ), который, помимо прочих настроек, делает именно это, но это скорее взлом, чем определенное решение, и, к сожалению, он делает не работает со всеми адаптерами, но сначала он подключит мою гарнитуру Philips в режиме A2DP (хотя настройки звука по-прежнему утверждают, что это HFP, но это другая проблема).

Takkat
источник
Спасибо за ввод Takkat ... Я думаю, что я прыгал, и это будет ручной процесс :(
Логотипы