Подключение JBL T450BT

Подключая свои старые Bluetooth-наушники JBL T450BT, я столкнулся с проблемой. GUI в KDE для pairing “подвисал”. Перезагрузка bluetooth.service и системы ничем не помогала…

Такая ситуация для меня в новинку. Другие, более новые Bluetooth-наушники, у меня работают без-каких либо проблем. Хорошо, будем разбираться, что не так.

Опробовал пару вариантов в bluetoothctl. Чего удалось добиться – появления ошибки “Protocol not available”. Явного ответа, что это за проблема, не было, но я попробовал почитать журналы сервиса bluetooth.

$ sudo systemctl status bluetooth

● bluetooth.service - Bluetooth service
     Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; preset: enabled)
    Drop-In: /etc/systemd/system/bluetooth.service.d
             └─override.conf
     Active: active (running) since Wed 2024-11-27 18:57:10 MSK; 1min 25s ago
       Docs: man:bluetoothd(8)
   Main PID: 23759 (bluetoothd)
     Status: "Running"
      Tasks: 1 (limit: 154386)
     Memory: 1.3M
        CPU: 35ms
     CGroup: /system.slice/bluetooth.service
             └─23759 /usr/libexec/bluetooth/bluetoothd

bluetoothd[23759]: profiles/audio/vcp.c:vcp_init() D-Bus experimental not enabled
bluetoothd[23759]: src/plugin.c:plugin_init() Failed to init vcp plugin
bluetoothd[23759]: profiles/audio/mcp.c:mcp_init() D-Bus experimental not enabled
bluetoothd[23759]: src/plugin.c:plugin_init() Failed to init mcp plugin
bluetoothd[23759]: profiles/audio/bap.c:bap_init() D-Bus experimental not enabled
bluetoothd[23759]: src/plugin.c:plugin_init() Failed to init bap plugin
bluetoothd[23759]: Bluetooth management interface 1.22 initialized
bluetoothd[23759]: src/service.c:btd_service_connect() a2dp-sink profile connect failed for 71:04:64:5A:09:F2: Protocol not available

Значит, проблема в A2DP профиле. Странно. К сообщениям о “D-Bus experimental” мы ещё вернёмся чуть позже, они решаются настройкой параметров запуска сервиса.

Большинство результатов поиска было для Ubuntu и в рекомендациях отмечали необходимость установки pulseaudio-module-bluetooth. Пробую установить.

$ sudo apt install pulseaudio-module-bluetooth

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
pulseaudio-module-bluetooth is already the newest version (16.1+dfsg1-2+b1).
pulseaudio-module-bluetooth set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Хах, он уже был установлен. Пометим его обратно как авто-установку.

$ sudo apt-mark auto pulseaudio-module-bluetooth

pulseaudio-module-bluetooth set to automatically installed.

Очередной поиск привёл к одному замечательному вопросу на AskUbuntu. Он описывает ситуацию в точности как у меня. Один из советов касался установки libspa-0.2-bluetooth. Попробуем установить:

$ sudo apt install libspa-0.2-bluetooth

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  liblc3-0 libldacbt-abr2
The following NEW packages will be installed:
  liblc3-0 libldacbt-abr2 libspa-0.2-bluetooth
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 401 kB of archives.
After this operation, 1 453 kB of additional disk space will be used.

[...]

Надо не забыть перезапустить Wireplumber, это его модуль работы с Bluetooth.

$ systemctl --user restart wireplumber

После этого наушники подключились и стали видимы как устройство вывода аудио.

$ apt-cache show wireplumber | grep Suggests

Suggests: libspa-0.2-bluetooth, libspa-0.2-libcamera, wireplumber-doc
Suggests: libspa-0.2-bluetooth, wireplumber-doc

Дополнительно проверил зависимости и рекомендованные пакеты. Как видно, пакет libspa-0.2-bluetooth предлагается к установке вместе с wireplumber, но не как обязательная зависимость… Но да ладно, начинаю к этому привыкать…

Кроме того, в конфигурации по умолчанию, Bluetooth-стек в Debian 12 не даёт информации о заряде устройства. На телефоне индикатор заряда наушников присутствует и очень хочется получить его и на компьютере.

К счастью, коллеги с ArchWiki, как и в других случаях, уже описали решение для этой задачи. Достаточно отредактировать параметры конфигурации. Или установить флаг --experimental для bluetoothd. Пойдём вторым путём.

Открываем редактирование override для bluetooth.service.

$ sudo systemctl edit bluetooth.service

Находим в самом начале строчки ExecStart и добавляем флаг --experimental. Добавленный флаг выделен в примере ниже.

[Service]
ExecStart=
ExecStart=/usr/libexec/bluetooth/bluetoothd --noplugin=sap --experimental

Сохраняем файл и перезапускаем bluetooth.service.

$ sudo systemctl restart bluetooth.service

После перезапуска и подключения, я сразу увидел процент зарядки наушников.

Отдельно отмечу, что MPD упорно не хотел отдавать аудио на наушники. Эту проблему решил для меня только классический метод перезапуска компьютера.

Если Вы хотите обсудить содержание заметки, задать вопросы или предложить изменения, то со мной можно связаться в Telegram