
Иногда при подключении 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 либо включить сервисы обратно).
Комментарии (4)
eisaev
27.06.2025 09:04Вроде и контент уникальный и интересный. Точно не вы
серхлоп "ИИ". Но зачем на КДПВ сгенерированная галлюцинация вместо rpi?!zoldaten Автор
27.06.2025 09:04нет, не выхлоп. сгенерированные "кривые" картинки, как и видео на youtube без озвучки - как методы "засорения" парсеров для датасетов AGI )
на самом деле посты охотнее читают, когда есть "опорная" картинка, даже неказистая.
NutsUnderline
мне любопытен сценарий использования.. но раз надо - значит надо.
zoldaten Автор
допустим, надиктовка с bt наушников.