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

от автора


Иногда при подключении 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 либо включить сервисы обратно).


ссылка на оригинал статьи https://habr.com/ru/articles/920130/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *