Automatycznie przełącz urządzenie wyjściowe dźwięku na zestaw słuchawkowy Bluetooth i wymuś profil A2DP podczas połączenia


11

Mój zestaw słuchawkowy Bluetooth (Plantronics Backbeat Go2) jest dobrze podłączony do mojego systemu, ale muszę wykonać kilka ręcznych kroków, aby wykonać tę pracę, którą bardzo chciałbym zautomatyzować:

  1. Po każdym ponownym uruchomieniu muszę uruchomić terminal pactl moduł modułu bluetooth Discover w terminalu, aby urządzenie mogło się w ogóle połączyć. Próbowałem umieścić to w skrypcie powłoki, aby uruchomić przy starcie, ale żadnych kości :(
  2. Mój zestaw słuchawkowy łączy się automatycznie bez żadnych problemów, ale zawsze domyślnie ustawiony jest na telefoniczny dupleks, a nawet wyłączony zamiast A2DP; Próbowałem i nie udało mi się przy użyciu kilku różnych strategii wymuszenia A2DP :(
  3. Wymuś, aby zestaw słuchawkowy BT był domyślnym urządzeniem wyjściowym. Wypróbowałem tutaj także kilka strategii ... niestety za każdym razem, gdy podłączam zestaw słuchawkowy, indeks z pacmd wydaje się zmieniać, więc nie mogę w ten sposób wymusić domyślnego ustawienia w pliku konfiguracyjnym PA-set-default-sink. I wydaje się, że użycie podanej nazwy również nie działa - jeśli zestaw słuchawkowy nie jest obecny, przełącza się na głośniki i nie przełącza się z powrotem, jeśli zestaw słuchawkowy się łączy :(

Dziękujemy za wszelkie porady dotyczące rozwiązania tych problemów!

Odpowiedzi:


8

To zadziałało dla mnie: https://sandalov.org/blog/2146/

Instrukcje skopiowane tutaj dla potomności:

Add to /etc/pulse/default.pa to automatically switch pulseaudio sink to Bluez:

.ifexists module-bluetooth-discover.so
load-module module-bluetooth-discover
load-module module-switch-on-connect  # Add this
.endif

Modify/Create /etc/bluetooth/audio.conf to auto select A2DP profile (instead of HSP/HFP):

[General]
Disable=Headset # Add this

Apply changes:

pulseaudio -k # Restarts pulseaudio

# You may need to turn your bluetooth headphones off, then back on

1
Uwaga: Komentarz „dodaj to” jest ważny, ponieważ wiersz „ .ifexists module-bluetooth-discover.so” już istnieje. Na początku próbowałem dodać całe cztery wiersze i nie działało. Działa tylko dodanie jednej linii we właściwym miejscu.
Fabian Röling,

2
na Ubuntu Bionic ustawiłem AutoConnect=trueraczej niż Wyłącz = zestaw słuchawkowy
develCuy

Należy pamiętać, że po wersji PulseAudio 11, auto_switch został przekonwertowany na liczbę całkowitą, więc potrzebuje wartości takiej jak 0, 1, 2 w zależności od potrzebnej funkcji automatycznego przełączania: freedesktop.org/wiki/Software/PulseAudio/Notes/11.0
mitsos1os

2

Bluez zawsze łączy je w trybie HSP (headest) nie tylko po ponownym uruchomieniu, ale także po odłączeniu i ponownym podłączeniu urządzenia obsługującego zarówno profil HSP, jak i profil A2DP.

Nie mogę dokładnie powiedzieć, co się dzieje pod maską (Bluetooth ma jakiegoś dziwactwa), ale podejrzewam, że mamy do podłączenia nowego urządzenia jako zestawu słuchawkowego zamiast jako audio lub AudioSink urządzenia poprzez dbus.

Wydaje się, że nie ma ustawienia, za pomocą którego moglibyśmy to kontrolować. Nie znam żadnych ustawień, które moglibyśmy ustawić domyślnie urządzenie Bluetooth na A2DP podczas łączenia (ale nie mogę wykluczyć, że gdzieś przegapiłem dokumentację). Można to uznać za błąd.

Kiedyś napisałem skrypt, aby nawiązać połączenia Bluetooth za pomocą profilu Audio . Ten skrypt został zawarty w małej aplikacji GUI w Pythonie ( bt-autoconnect na starterze lub przez mój ppa: takkat-nebuk / takkat ), który między innymi poprawkami robi dokładnie to, ale jest to raczej hack niż określone rozwiązanie i, niestety, robi to nie działa ze wszystkimi dostępnymi adapterami, ale najpierw połączy zestaw słuchawkowy Philips w trybie A2DP (mimo że ustawienia dźwięku nadal twierdzą, że był to HFP, ale to kolejny problem).


Dzięki za wejście Takkat ... Myślę, że mam obręcz i będzie to proces ręczny :(
Logos
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.