Linux. Делаем Bluetooth колонку из ПК
Соглашусь, задача странная на первый взгляд. Но по крайне мере я искал информацию об этом и судя по сообщениям на форумах я не единственный и явно не последний. А поскольку такой простой инструкции на русском языке в интернете нет, я её напишу.
Я делал такое на 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
Ищем устройство с телефона. Отправляем запрос на сопряжение и на телефоне соглашаемся.
В терминале появится строка вроде [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. С ним ваши возможности почти безграничны.