Профиль PulseAudio + HFP в Ubuntu

Целью является посещение вызова через сопряженные BT-устройства с использованием HFP.

Выполненные действия:

a. Используемое программное обеспечение:

-pulseaudio-4.99.2

-Bluez-5.14

-офоно-1.14

b. Вышеупомянутое приложение было запущено и затем, используя методы bluetoothctl, я подключил и подключил мобильное устройство к ПК с Ubuntu.

с. Звонок был сделан на мобильный. После разговора я пытался услышать звук через гарнитуру, подключенную к компьютеру с Ubuntu. Но не было слышно ни звука.

д. Я попытался перечислить приемник и источники bluez, используя следующую команду:

pactl list short sources | grep bluez_source
pactl list short sinks | grep -v Monitor | grep alsa_output.pci

e. Затем зациклите устройства, используя приведенную ниже команду

pactl load-module module-loopback source=[BTSOURCE] sink=[SINK]

f. Я также отредактировал /etc/bluetooth/audio.conf, чтобы включить

[General]
Enable=Gateway,Source,Socket,Sink,Media,Headset

Пожалуйста, помогите мне, если я что-то пропустил. Что-нибудь нужно изменить в файле daemon.conf?

Я также получаю эти журналы в pulseAudio

D: [pulseaudio] module-loopback.c: Loopback overall latency is 43.55 ms + 335.02 ms + 26.97 ms = 405.54 ms

D: [pulseaudio] module-loopback.c: Should buffer 2112 bytes, buffered at minimum 3346 bytes

I: [pulseaudio] module-loopback.c: New rate of 8061 Hz not within 2‰ of 7919 Hz, forcing smaller adjustment

D: [pulseaudio] module-loopback.c: [alsa_output.pci-0000_00_1b.0.analog-stereo] Updated sampling rate to 7934 Hz.

D: [pulseaudio] module-loopback.c: Loopback overall latency is 0.00 ms + 19584.88 ms + 0.00 ms = 19584.88 ms

D: [pulseaudio] module-loopback.c: Should buffer 96 bytes, buffered at minimum 154078 bytes

W: [pulseaudio] module-loopback.c: Sample rates too different, not adjusting (8000 vs. 15699).

D: [pulseaudio] module-loopback.c: [bluez_sink.4C_21_D0_3A_29_04] Updated sampling rate to 8000 Hz.

D: [bluetooth] ratelimit.c: 134 events suppressed

D: [bluetooth] memblock.c: Pool full

D: [alsa-sink-ALC892 Analog] memblock.c: Pool full

D: [bluetooth] memblock.c: Pool full

============= ================================================== =============

Пожалуйста, помогите мне !!!

2
задан 7 July 2014 в 20:19

2 ответа

С Bluez и ofono можно достигнуть его.

я попробовал его блюзом 4.x. Не уверенный, если это будет работать с блюзом 5.x.

https://bugs.freedesktop.org/show_bug.cgi? id=73325

Сначала для проверки HFP поддерживается аппаратными средствами.

$ sdptool browse local

Это перечислит все поддерживаемые профили. Это должно разоблачить что-то как:

Service Name: Hands-Free Audio Gateway
Service RecHandle: 0x10002
Service Class ID List:
  "Handsfree Audio Gateway" (0x111f)
  "Generic Audio" (0x1203)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 13
Profile Descriptor List:
  "Handsfree" (0x111e)
    Version: 0x0105

Service Name: Hands-Free
Service RecHandle: 0x10003
Service Class ID List:
  "Handsfree" (0x111e)
  "Generic Audio" (0x1203)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 7
Profile Descriptor List:
  "Handsfree" (0x111e)
    Version: 0x0105

Следующий шаг должен соединить Ваш телефон с ПК с помощью bluetoothctl или GUI. Теперь необходимо свериться с ofono для модемов. Здесь Ваш телефон действует как модем. Goto ofono тестируют каталог и тип

$./list-modems

Теперь, он должен перечислить Ваш телефон в списке. Затем включите, это

$./enable-modem

Начинает называть Ваш телефон, и Вы сможете получить речь к ПК.

0
ответ дан 7 July 2014 в 20:19

Я тоже столкнулся с этой проблемой. Если вы видите уровни звука с помощью pavucontrol, вы увидите, что звук на самом деле поступает на ноутбук, но маршрутизация звука (на уровне pulseaudio) настроена неправильно.

Когда вы подключите свой телефон с Bluetooth к машине с Linux и наберете вызов через телефон, вы увидите, что профиль Bluetooth переключен на HSP/HFP с помощью вкладки «Конфигурация» в pavucontrol.Вы также можете проверить, что для вашего устройства приемник и источник по умолчанию (PulseAudio) были переключены на bluez_sink и bluez_source.

Чтобы иметь возможность воспроизводить звук вызова через динамики/проводную гарнитуру и передавать свой голос во время вызова с помощью внутреннего микрофона/микрофона проводной гарнитуры, попробуйте этот скрипт.

#!/bin/bash
SOUNDCARD_SOURCE="Find using $ pacmd list-sources | grep -e 'index:' -e device.string -e 'name:'"
SOUNDCARD_SINK="Find using $ pacmd list-sinks | grep -e 'index:' -e device.string -e 'name:'"
BLUEZ_SOURCE="Find using $ pacmd list-sources | grep -e 'index:' -e device.string -e 'name:'"
BLUEZ_SINK="Find using $ pacmd list-sinks | grep -e 'index:' -e device.string -e 'name:'"
pactl unload-module `pactl list short modules | grep bluez_sink | cut -d 'm' -f 1`
pactl unload-module `pactl list short modules | grep bluez_source | cut -d 'm' -f 1`
pacmd "set-default-sink $SOUNDCARD_SINK"
pacmd "set-default-source $SOUNDCARD_SOURCE"
pactl load-module module-loopback source=$SOUNDCARD_SOURCE sink=$BLUEZ_SINK latency_msec=1
pactl load-module module-loopback source=$BLUEZ_SOURCE sink=$SOUNDCARD_SINK latency_msec=1

Что он делает, так это просто выгружает модули обратной связи pactl, загруженные конфигурацией, и подключает ваш микрофон к bluez_sink и подключает bluez_source к вашим динамикам/наушникам.

Это мой первый раз, когда я публикую решение, поэтому, пожалуйста, прокомментируйте для получения дополнительных разъяснений.

0
ответ дан 24 July 2020 в 15:37

Другие вопросы по тегам:

Похожие вопросы: