пятница, 25 ноября 2016 г.

bluetooth гарнитура, pulseaudio и нерабочий профиль a2dp

Пишу больше для себя, но может кому ещё пригодится.
Преамбула: имеем некую bt-гарнитуру, в моём случае LG HSB 900, купленную на ali. Подключается к ноуту в качестве наушников и гарнитуры проодит без проблем. Но проигрывание любого контента идёт через профайл HSF. Для скайпа и ему подобны это приемлемо, для музыки - увы нет. :(

Долго рылся в "поиска правды". Много чего нашёл. Ничего не работает, а модификации конфигов порой значительны. Дошёл даже до скрипта a2dp.py. Запустить не успел, хотя пишут, что кому-то помогает. :)
Решение нашлось тут. Причём на столько тривиальное и не требующее почти ни каких изменений в конфиги, что я чуть не прифигел. ;) И так:


  1.  В файле /etc/pulse/default.pa ищем строку load-module module-bluetooth-discover
  2. Добавляем в ней параметр, что бы получилось так: load-module module-bluetooth-discover headset=auto
  3. PROFIT :)
Теперь профайл переключается без проблем! Чего и вам желаю. :)

UPD: На самом деле, как выяснилось позже, подключение идёт на a2dp профайл, но если переключится на HSF, то вернуться на a2dp не выходит:

[pulseaudio] module-bluez5-device.c: Refused to switch profile to a2dp_sink: Not connected

Для решения проблемы пришлось сделать файл /etc/bluetooth/audio.conf (у меня в системе по умолчанию его нет, но в каких-то системах он может быть, тогда diff вам в помощь):

[General]
#Enable=Gateway,Source
Enable=Gateway,Source,Socket

Master=true
#Disable=Socket
AutoConnect=true

[Headset]
HFP=false
MaxConnected=1
FastConnectable=true

[A2DP]
SBCSources=1
MPEG12Sources=0

После чего делаем sudo systemctl restart bluetooth (ну или рестартуем его доступным в вашей системе способом) и всё: переключение работает нормально на ходу в обе стороны. :)