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 pt2
dispositivo está conectado via bluetooth):
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.
fonte
Respostas:
Inspirado por @kenn, decidi aprofundar
dbus
ed-feet
ferramentas. Eventualmente, alcancei minha meta usando o seguinte comando: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:
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-feet
comsudo apt install d-feet
. Depois de executá-lo, aplique a pesquisabluez
naSystem Bus
guia e encontre a entrada no MAC dos seus dispositivos: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 usandodbus
.--system
A opção indica que queremos usar coisasSystem Bus
da 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.blez
refere-seName
no cabeçalho d-feet./org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated>
eorg.bluez.MediaControl1.<command>
consulte os caminhos da árvore de objetos.fonte
dbus-send
comandos para os botões de mídia do seu PC ou como pretende usá-lo?