Wysyłanie pauzy / wznowienia odtwarzania oraz poleceń Bluetooth następnej / poprzedniej ścieżki

10

Chciałbym, aby mój komputer Ubuntu wysyłał polecenia audio Bluetooth (odtwarzanie / pauza, następny / poprzedni utwór i przewijanie w górę / w dół) do innego urządzenia przesyłającego strumieniowo muzykę przez bluetooth do niego. Innymi słowy, chciałbym wdrożyć mój komputer Ubuntu „udając”, że są rodzajem słuchawek bluetooth, które potrafią zmieniać ścieżki, wstrzymywać i wznawiać muzykę.

Mam poniższą konfigurację zilustrowaną poniższymi zrzutami ekranu pavucontrol ( pt2czy urządzenie jest połączone przez bluetooth): wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

W tej konfiguracji przesyłanie strumieniowe działa zgodnie z oczekiwaniami (słyszę przesyłaną strumieniowo muzykę pt2), ale nie znalazłem żadnego sposobu, aby móc wysłać mu dowolny sygnał, taki jak pauza / wznowienie odtwarzania lub zmiana ścieżki.

Już się dowiedziałem, że istnieje wiele protokołów Bluetooth umożliwiających określone funkcje. Jeśli dobrze zrozumiałem specyfikację, interesuje mnie A2DP, czyli sposób, w jaki teraz podłączane są urządzenia. Ale pod rozwijanym profilem mam również opcje zestawu słuchawkowego HSP / HFP, bramki HSP / HFP i wyłączonego.

Mam zamiar opracować własną aplikację w języku Python, która pozwoli na wysyłanie takich poleceń, dlatego jestem zainteresowany wysyłaniem ich za pośrednictwem interfejsu API języka Python lub poleceń bash.

Zadaję to pytanie, ponieważ jestem zainteresowany sposobem komunikowania się z urządzeniami Bluetooth.

pt12lol
źródło
Nie mam okazji do testowania, ale interesuje mnie również rozwiązanie, ponieważ mam ten sam problem, w dyskusji tutaj: ubuntuforums.org/… wydaje się, że wystarczy dodać moduł wejściowy do załadowania, ale informacje nie są dużo w poście.
AtomiX84
@ AtomiX84 Mam wrażenie, że mam raczej przeciwny problem. Chcę, żeby mój komputer udawał słuchawki, a nie słuchawki podłączone do mojego komputera sterującego muzyką.
pt12lol
@kenn Chciałbym zobaczyć dość konkretną rzecz, podczas gdy odpowiedź łączysz z wyglądem raczej ogólnie. Czy możesz podać bardziej szczegółowy przykład specyficzny dla mojego przypadku użycia?
pt12lol
Nie jestem ekspertem w tej dziedzinie, możesz wyszukać github. Spójrz również na ten link stackoverflow.com/questions/48932249/…
kenn

Odpowiedzi:

10

Zainspirowany przez @kenn, zdecydowałem się zagłębić w narzędzia dbusi d-feetnarzędzia. W końcu osiągnąłem swój cel, używając następującego polecenia:

dbus-send --system --print-reply --dest=org.bluez /org/bluez/hci0/dev_44_78_3E_85_9D_6F org.bluez.MediaControl1.Play

co oczywiście uruchomiło odtwarzanie muzyki na moim urządzeniu mobilnym podłączonym do mojego komputera przez bluetooth.

Zasadniczo dla urządzeń Bluetooth to polecenie wyglądałoby następująco:

dbus-send --system --print-reply --dest=org.bluez /org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated> org.bluez.MediaControl1.<command_to_send>

Aby sprawdzić adres MAC urządzenia, uruchom bt-devices -l. W nawiasach pojawi się lista wszystkich znanych (ale niekoniecznie podłączonych lub nawet odkrytych) urządzeń z adresem MAC.

Aby znaleźć listę dozwolonych poleceń, zainstaluj za d-feetpomocą sudo apt install d-feet. Po uruchomieniu, wyszukaj bluezzapytanie w System Buszakładce i znajdź wpis na MAC urządzenia:

wprowadź opis zdjęcia tutaj

Istnieją metody podobne do rzeczy, które wykorzystują słuchawki bluetooth org.bluez.MediaControl1. Ale kiedy przeglądasz te drzewa, możesz znaleźć O WIELE więcej, to naprawdę jest warte Twojej uwagi.

dbus-sendto polecenie wysyłania sygnałów za pomocą dbus. --systemprzełącznik wskazuje, że chcemy używać rzeczy z System Buszakładki d-stóp. Jeszcze tego nie próbowałem, ale przypuszczam, że --print-replyjest to wyłącznie do celów debugowania i nie jest obowiązkowe. --dest=org.blezodnosi się do Namenagłówka d-stóp. /org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated>i org.bluez.MediaControl1.<command>odnoszą się do ścieżek drzewa obiektów.

pt12lol
źródło
To jest świetne ! Czy zamapowałeś te dbus-sendpolecenia na przyciskach multimedialnych komputera lub jak zamierzasz ich używać?
Robert Riedl
1
@Robert Riedl Chciałem złapać przyciski gamepad w dół zdarzeń i zmapować je za pomocą określonych poleceń wysłanych na urządzenie mobilne, które przesyła strumieniowo muzykę na mój komputer. Motywacją do tego projektu był mój syn, który uwielbia być menedżerem muzycznym, ale nie chciałem, aby spędzał zbyt dużo czasu przy ekranie. Postanowiłem więc dostarczyć mu inny rodzaj UX;)
pt12lol