Enviar pausa / retomar a reprodução e comandos bluetooth da faixa seguinte / anterior

10

Gostaria que meu PC Ubuntu enviasse comandos de áudio bluetooth (reproduzir / pausar, música seguinte / anterior e ativar / desativar) para outro dispositivo que transmita música via bluetooth para ele. Em outras palavras, eu gostaria de implementar o meu PC Ubuntu "fingindo" ser um tipo de fone de ouvido bluetooth, capaz de mudar de faixa, pausar e retomar a música.

Tenho a seguinte configuração ilustrada com as capturas de tela do pavucontrol abaixo (o pt2dispositivo está conectado via bluetooth): insira a descrição da imagem aqui insira a descrição da imagem aqui

Nesta configuração, o streaming funciona conforme o esperado (eu posso ouvir a música transmitida pt2), mas não encontrei nenhuma maneira de enviar nenhum sinal, como pausar / retomar a reprodução ou alterar a faixa.

Eu já descobri que existem muitos protocolos bluetooth que permitem funções específicas. Se entendi as especificações corretamente, o que me interessa é o A2DP, que é a maneira como os dispositivos estão conectados agora. Mas no menu suspenso do perfil, também tenho as opções de unidade principal do headset HSP / HFP, gateway HSP / HFPheadset e desativada.

Vou desenvolver meu próprio aplicativo em Python, que permitirá o envio desses comandos, por isso estou interessado em enviá-los via API Python ou via comandos bash.

Estou fazendo esta pergunta porque tenho interesse em saber como posso me comunicar com dispositivos bluetooth.

pt12lol
fonte
Não tenho oportunidade de testar, mas também estou interessado na solução, porque tenho o mesmo problema, em uma discussão aqui: ubuntuforums.org/… parece precisar apenas adicionar o módulo de entrada para carregar, mas as informações não são muito no post.
AtomiX84 30/01/19
@ AtomiX84 Tenho a impressão de que tenho um problema oposto. Quero que meu PC fingir fones de ouvido, e não fones de ouvido conectados à música de direção do PC, seja reproduzido nele.
precisa saber é o seguinte
@kenn Gostaria de ver algo bastante específico, enquanto a resposta está vinculando a aparência de maneira bastante genérica. Você poderia fornecer um exemplo mais detalhado específico para o meu caso de uso?
precisa saber é
Não sou especialista nessa área, você pode procurar no github. Também dê uma olhada neste link stackoverflow.com/questions/48932249/…
kenn

Respostas:

10

Inspirado por @kenn, decidi aprofundar dbuse d-feetferramentas. Eventualmente, alcancei minha meta usando o seguinte comando:

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

que, é claro, acionou a reprodução de música no meu dispositivo móvel conectado ao meu PC via bluetooth.

Geralmente, para dispositivos bluetooth, esse comando seria semelhante a:

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>

Para verificar o endereço MAC dos seus dispositivos, execute bt-devices -l. Ele listará todos os dispositivos conhecidos (mas não necessariamente conectados ou mesmo descobertos) com endereço MAC entre parênteses.

Para encontrar a lista de comandos permitidos, instale d-feetcom sudo apt install d-feet. Depois de executá-lo, aplique a pesquisa bluezna System Busguia e encontre a entrada no MAC dos seus dispositivos:

insira a descrição da imagem aqui

Existem métodos semelhantes aos que usam fones de ouvido bluetooth em org.bluez.MediaControl1 . Mas, quando você navega nessas árvores, pode encontrar MUITO MAIS, isso realmente merece sua atenção.

dbus-sendé um comando para enviar sinais usando dbus. --systemA opção indica que queremos usar coisas System Busda guia d-feet. Ainda não tentei, mas acho que --print-replyé apenas para fins de depuração e não é obrigatório. --dest=org.blezrefere-se Nameno cabeçalho d-feet. /org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated>e org.bluez.MediaControl1.<command>consulte os caminhos da árvore de objetos.

pt12lol
fonte
Isso é ótimo ! Você mapeou esses dbus-sendcomandos para os botões de mídia do seu PC ou como pretende usá-lo?
Robert Riedl
1
@Robert Riedl Eu queria pegar os botões do meu gamepad nos eventos e mapeá-los com comandos específicos enviados ao dispositivo móvel que transmite música para o meu computador. A motivação para este projeto foi meu filho que gosta de ser gerente de música, mas eu não queria que ele passasse muito tempo na tela. Então eu decidi fornecer a ele outro tipo de UX;)
pt12lol 01/02/19