Чи можу я використовувати свій комп’ютер як приймач A2DP / Bluetooth?


40

По-перше, проблема: я використовую музичний плеєр Cowon як основний музичний плеєр із основними вушними пробками.

Він пропонує A2DP, і я хотів би, щоб мій нетбук (працює під управлінням UNE 10.04) виступав одержувачем.

Деякі ресурси в Інтернеті про a2dp, але більшість застаріли:

Відповіді:


47

Щоб використовувати вашу машину Ubuntu як пристрій Bluetooth a2dp, спочатку потрібно налаштувати її для реєстрації як кінцевої точки "мийки a2dp".

Пакет bluez в Ubuntu (10.04 і вище) містить утиліту під назвою sdptool, яка може бути використана для перевірки того, чи налаштований пристрій Bluetooth як раковина a2dp чи ні. Ось вихід із sdptool, який працює проти моєї гарнітури Bluetooth (адреса взята у діалоговому вікні "Налаштування Bluetooth" у центрі gnome-control):

$ 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 можуть включати модуль-bluetooth-політику, і він, можливо, вже встановив пристрій для зворотного зв'язку, але це, мабуть, не найпоширеніший випадок.

Напівавтоматичний спосіб налаштування зворотного зв'язку - якщо у вас також встановлена ​​програма GUI pavucontrol - це просто завантажити модуль зворотного звороту та налаштувати його за допомогою pavucontrol, оскільки PulseAudio запам’ятає налаштування. Завантаження модуля здійснюється з команди за допомогою pactl:

 pactl load-module module-loopback

Не бійтеся, якщо ви ще нічого не чуєте, або якщо у вас з’являються дивні ефекти зворотного зв’язку, нам потрібно повідомити новоствореному пристрою, з якого джерела отримати вхід, а з якого раковини, щоб спочатку надіслати вихід.

Відкрийте pavucontrol і відкрийте вкладку Конфігурація. Переконайтеся, що ваш пристрій Bluetooth відображається тут (після з'єднання з ним за допомогою blueman-менеджера або іншого інструмента 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

Список літератури:


чи можемо ми змінити карту каналів для конкретної мийки пристрою
Пракаш V Холкар,

привіт, я дякую за детальне керівництво. Команда pactl load-module module-bluethooth-discoverне працює в студії ubuntu 14.04. Тому я не бачу жодних bluezджерел pulseaudio, навіть якщо мій телефон правильно бачить ПК як аудіомобіль. Будь-які ідеї?
nass

якщо pactl list sources shortдля вас не відображається джерело bluez, я знайшов два можливі рішення: зателефонувати gdbus call --system --dest org.bluez --object-path /org/bluez/XXX/hci0/dev_XX_XX_XX_XX_XX_XX --method org.bluez.AudioSource.Connectкуди (шлях включає BD-адресу пристрою та шлях адаптера, з яким ви можете отримати gdbus call --system --dest org.bluez --object-path / --method org.bluez.Manager.DefaultAdapter). Або використовуйте d-ноги, як пояснено тут . Інакше підключіться на стороні телефону та почніть щось грати.
Тревіньо

Я досі не бачу жодного джерела з bluez, що з'являється. Linux Mint 17.3 "Роза" тут.
donquixote

1
Оце Так! з мінімальними змінами (/etc/bluetooth/main.conf замість audio.conf) це працює на Rasbian. Дякую! (Не потрібна конфігурація циклу в цій ОС)
jamie

13

Я використовую blueman, встановлений у програмному центрі Ubuntu. Клацніть правою кнопкою миші на значку blueman * -> "локальні послуги" -> аудіо-> Підтверджено прапорець "Розширений прийом звуку". До речі, я використовую це, щоб слухати на своєму ноутбуку Ubuntu 11.10, що я граю на своєму телефоні Android.

* Піктограма blueman показана в правому нижньому куті в оболонці gnome + ubuntu 11.10. Це мій випадок. Я сподіваюся, що це корисно певним чином для вас.


Інтерфейс конфігурації blueman для аудіо встановлює лише значення Enable = Source у /etc/bluetooth/audio.conf, тому я не бачу, як це дозволить android використовувати комп’ютер у якості аудіовиходу.
слангасек

ОК, тож якщо я встановив це в audio.conf, а потім відключити з обох сторін з'єднання, цього, здається, достатньо, щоб Android все-таки бачив комп'ютер як звукову раковину ...
slangasek

Я спробував це і не зміг його розпізнати як звукову раковину. : - /
Хорхе Кастро

blueman працював для мене в 12.04, з нульовими питаннями, крім того, що я опинився з двома значками Bluetooth у своєму аплеті індикатора.
HDave

7

Це справді просто в Ubuntu 12.04

Підключіть свій Bluetooth-пристрій

Шукайте свій пристрій Bluetooth та врахуйте його номер джерела:

pactl list sources 

Зробіть петлю для пристрою Bluetooth:

pactl load-module module-loopback source=$SOURCE_NUMBER  

Де $ SOURCE_NUMBER - це число, яке ви раніше взяли до відома.

Наприклад, я ввів таке, щоб змусити відтворення звуку працювати.

$ pactl load-module module-loopback source=3  

Це воно! Я знайшов рішення у верхній відповіді дещо складним, тому я спростив його таким чином (набагато менше вводити та копіювати / вставляти). Хоча моє рішення, ймовірно, зламається, якщо ви видалите будь-які аудіопристрої, перелічені перед пристроєм Bluetooth pactl list sources.

Крім того, не забудьте видалити модуль зворотного зв'язку перед відключенням пристрою Bluetooth:

Візьміть до уваги номер модуля створеного вами пристрою циклу:

pactl list short modules

Видаліть пристрій петлі:

pactl unload-module $MODULE_NUMBER

Попередні відповіді були написані до виходу 12.04, тому я впевнений, що зміни були. Наприклад, мені не довелося вручну вмикати використання пристроїв Bluetooth як джерела звуку (це було включено за замовчуванням). Однак мені іноді доводиться перемикати профіль "Media Audio" у налаштуваннях Bluetooth на телефоні (Samsung Captivate, що працює під CyanogenMod 9.1.0).

Напевно, існує спосіб використовувати dbus-монітор за допомогою скрипта оболонки для спостереження за підключеннями пристрою Bluetooth A2DP і автоматично завантажувати модуль петлі для нього, але це трохи над головою.

Сподіваємось, нам більше не потрібно буде робити цього вручну в Ubuntu 12.10.


Завантаживши модуль-петлю для конкретних мийок, чи можемо ми змінити карту каналів модульної петлі конкретного пристрою вліво або вправо
Пракаш V Холкар,

3

Протягом 13.04, з'єднайте свій вихідний пристрій з ноутбуком ubuntu, і він просто працює! Дуже круто виявити, що зараз це було просто.



0

Навіть простіше рішення, ніж відповідь.

Можна просто піти

sudo apt-get install pulseaudio*

Потім перезавантажте. Після перезавантаження підключіться до Bluetooth і просто відтворіть музику на телефоні. Все буде передано на ваш комп’ютер і відтворюватися на динаміках комп'ютера.

І так! Ласкаво просимо.


apt-getвикористовує регулярні вирази, а не символи. Отже, ви не маєте уявлення про те, що буде встановлено за допомогою pulseaudio*(підказка: починаються не лише пакунки pulseaudi). І PulseAudio вже є частиною встановленої Ubuntu за замовчуванням.
муру

Так! Але це спрацює для всіх ледачих людей, які хочуть, щоб справи працювали миттєво.
Адель Абула - MageBinary
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.