Bluetooth audio receiver linux

ericbolo / rpi-bluletooth-receiver.md

This walks you through setting up your Raspberry PI 3 (Raspbian Jessie) as a bluetooth audio receiver.

Credits https://www.raspberrypi.org/forums/viewtopic.php?t=68779. Parts of this tutorial did not work for me, so I’m noting my fixes here. Also, I added instructions for setting up a custom USB sound card for better quality.

Set up USB sound card on Raspberry PI

This will list the available audio devices. In my case:

**** List of PLAYBACK Hardware Devices **** card 1: Set [C-Media USB Headphone Set], device 0: USB Audio [USB Audio] Subdevices: 0/1 Subdevice #0: subdevice #0 card 2: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA] Subdevices: 8/8 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 Subdevice #3: subdevice #3 Subdevice #4: subdevice #4 Subdevice #5: subdevice #5 Subdevice #6: subdevice #6 Subdevice #7: subdevice #7 card 2: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI] Subdevices: 1/1 Subdevice #0: subdevice #0 

We need to tell ALSA (Advanced Linux Sound Architecture) to use the USB sound card.

sudo nano /usr/share/alsa/alsa.conf 
sudo apt-get update sudo apt-get install bluez pulseaudio-module-bluetooth python-gobject python-gobject-2 

Note: bluez is used to manage bluetooth and pulse-audio is used for sound-management.

Change audio default settings

Add «pi» user (or whichever is your user) to the lp group to allow it to manage bluetooth

Change the default bluetooth audio settings

The original tutorial says to edit sudo nano /etc/bluetooth/audio.conf, but no such file in latest RPI. Instead, edit /etc/bluetooth/main.conf.

Add complete the following line in the [General] section:

Enable=Source,Sink,Media,Socket 

Configure pulse-audio resampling algorithms

Читайте также:  Windows bluetooth keyboard ipad

sudo nano /etc/pulse/daemon.conf 

Add or edit the following line:

Pair with your bluetooth device

The RPI 3 comes with bluetooth.

I used the GUI and followed these steps:

1. Right click the bluetooth systeay icon at the top right and click "Make discoverable" 2. Right click the bluetooth systray icon at the top right. Add device , then select the appropriate device from the scanned list, and connect. This will ask to confirm a code on both the RPI and the bluetooth device. Confirm on both sides. 3. Connect via the Bluetooth manager: Menu > Preferences > Bluetooth Manager, right click on the device and click "Connect" 

Note: I found the above process to work for me, but not sure I need to connect twice.

The device needs to be paired and trusted.

Connect bluetooth source with local sink with pulse-audio

Make sure pulseaudio daemon is running

List pulse-audio controller sources

In the list you should see something like bluez_source.AA_AA_AA_AA_AA_AA where AA_AA_AA_AA_AA_AA is the MAC address of your bluetooth device.

List pulse-audio controller sinks

Note: you must change the name of the sink and source to the names of your own bluetooth device and sink:

pactl load-module module-loopback source=bluez_source.AA_AA_AA_AA_AA_AA sink=alsa_output.usb-0d8c_C-Media_USB_Headphone_Set-00-Set.analog-stereo

You can test by playing a youtube video, music file, etc. on your bluetooth-connected phone.

TODO: add instructions for automating connection and sink/source coupling. Haven’t gotten to that part yet.

Источник

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

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

Читайте также:  Broadcom 2045 bluetooth драйвер

Я делал такое на Debian 9 x32, Lubuntu 18.04 x32, Debian 11 x64 и 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. Не знаете есть ли он? Проверьте.

Приступим

Устанавливаем необходимые 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 другого устройства можете нагуглить.

Читайте также:  Передать контакты через bluetooth

Поскольку мы отключили плагин 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 придуманное вами название.

После проделанного разумеется перезапускам службу 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 это адрес телефона, его нужно добавить в доверенные чтобы с телефона можно было подключаться.

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

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

Источник

Оцените статью
Adblock
detector