Как стать автором
Обновить

Как перевести bluetooth в headset_head_unit на raspberry pi даже если последняя против

Время на прочтение3 мин
Количество просмотров579

Иногда при подключении bluetooth устройства к raspberry pi данное устройство по каким-то причинам не хочет записывать аудио через bt, хотя такая возможность на самом устройстве предусмотрена. Это касается bt наушников, гарнитур, у которых имеется режим headset_head_unit.


Поддерживается ли этот режим на самом устройстве и есть ли собственно bt микрофон на raspberry pi можно проверить командой (при подключенном bt устройстве):
pactl list cards

*если нет pactl —
sudo apt install paprefs &&  sudo apt install pavucontrol


В приведенном примере видно, что режим headset_head_unit имеется:

А также в выводе видно, что данный режим не доступен для использования. И в этом легко убедиться, если попытаться перевести bt устройство в данный режим:
pactl set-card-profile bluez_card.41_42_FF_66_63_DF headset_head_unit


В принципе, на этом можно было закончить фразой: «Покупайте проверенные bt устройства!»
Тем не менее, способ перевести устройство bt в режим headset_head_unit, хотя и выглядит не совсем элегантным.Понадобится пакет bluealsa.

Bluealsa.


не установить стандартным методом —
sudo apt install bluealsa -y

Выдаст ошибку: Package 'bluealsa' has no installation candidate.
Поэтому скачаем и соберем пакет, предварительно установив зависимости (частично взято отсюда — github.com/arkq/bluez-alsa/wiki/Installation-from-source):
sudo apt-get install git automake build-essential libtool pkg-config python3-docutils
sudo apt-get install libasound2-dev libbluetooth-dev libdbus-1-dev libglib2.0-dev libsbc-dev

git clone https://github.com/arkq/bluez-alsa.git
cd bluez-alsa
autoreconf --install
mkdir build && cd build
../configure --enable-cli
make
sudo make install


Чтобы проверить, что bluealsa работает, возьмем любой wav file и запустим проигрывание через подключенное к raspberry pi устройство.
Но перед этим запустим демон, который будет выступать в роли сервиса для bluealsa (https://github.com/arkq/bluez-alsa/blob/master/doc/bluealsad.8.rst):
sudo bluealsad -p a2dp-source -p hfp-ag -p hsp-ag

И… он не запустится:

Почему? Потому что там уже работает pulseaudio сервис, который raspberry использует «по умолчанию».
Поэтому прибиваем сервис и заново стартуем демон:
systemctl --user stop pulseaudio.socket && systemctl --user stop pulseaudio.service
systemctl --user stop pipewire.socket && systemctl --user stop pipewire.service

sudo bluealsad -p a2dp-source -p hfp-ag -p hsp-ag

При успешном старте демона в выводе — пусто, это нормально:


Теперь нужно подключить bluetooth устройство к raspberry. Сервис pulseaudio мы прибили, поэтому подключаем из терминала:
bluetoothctl connect 41:42:FF:66:63:DF


Если по каким-то причинам mac bt устройства не знаем или забыли, то запускаем bluetoothctl и ищем mac нашего устройства:
bluetoothctl
scan on
...*подождали
scan off


Теперь проверим, что bluealsa работает (*в другом окне терминала):
aplay -D bluealsa test.wav


Если вывод через bluealsa прошел без ошибок, то посмотрим, как обстоят дела с record(input).

Arecord и bluealsa.


Сперва посмотрим какие возможности по записи аудио с bt устройства предоставляет bluealsa:
bluealsa-aplay --list-pcms


На изображении видно, что имеется устройство записи, а также профиль, который с этим устройством следует использовать. Качество записи — 8000 Hz и одноканальное. Что поделать, качество будет неважное.
Теперь запишем короткий аудиофрагмент (по окончанию записи нажать ctrl+c.):
arecord -D bluealsa:SRV=org.bluealsa,DEV=41:42:FF:66:63:DF,PROFILE=sco -c 1 -r 8000 -f S16_LE test2.wav

Здесь указали профиль записи, битрейт, а также имя выходного файла записи.


Как регулировать громкость.


Если вызвать alsamixer с bluealsa, то можно посмотреть доступные команды.
amixer -D bluealsa --help
, а также посмотреть «выставленные» уровни громкости:
amixer -D bluealsa scontents



Соответственно, что увеличить громкость проигрывания вводим:
amixer -D bluealsa sset 'B8 A2DP' 100%

Для уровня записи соответственно:
amixer -D bluealsa sset 'B8 SCO' 100% 100%


Примечание.


В ранее упомянутой статье — linuxmusicians.com/viewtopic.php?t=23206 — рекомендуют отключить при загрузке сервисы pulseaudio и pipewire. Однако не стоит этого делать, так как bluealsa тоже «не без греха» и новые устройства не сопрягает даже через bluetooth агент. То есть команда bluetooth pair с новым устройством не будет работать. Даже если запустить bluetooth scan on. Тем более не стоит по той же причине сносить pulseaudio.
Устройство bt необходимо сначала добавить в обычном режиме работы pulseaudio (т.е. не выполнять systemctl --user stop pulseaudio.socket && systemctl --user stop pulseaudio.service либо включить сервисы обратно).
Теги:
Хабы:
0
Комментарии4

Публикации

Ближайшие события