Linux. Делаем Bluetooth колонку из ПК

Соглашусь, задача странная на первый взгляд. Но по крайне мере я искал информацию об этом и судя по сообщениям на форумах я не единственный и явно не последний. А поскольку такой простой инструкции на русском языке в интернете нет, я её напишу.

b6d2c27fa304403f4fc42bd169d32f7f.jpg

Я делал такое на Debian 9×32, Lubuntu 18.04×32, Debian 11×64 и Ubuntu 21.04, на других дистрибутивах даже не основанных на Debian тоже будет работать если там можно установить приложения упомянутые в этой инструкции. Действия описаны на примере Debian, если у вас другой дистрибутив замените apt на ваш пакетный менеджер или ищите иной способ установки тех же приложений.

Требования

Подключённое и исправное устройство вывода звука (наушники/колонки/динамики) и рабочий сервер PulseAudio. Чтобы это проверить воспроизведите что-нибудь через mplayer с ключом -ao pulse, например мой рингтон.

sudo apt-get install mplayer -y
mplayer -ao pulse https://iasivan.ru/ringtone_zemlyane.mp3

Ну и конечно же Bluetooth адаптер. Он может быть встроенный либо внешний, подключённый в USB. Не знаете есть ли он? Проверьте.

dmesg | grep -i blue

Приступим

Устанавливаем необходимые 3 пакета.
BlueZ — стек основных протоколов Bluetooth
Bluetooth — служба и консольный интерфейс для работы с Bluetooth
pulseaudio-module-bluetooth — связующее звено между Bluetooth и PulseAudio

sudo apt-get install bluetooth bluez pulseaudio-module-bluetooth -y

Добавим 2 плагина в автозапуск PulseAudio. Для этого нужно в файл /etc/pulse/system.pa дописать две строки. Сделаем это через echo чтобы вы могли просто скопировать команды даже не читая этот текст.

sudo echo "load-module module-bluetooth-policy" >> /etc/pulse/system.pa
sudo echo "load-module module-bluetooth-discover" >> /etc/pulse/system.pa

Ну и конечно же перезапустим службу bluetooth и сервер PulseAudio. Именно в таком порядке.

sudo systemctl restart bluetooth.service
pulseaudio --kill
sleep 1
pulseaudio --start

По сути уже можно использовать, но такое устройство будет отображаться в Bluetooth поиске как ПК, заменим class устройства в поиске оно считалось колонкой.
Для начала отключим плагин hostname в bluetoothd чтобы class не считывался с самого устройства. Открываем файл /etc/systemd/system/bluetooth.target.wants/bluetooth.service, находим в нём параметр ExecStart и в конце строки дописываем --noplugin=hostname.

sudo nano /etc/systemd/system/bluetooth.target.wants/bluetooth.service

Теперь собственно сменим class. Открываем файл /etc/bluetooth/main.conf, в нём находим параметр class, убираем # в начале строки если есть, стираем текущее значение и вводим то что соответствует колонке, а именно 0x1c0420. Можно и не только колонкой его сделать, class другого устройства можете нагуглить.

Поскольку мы отключили плагин hostname у ПК не будет название в поиске Blutooth. Чтобы это исправить редактируем файл /var/lib/bluetooth/00:1A:7D: DA:71:13/settings, при чём вместо 00:1A:7D: DA:71:13 будет адрес вашего адаптера. Удобнее всего найти файл settings через консольный файломый менеджер mc. Папка в нём открывается на Enter, навигиция стрелочками на клавиатуре, редактировать выбранный файл — F4.

sudo apt-get install mc
sudo mc /var/lib/bluetooth/

В этот файл пишем следующее. Вместо IAS-Speaker придуманное вами название.

[General]
Alias=IAS-Speaker

После проделанного разумеется перезапускам службу bluetooth.service.

sudo systemctl restart bluetooth.service

Использование

Открываем bluetoothctl — это консольный интерфейс управления Bluetooth. Делаем устройство видимым и доступным.

discoverable on
pairable on

Ищем устройство с телефона. Отправляем запрос на сопряжение и на телефоне соглашаемся.

8bdbace36e596a8ccd400dc05d11a3cb.jpg

В терминале появится строка вроде [CHG] Device A4:55:90:BF:4B:1F Connected: yes здесь A4:55:90:BF:4B:1F это адрес телефона, его нужно добавить в доверенные чтобы с телефона можно было подключаться.

trust A4:55:90:BF:4B:1F

Из bluetoothctl можно выйти командой exit. В таком случае ПК перестанет отображаться в поиске, но с телефона который мы добавили в доверенные можно будет подключиться в любое время. ПК будет работать как колонка, звук выводимый телефоном на Bluetooth колонку будет воспроизводиться в динамики/колонки/наушники ПК.

Всего вам хорошего, друзья!
Изучайте Linux. Используйте Linux. С ним ваши возможности почти безграничны.

© Habrahabr.ru