суббота, 27 января 2018 г.

Ubuntu: подключаем bluetooth-колонку

В общем, обзавёлся я bluetooth-колонкой. Ну захотелось засыпать под приятную музыку с ютуба, а компьютер стоит в другой комнате. Не дырявить же из-за такого пустяка стены! Поэтому выбор пал на bluetooth. В DNS-е прикупил Sven PS-170BL и принялся её настраивать.

Тут, думаю, уместно пару слов уделить самой колонке. Этакий массивный брусок из неизвестного металла, приятный на ощупь. В качестве бонуса - FM-радио, сумевшее поймать пару хрипящих радиостанций, и заявленное время автономной работы 10 часов. Последнее, правда, проверить ещё не удосужился.

Итак, настройка. После предыдущих экспериментов в системе остались какие-то установленные пакеты (bluez, pulseaudio-module-bluetooth), так что доустанавливать ничего не пришлось. Запустил апплет blueman-applet, включил поиск устройств, тот нашел колонку, находящуюся в режиме bluetooth, и успешно подключился. Руководство пользователя к колонке предупреждало, что, возможно, потребуется ввести пароль 0000, но это не понадобилось. Кстати, пароль тут, похоже, неизменяемый, так что надо быть готовым к тому, что какой-нибудь шутник-сосед за стеной подключится и начнет транслировать всякие непристойности.

На этом настройка не закончилась. Командой pavucontrol вызвал регулятор громкости. В нём есть вкладка "Конфигурация". В этой вкладке отображаются всякие аудиоустройства. Надо найти свой пункт "Sven PS-170BL" и выбрать профиль "Воспроизведение высокого качества (приемник A2DP)" (откуда он там взялся - это, конечно, интересный вопрос). Во вкладке "Устройства вывода" эту колонку можно сделать устройством вывода звука по умолчанию, но моя задача заключалась не в этом.
Задача у меня стояла сделать так, чтобы часть приложений пищала через интегрированную на материнку звуковую карту, а другая часть - через колонку. Сделать это оказалось просто. При запуске приложения, пытающегося вывести звук (например, firefox или mpg123), это приложение появляется в списке во вкладке "Проигрывание", и для него можно выбрать требуемое устройство вывода.

Кроме того, для mpg123 можно вообще обойтись CLI. Команда
pacmd list-sinks
выдаёт некий список примерно такого вида:
2 sink(s) available.
  * index: 0
        name: <alsa_output.pci-0000_00_07.0.analog-stereo>
        driver: <module-alsa-card.c>
        ....
        ....
    index: 7
        name: <bluez_sink.30_41_30_FA_95_57>
        driver: <module-bluez5-device.c>
        ....
        ....
        module: 33
        properties:
                bluetooth.protocol = "a2dp_sink"
                device.description = "SVEN PS-170BL"
                device.string = "30:41:30:FA:95:57"
                device.api = "bluez"
                device.class = "sound"
                device.bus = "bluetooth"
                device.form_factor = "hands-free"
                bluez.path = "/org/bluez/hci0/dev_30_41_30_FA_95_57"
                bluez.class = "0x240408"
                bluez.alias = "SVEN PS-170BL"
                device.icon_name = "audio-handsfree-bluetooth"
                device.intended_roles = "phone"
        ports:
                handsfree-output: Хендс-фри (priority 0, latency offset 0 usec, available: yes)
                        properties:
    
        active port: 
В нём нас интересует одна строка: "name: <bluez_sink.30_41_30_FA_95_57>". В домашнем каталоге создаём файл ~/.asoundrc с таким содержимым:
pcm.bluetooth {
        type pulse
        device "bluez_sink.30_41_30_FA_95_57"
}
Теперь можно вызывать mpg123 такой командой:
mpg123 -o alsa -a bluetooth мой_файл.mp3
и звук пойдёт через колонку.

Литература
https://wiki.archlinux.org/index.php/Bluetooth_headset_(Русский)
https://wiki.archlinux.org/index.php/PulseAudio_(Русский)
https://askubuntu.com/questions/609292/different-applications-different-sound-output-devices
https://askubuntu.com/questions/14077/how-can-i-change-the-default-audio-device-from-command-line
https://wiki.debian.org/Bluetooth/Alsa

Комментариев нет:

Отправить комментарий