Вопрос или проблема
Я подключил свой Raspberry Pi (на котором работает Ubuntu 20) к своему телефону по Bluetooth. Это хорошо работает, и a2dp работает, как и ожидалось. Теперь я хотел бы, чтобы звонки тоже работали, но не могу изменить профиль карты.
Вывод команды pactl list cards
:
Профили:
a2dp_source: Высококачественный захват (A2DP Source) (выходы: 0, входы: 1, приоритет: 20, доступно: да)
headset_audio_gateway: Аудио-шлюз для гарнитуры (HSP/HFP) (выходы: 1, входы: 1, приоритет: 10, доступно: нет)
off: Выключено (выходы: 0, входы: 0, приоритет: 0, доступно: да)
Активный профиль: выключен
Я выполнил enable-modem в тестовой директории ofono.
У меня Bluez 5.54, Pulsaudio 13.99.1, Ofono 1.31.
Самое худшее то, что я смог заставить это работать на своем ноутбуке с Ubuntu некоторое время назад, но не помню, что я сделал/изменил, чтобы это заработало.
Если у вас есть идеи, как это сделать, я был бы вам очень благодарен!
В Ubuntu 20.04 переключение между a2dp и headset_audio_gateway (HSP/HFP) происходит автоматически. Я использую ofono, как это предлагается во многих темах, таких как эта: Как настроить ПК с Ubuntu в качестве Bluetooth-гарнитуры для приема звонков.
Вы можете принудительно переключить, добавив в файл с помощью выбранного редактора (мой – vim):
vim /etc/pulse/default.pa
следующую строку:
"load-module module-bluetooth-policy auto_switch=2"
в раздел:
.ifexists module-bluetooth-discover.so
load-module module-bluetooth-policy auto_switch=2
load-module module-bluetooth-discover headset=ofono
.endif
Но я думаю, что эта настройка уже по умолчанию в pulseaudio, начиная с последней версии в Ubuntu 20.04.
На самом деле, возможно, вы сталкиваетесь с похожей проблемой, как и я: a2dp мультимедийная воспроизведение (youtube, музыка, системные звуки и т. д.) с Android на Ubuntu как Bluetooth-гарнитура работает отлично, автоматическое переключение между a2dp и HSP/HFP также работает отлично. Но: a2dp может воспроизводить звук через Line Out или Гарнитуру и т. д., в то время как HSP/HFP по какой-то причине не может воспроизводить звук или использовать микрофон, когда он активирован. На самом деле, это работает, но нужно вручную переключать входные и выходные источники на источники гарнитуры, такие как:
Вход: Гарнитура > Передний микрофон
Выход: Гарнитура > Наушники
в то время как в режиме “Аудио-шлюз для гарнитуры (HSP/HFP)”. Что, на мой взгляд, Ubuntu переключает автоматически. Вы можете увидеть, какой режим активен, с установленным pulseaudio (pavucontrol) на вашей системе, после открытия pavucontrol > Конфигурация вы увидите свой телефон (мой – Galaxy S8+) с профилем “Выключено”, “Высококачественный захват A2DP” и “Аудио-шлюз для гарнитуры (HSP/HFP)”. Вы должны видеть, как операционная система автоматически переключает их, когда ваш телефон воспроизводит медиа, такие как youtube, а затем переключается на телефонный звонок и наоборот.
Как этого можно достичь? Я использую:
Индикатор переключения звука версии 2.3.4, написанный Дмитрием Канном для этой цели.
sudo apt-add-repository ppa:yktooo/ppa
sudo apt-get update
sudo apt-get install indicator-sound-switcher
Поэтому переключение у меня просто работает отлично, кроме того, что качество звука не так идеально в HSP/HFP, как с a2dp. И самое разочаровывающее для меня то, что мне всегда приходится вручную переключать на:
Вход: Гарнитура > Передний микрофон
Выход: Гарнитура > Наушники
как было указано выше, что очень раздражает.
Я пытаюсь установить стандартные входные и выходные данные для профиля: Аудио-шлюз для гарнитуры (HSP/HFP) в течение двух дней, но до сих пор не нашел решение.
Так что, с этой ручной переключкой, возможно, ваш телефон отправляет и принимает звук хорошо (как и мой). Но мы все равно страдаем от того, что приходится вручную переключать вход микрофона и выход звука на наушники.
Ответ или решение
Как переключить телефон на Headset Audio Gateway (HSP/HFP) в PulseAudio
Введение
При использовании Bluetooth-соединения для передачи аудиосигнала между вашим телефоном и Raspberry Pi, работающим под управлением Ubuntu 20, вы, вероятно, столкнулись с задачей переключения профиля с A2DP на HSP/HFP для поддержки голосовых вызовов. Это руководство поможет вам разобраться в процессе переключения профилей и устранения возможных проблем.
Подготовка к работе
Для начала убедитесь, что все необходимые пакеты установлены:
- BlueZ версии 5.54
- PulseAudio версии 13.99.1
- oFono версии 1.31
Также убедитесь, что ваш Bluetooth-адаптер работает корректно и ваш телефон успешно подключен.
Проверка доступных профилей
Для проверки текущих настроек используйте:
pactl list cards
Эта команда покажет доступные профили для вашего Bluetooth-устройства. Например:
Profiles:
a2dp_source: High Fidelity Capture (A2DP Source) (sinks: 0, sources: 1, priority: 20, available: yes)
headset_audio_gateway: Headset Audio Gateway (HSP/HFP) (sinks: 1, sources: 1, priority: 10, available: no)
off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
Active Profile: off
Обратите внимание на статус профиля HSP/HFP. Если он помечен как available: no
, это означает, что PulseAudio не может использовать его.
Настройка PulseAudio
Для настройки автоматического переключения между профилями вам нужно изменить файл конфигурации PulseAudio. Откройте его с помощью любого текстового редактора, например, vim
:
sudo vim /etc/pulse/default.pa
В файле найдите секцию, которая загружает модули Bluetooth, и добавьте следующую строку:
load-module module-bluetooth-policy auto_switch=2
Таким образом, секция будет выглядеть следующим образом:
.ifexists module-bluetooth-discover.so
load-module module-bluetooth-policy auto_switch=2
load-module module-bluetooth-discover headset=ofono
.endif
Эта строка отвечает за автоматическое переключение профиля при изменении условий (например, входящий вызов).
Установка oFono
Убедитесь, что oFono запущен и настроен правильно. Если вы еще этого не сделали, выполните команду для активации oFono:
sudo systemctl start ofono
Устранение проблем с переключением
Если ваш телефон по-прежнему не переключается на HSP/HFP, возможно, вам нужно вручную изменить профиль в настройках PulseAudio. Для этого установите pavucontrol
, графический интерфейс для управления звуком:
sudo apt-get install pavucontrol
После установки откройте pavucontrol
и перейдите на вкладку Configuration. Выберите профиль Headset Audio Gateway (HSP/HFP) для вашего устройства.
Рекомендации по улучшению работы
Если вы сталкиваетесь с проблемами, связанными с качеством звука или необходимостью вручную переключать входные и выходные устройства, вы можете установить индикатор переключения звука. Для установки используйте:
sudo add-apt-repository ppa:yktooo/ppa
sudo apt-get update
sudo apt-get install indicator-sound-switcher
Этот инструмент облегчит управление профилями и может уменьшить необходимость ручного переключения.
Заключение
Переключение между профилями A2DP и HSP/HFP в PulseAudio на Raspberry Pi может быть сложной задачей. Однако, следуя вышеприведённым инструкциям и правильно настраивая ваше оборудование, вы сможете добиться желаемой функциональности. Если у вас возникнут дальнейшие проблемы, рассмотрите возможность обращения к документации на официальных страницах PulseAudio и oFono, а также на форумах сообщества Ubuntu.