Jestem nowy w Linuksie i nowy w skryptach Bluetooth. Do tej pory odkryłem:
- Bluez to domyślny stos BT.
- BluezTools to zestaw narzędzi, których można używać do łatwiejszej interakcji z Bluez
- DBus to interfejs, z którym łączy się Bluez podczas bezpośredniej interakcji ze sprzętem.
- PulseAudio to podsystem odpowiedzialny za wytwarzanie dźwięku w systemie.
To ma sens. Powiedzmy, że mam zestaw słuchawek BlueTooth, czego oczekiwałbym (wszystko po sparowaniu i zaufaniu), aby móc wydać polecenie, które może połączyć się bezpośrednio z określonym profilem w słuchawkach BT.
Ścieżka techniczna, o której myślę, mogłaby wyglądać następująco:
- Włącz słuchawki.
- Wydaj polecenie BluezTools - na przykład bt-audio -c
- Poczekaj, aż urządzenie połączy się z usługą, której szukam
- PulseAudio powinien teraz wybrać nowe urządzenie wyjściowe
- Wydaj inne polecenie, aby zmienić dźwięk z obecnego na nowy dźwięk wyjściowy (słuchawki BT).
- Ciesz się płynnym słuchaniem.
To wszystko wydaje się logiczne, ale rzeczywista implementacja nie jest taka i szukam DLACZEGO, aby lepiej zrozumieć problem i spróbować go naprawić.
Oto, co się właściwie dzieje:
- Włącz słuchawki.
- Wydaj polecenie BluezTools - na przykład bt-audio -c
- Poczekaj, aż urządzenie połączy się z usługą, której szukam
- PulseAudio powinien teraz wybrać nowe urządzenie wyjściowe
- Wydaj polecenie PulseAudio, aby zmienić profil audio z jakości telefonu na wysoką wierność.
Pozwól mi trochę rozwinąć tę kwestię. Zestaw słuchawkowy Bluetooth oferuje 2 tryby jakości (telefon i wysoką wierność). Tylko 1 nadaje się do słuchania muzyki.
Spodziewałbym się, że słuchawki BT prezentują każdy tryb jakości jako usługę, prawda? To założenie może się mylić, ale oczekiwałbym czegoś takiego
bt-audio -c highFidelityProfile
lub
bt-audio -changeProfile highFidelityProfile
Zamiast tego wydaje się, że Bluez po prostu obsługuje połączenie RAW z urządzeniem, i stamtąd musisz wydać: pacmd set-card-profile $ INDEX a2dp
To po prostu wydaje się zasadniczo błędne. Dlaczego kontrola jakości w podsystemie audio wymaga w związku z tym innej implementacji dla impulsu, alsa lub jakiegokolwiek innego podsystemu dźwięku?
czego mi brakuje? Dlaczego nie można połączyć się bezpośrednio z określonym profilem za pomocą Bluez / BluezTools itp.?
źródło