Чтобы использовать ваш компьютер Ubuntu в качестве устройства Bluetooth a2dp, вы должны сначала настроить его для регистрации в качестве конечной точки «приемника a2dp».
Пакет bluez в Ubuntu (10.04 и выше) включает в себя утилиту sdptool, которую можно использовать для проверки, настроено ли устройство Bluetooth в качестве приемника a2dp или нет. Вот вывод sdptool, запущенного на моей гарнитуре Bluetooth (адрес берется из диалога «Настройки Bluetooth» в gnome-control-center):
$ sdptool search --bdaddr 00:18:16:3A:3B:D4 a2snk
Searching for a2snk on 00:18:16:3A:3B:D4 ...
Service RecHandle: 0x10002
Service Class ID List:
"Audio Sink" (0x110b)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 25
"AVDTP" (0x0019)
uint16: 0x102
Profile Descriptor List:
"Advanced Audio" (0x110d)
Version: 0x0102
$
и вот вывод при запуске на моей локальной машине Ubuntu:
$ sdptool search --bdaddr local a2snk
Searching for a2snk on FF:FF:FF:00:00:00 ...
$
Это показывает, что машина Ubuntu не рекламирует себя как приемник a2dp. Однако он рекламирует себя как источник a2dp:
$ sdptool search --bdaddr local a2src
Searching for a2src on FF:FF:FF:00:00:00 ...
Service Name: Audio Source
Service RecHandle: 0x10003
Service Class ID List:
"Audio Source" (0x110a)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 25
"AVDTP" (0x0019)
uint16: 0x102
Profile Descriptor List:
"Advanced Audio" (0x110d)
Version: 0x0102
Это позволяет устройству Ubuntu правильно сопрягаться с гарнитурой в качестве источника звука, но не позволяет использовать устройство Ubuntu в качестве выхода (приемника) для звука Bluetooth.
Если вы редактируете /etc/bluetooth/audio.conf
, вы можете включить поддержку приемника a2dp, добавив эту строку под [General]
разделом:
Enable=Source
И то, и другое нелогично названо, поскольку мы добавляем здесь поддержку приемника Bluetooth, а не поддержку исходного кода, и это противоречит комментарию в этом файле, в котором утверждается, что все реализованные сервисы включены по умолчанию. :(
После внесения этого изменения вам нужно будет перезапустить bluetoothd, запустив его sudo service bluetooth restart
.
Если ранее вы пытались выполнить сопряжение устройства Android и компьютера Ubuntu, пытаясь получить эту работу, вам нужно будет удалить сопряжение с обеих сторон и выполнить повторное сопряжение, чтобы Android распознал Ubuntu как доступное аудиоустройство.
После этого устройство Android должно отображаться как устройство ввода в PulseAudio. Если PulseAudio не обнаруживает новый источник звука Bluetooth, вам может потребоваться установить и загрузить модуль Bluetooth из командной строки:
sudo apt-get install pulseaudio-module-bluetooth
pactl load-module module-bluetooth-discover
Затем вам нужно указать PulseAudio направить этот аудиовход на ваш выход / приемник (например, на ваши динамики или гарнитуру Bluetooth) с помощью петлевого соединения (прямая линия от источника к приемнику).
В более поздних версиях PulseAudio может быть включена политика module-bluetooth, и он, возможно, уже настроил для вас устройство обратной связи, но, похоже, это не самый распространенный случай.
Полуавтоматический способ установить петлевое соединение - если у вас также установлена программа pavucontrol GUI - просто загрузить петлевой модуль и настроить его с помощью pavucontrol, поскольку PulseAudio запомнит настройки. Загрузка модуля выполняется из команды с использованием pactl:
pactl load-module module-loopback
Не бойтесь, если вы еще ничего не слышите, или если вы получаете странные эффекты обратной связи, нам нужно сообщить вновь созданному устройству, какой источник получить входной сигнал и какой приемник, чтобы отправить выход в первую очередь.
Откройте pavucontrol и откройте его вкладку Конфигурация. Убедитесь, что ваше Bluetooth-устройство отображается здесь (после сопряжения с ним с помощью blueman-manager или другого инструмента Bluetooth) и для профиля установлено значение A2DP. Перейдите на вкладку Устройства ввода и убедитесь, что ваше устройство также отображается здесь и не отключено. Теперь переключитесь на вкладку «Запись» и сделайте так, чтобы вновь созданное петлевое соединение использовало ваше устройство в качестве источника с полем выбора рядом с кнопкой отключения звука. Перейдите на вкладку «Воспроизведение», чтобы выбрать приемник, который петлевое соединение должно использовать таким же образом. Если петлевое устройство не отображается на вкладках, убедитесь, что все потоки отображаются с помощью поля выбора внизу каждой вкладки.
Теперь вы должны услышать звук с вашего устройства, если оно воспроизводится, в ваших динамиках или в любом другом выходном приемнике, который вы выбрали. Когда ваше устройство отключено, устройство обратной петли переключится на доступный приемник и источник, что может быть нежелательно, поэтому убедитесь, что вы отключаете устройство обратной связи, пока оно вам не понадобится. Шлейфовое соединение восстановит тот же приемник / источник при следующем подключении того же устройства Bluetooth благодаря модулям * восстановления модулей.
Если это не сработает или у вас не установлен pavucontrol, вы можете вместо этого настроить обратную петлю, используя следующий метод:
pactl load-module module-loopback source_dont_move=yes source=$BTSOURCE sink=$SINK
(Замените $BTSOURCE
на имя источника для вашего устройства Bluetooth, как видно на PulseAudio, например bluez_source.14_DA_E9_2A_D7_57
; и замените $SINK
на имя выхода PulseAudio, на который вы хотите отправить аудиопоток, например:. alsa_output.pci-0000_00_1b.0.analog-stereo
Вы можете полностью исключить аргумент приемника и сделать его запасным. к активному стоку, и измените его позже через pavucontrol.)
- Вы можете найти
$SINK
с pactl list sinks
, это показано послеName:
- Точно так же вы можете увидеть
$BTSOURCE
сpactl list sources
- В
source_dont_move
аргументе предотвращает соединительный шлейф от падения назад к другому источнику звука , когда устройство Bluetooth отключено. Вместо этого он удаляется, и вам придется настроить его снова в следующий раз.
Вот что пример один будет выглядеть ( Не забудьте заменить :
с _
в адрес Bluetooth!):
pactl load-module module-loopback source_dont_move=yes source=bluez_source.14_DA_E9_2A_D7_57 sink=alsa_output.pci-0000_00_14.2.analog-stereo
Если загрузка резервного модуля не удалась, попробуйте удалить source_dont_move=yes
аргумент, он был впервые доступен в версии 1.0. Однако будьте осторожны, чтобы удалить это петлевое соединение перед тем, как отключить звук, или, например, если микрофон вашего ноутбука выключен, вы можете получить очень плохую обратную связь. Чтобы завершить это петлевое соединение вручную, когда закончите, запустите:
pactl unload-module $(pactl list short modules | grep "loopback.*$BTSOURCE" | cut -f1)
Снова замените $BTSOURCE
имя источника PulseAudio, которое относится к вашему устройству Bluetooth. Вы также можете выгрузить модуль, используя идентификатор, возвращаемый командой load-module:
$ pactl load-module module-loopback source_dont_move=yes source=bluez_source.14_DA_E9_2A_D7_57 sink=alsa_output.pci-0000_00_14.2.analog-stereo
15
$ pactl unload-module 15
Ссылки: