Envío de pausa / reanudar la reproducción y comandos de bluetooth de pista siguiente / anterior

10

Me gustaría que mi PC Ubuntu envíe comandos de audio bluetooth (reproducir / pausar, canción siguiente / anterior y subir / bajar) a otro dispositivo que transmita música a través de bluetooth. En otras palabras, me gustaría implementar mi PC Ubuntu "simulando" ser una especie de auriculares bluetooth, que pueden cambiar pistas, pausar y reanudar la música.

Tengo la siguiente configuración ilustrada con las siguientes capturas de pantalla de pavucontrol (el pt2dispositivo está conectado a través de bluetooth): ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

En esta configuración, la transmisión funciona como se esperaba (puedo escuchar música transmitida pt2), pero no encontré ninguna manera de poder enviarle ninguna señal, como pausar / reanudar la reproducción o cambiar de pista.

Ya he descubierto que hay muchos protocolos bluetooth que permiten funciones específicas. Si entendí las especificaciones correctamente, lo que me interesa es A2DP, que es la forma en que los dispositivos están conectados ahora. Pero en el menú desplegable de perfil, también tengo opciones de unidad principal de auriculares HSP / HFP, puerta de enlace de auriculares HSP / HFP y apagado.

Voy a desarrollar mi propia aplicación en Python que permitirá enviar dichos comandos, por lo que estoy interesado en enviarlos a través de Python API o mediante comandos bash.

Estoy haciendo esta pregunta porque estoy interesado en cómo comunicarme con dispositivos Bluetooth.

pt12lol
fuente
No tengo la oportunidad de probar, pero también estoy interesado en la solución porque tengo el mismo problema, en una discusión aquí: ubuntuforums.org/… parece que solo necesita agregar un módulo de entrada para cargar, pero la información no es un problema. Mucho en el post.
AtomiX84
@ AtomiX84 Tengo la impresión de que tengo un problema bastante opuesto. Quiero que mi PC simule auriculares, no auriculares conectados a la música de dirección de mi PC reproducida en él.
pt12lol
@kenn Me gustaría ver algo bastante específico, mientras que la respuesta a la que se está vinculando parece bastante genérica. ¿Podría proporcionar un ejemplo más detallado específico para mi caso de uso?
pt12lol
No soy un experto en esa área, puedes buscar github. También eche un vistazo a este enlace stackoverflow.com/questions/48932249/…
kenn

Respuestas:

10

Inspirado por @kenn, decidí profundizar en dbusy d-feetherramientas. Finalmente alcancé mi objetivo usando el siguiente comando:

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

que por supuesto activó la reproducción de música en mi dispositivo móvil conectado a mi PC a través de Bluetooth.

Genéricamente para dispositivos bluetooth, este comando se vería así:

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 la ejecución de la dirección MAC de sus dispositivos bt-devices -l. Enumerará todos los dispositivos conocidos (pero no necesariamente conectados o incluso descubiertos) con la dirección MAC entre paréntesis.

Para encontrar la lista de comandos permitidos, instale d-feetcon sudo apt install d-feet. Después de ejecutarlo, aplique la búsqueda de bluezconsultas en la System Buspestaña y encuentre la entrada con el MAC de sus dispositivos:

ingrese la descripción de la imagen aquí

Hay métodos similares a los que usan auriculares bluetooth debajo org.bluez.MediaControl1. Pero, cuando navega por ese árbol, puede encontrar MUCHO más, esto realmente merece su atención.

dbus-sendes un comando para enviar señales usando dbus. --systemEl interruptor indica que queremos usar cosas de System Busla pestaña de d-feet. Todavía no lo he probado, pero supongo que --print-replyes solo para fines de depuración y no es obligatorio. --dest=org.blezse refiere al Nameencabezado d-pies. /org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated>y org.bluez.MediaControl1.<command>refiérase a las rutas de los árboles de objetos.

pt12lol
fuente
Esto es genial ! ¿Mapeó esos dbus-sendcomandos a los botones multimedia de su PC o cómo piensa usarlos?
Robert Riedl
1
@Robert Riedl Quería atrapar los eventos de los botones de mi gamepad y asignarlos con comandos específicos enviados al dispositivo móvil que transmite música a mi computadora. La motivación para este proyecto fue mi hijo, a quien le encanta ser gerente de música, pero no quería que pasara demasiado tiempo en la pantalla. Así que decidí proporcionarle otro tipo de UX;)
pt12lol