Aby używać komputera z systemem Ubuntu jako urządzenia Bluetooth a2dp, należy go najpierw skonfigurować, aby zarejestrować się jako punkt końcowy „ujścia a2dp”.
Bluez Opakowanie Ubuntu (10,04 i powyżej) zawiera program o nazwie sdptool , który może być używany do sprawdzania, czy urządzenie Bluetooth jest skonfigurowany jako zlewu a2DP czy nie. Oto wyjście z sdptool uruchomionego na moim zestawie słuchawkowym Bluetooth (adres pochodzi z okna dialogowego „Ustawienia Bluetooth” w centrum sterowania gnome):
$ 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
$
a oto dane wyjściowe po uruchomieniu na mojej lokalnej maszynie Ubuntu:
$ sdptool search --bdaddr local a2snk
Searching for a2snk on FF:FF:FF:00:00:00 ...
$
To pokazuje, że maszyna Ubuntu nie reklamuje się jako zlew a2dp. Jednak reklamuje się jako źródło 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
Umożliwia to maszynie Ubuntu prawidłowe sparowanie z zestawem słuchawkowym jako źródłem dźwięku, ale nie umożliwia używania maszyny Ubuntu jako wyjścia (zlewu) dla dźwięku Bluetooth.
Jeśli edytujesz /etc/bluetooth/audio.conf
, możesz włączyć obsługę ujścia a2dp, dodając ten wiersz pod [General]
sekcją:
Enable=Source
Jest to zarówno sprzeczne z intuicją - ponieważ dodajemy tutaj obsługę zlewu Bluetooth, a nie obsługę źródła - i w przeciwieństwie do komentarza w tym pliku, który twierdzi, że wszystkie zaimplementowane usługi są domyślnie włączone. :(
Po wprowadzeniu tej zmiany musisz ponownie uruchomić bluetoothd, uruchamiając sudo service bluetooth restart
.
Jeśli wcześniej sparowałeś urządzenie z Androidem i komputer Ubuntu podczas próby uzyskania tej pracy, musisz usunąć parowanie po obu stronach i ponownie je sparować, aby Android mógł rozpoznać Ubuntu jako dostępne urządzenie audio.
Gdy to zrobisz, urządzenie z Androidem powinno pojawić się jako urządzenie wejściowe w PulseAudio. Jeśli PulseAudio nie wykryje nowego źródła dźwięku Bluetooth, może być konieczne zainstalowanie i załadowanie modułu Bluetooth z wiersza poleceń:
sudo apt-get install pulseaudio-module-bluetooth
pactl load-module module-bluetooth-discover
Następnie musisz powiedzieć PulseAudio, aby skierowało to wejście audio do wyjścia / zlewu (takiego jak głośniki lub zestaw słuchawkowy Bluetooth) za pomocą połączenia pętli zwrotnej (prosta linia od źródła do zlewu).
Późniejsze wersje PulseAudio mogą zawierać moduł-moduł Bluetooth i może już mieć skonfigurowane urządzenie pętli zwrotnej, ale nie wydaje się to najczęstszym przypadkiem.
Półautomatycznym sposobem na skonfigurowanie połączenia pętli zwrotnej - jeśli masz również zainstalowany program GUI pavucontrol - jest po prostu załadować moduł pętli zwrotnej i skonfigurować go za pomocą pavucontrol, ponieważ PulseAudio zapamięta ustawienia. Ładowanie modułu odbywa się za pomocą komendy przy użyciu pactl:
pactl load-module module-loopback
Nie obawiaj się, jeśli jeszcze nic nie słyszysz lub otrzymujesz dziwne efekty sprzężenia zwrotnego, musimy powiedzieć nowopowstałemu urządzeniu, z którego źródła należy uzyskać sygnał wejściowy, a które zejść, aby wysłać sygnał wyjściowy jako pierwszy.
Otwórz pavucontrol i otwórz jego kartę Konfiguracja. Upewnij się, że urządzenie Bluetooth jest widoczne tutaj (po sparowaniu z nim za pomocą menedżera blueman lub innego narzędzia Bluetooth), a profil jest ustawiony na A2DP. Przejdź na kartę Urządzenia wejściowe i upewnij się, że Twoje urządzenie również się tutaj wyświetla i nie jest wyciszone. Teraz przejdź do zakładki Nagrywanie i spraw, aby nowo utworzone połączenie pętli zwrotnej używało urządzenia jako źródła z polem wyboru obok przycisku wyciszenia. Przejdź do karty Odtwarzanie, aby wybrać zlew, z którego połączenie pętli zwrotnej powinno korzystać w ten sam sposób. Jeśli urządzenie pętli zwrotnej nie wyświetla się na kartach, upewnij się, że wszystkie strumienie są wyświetlane przy użyciu pola wyboru u dołu każdej karty.
Powinieneś teraz usłyszeć dźwięk z urządzenia, jeśli jest odtwarzane, w głośnikach lub w dowolnym z wybranych odbiorników wyjściowych. Gdy urządzenie zostanie odłączone, urządzenie sprzężenia zwrotnego powróci do dostępnego zlewu i źródła, co może nie być pożądane, więc upewnij się, że wycisziłeś urządzenie sprzężenia zwrotnego, dopóki go nie potrzebujesz. Połączenie pętli zwrotnej przywróci to samo ujście / źródło przy następnym podłączeniu tego samego urządzenia Bluetooth dzięki modułowi - * - przywracającym moduły.
Jeśli to nie zadziała lub nie masz zainstalowanego pavucontrol, możesz zamiast tego ustawić pętlę zwrotną, stosując następującą metodę:
pactl load-module module-loopback source_dont_move=yes source=$BTSOURCE sink=$SINK
(Zamień $BTSOURCE
na nazwę źródła dla urządzenia Bluetooth widoczną w PulseAudio, np. bluez_source.14_DA_E9_2A_D7_57
I zamień $SINK
na nazwę wyjścia PulseAudio, do którego chcesz wysłać strumień audio, na przykład:. alsa_output.pci-0000_00_1b.0.analog-stereo
Możesz całkowicie pominąć argument sink i spowodować awarię do aktywnego zlewu i zmień go później za pomocą pavucontrol.)
- Możesz znaleźć za
$SINK
pomocą pactl list sinks
, jest pokazane poName:
- Podobnie można zobaczyć za
$BTSOURCE
pomocąpactl list sources
- W
source_dont_move
zapobiega argument połączenia sprzężenia zwrotnego z sięgnięcie do innego źródła dźwięku, gdy urządzenie Bluetooth jest przerywane. Zamiast tego jest usuwany i następnym razem będziesz musiał go skonfigurować ponownie.
Oto czym jest przykładem będzie wyglądać (Pamiętaj, aby zastąpić :
ze _
w adresie 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
Jeśli ładowanie modułu rezerwowego nie powiedzie się, spróbuj usunąć source_dont_move=yes
argument, najpierw udostępniono go w wersji 1.0. Uważaj jednak, aby usunąć to połączenie pętli zwrotnej przed upuszczeniem tego dźwięku, lub jeśli na przykład mikrofon laptopa nie jest wyciszony, możesz otrzymać bardzo złe opinie. Aby ręcznie porzucić to połączenie zwrotne, gdy skończysz, uruchom:
pactl unload-module $(pactl list short modules | grep "loopback.*$BTSOURCE" | cut -f1)
Ponownie zamień $BTSOURCE
na nazwę źródła PulseAudio, która odnosi się do twojego urządzenia Bluetooth. Możesz również zwolnić moduł, używając identyfikatora zwróconego przez polecenie 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
Bibliografia:
- Wpis na blogu opisujący niektóre szczegóły, jak to naprawić w Ubuntu.