Antecedentes: estoy usando mi auricular bluetooth como salida de audio. Logré que funcione mediante la larga lista de instrucciones en la documentación de la comunidad de BluetoothHeadset , y he automatizado el proceso de activación de los auriculares como salida de audio predeterminada en un script, gracias a otra pregunta .
Sin embargo, dado que uso el auricular bluetooth con mi teléfono y mi computadora (y el auricular no admite dos conexiones de entrada) para que el teléfono no "robe" la conexión cuando el teléfono está encendido, forcé el auricular a modo de descubrimiento cuando se conecta a la computadora (el teléfono se conecta automáticamente).
Entonces, aunque el auricular está bien emparejado y se conectaría automáticamente en el escenario "normal", siempre tengo que usar el pequeño icono de Bluetooth en el área de notificación para conectarme realmente a mi dispositivo (ver captura de pantalla).
Lo que quiero evitar: esta GUI para conectarse a un dispositivo bluetooth conocido y emparejado :
Lo que quiero en cambio: me gustaría hacer que el bluetooth haga exactamente lo que hace hacer clic en el elemento de conexión en la GUI, solo usando la línea de comando. Quiero usar la línea de comando para poder hacer un solo atajo de pulsación de tecla para la acción, y no necesitaría navegar por la GUI cada vez que quiera establecer una conexión con el dispositivo.
La pregunta: ¿Cómo puedo intentar conectarme a un dispositivo bluetooth específico, conocido y emparejado desde la línea de comandos?
Pregunta adicional: ¿Cómo puedo saber si la conexión fue exitosa o no?
fuente
Respuestas:
Demonio Bluetooth
En la instalación predeterminada, un demonio ( bluetoothd ) se ejecuta en segundo plano (se ejecuta desde el archivo
/etc/init.d/bluetooth
). Este demonio se encarga de reconocer y conectarse a dispositivos bluetooth conocidos y puede configurarse con archivos de configuración/etc/bluetooth
. Para conectar automáticamente un auricular, la siguiente líneaaudio.conf
debe estar descomentada (eliminar#
):Para reiniciar el tipo de daemon
sudo /etc/init.d/bluetooth restart
.Observación: el uso de la herramienta de línea de comandos
sudo hcitool cc <MAC-Adress>
no condujo a una conexión estable a un dispositivo conocido en el entorno de prueba aquí cuando el demonio se estaba ejecutando.DBus
Para conectar un auricular desconectado pero físicamente presente y emparejado, podemos usar D-Bus desde un script. Aquí hay un ejemplo en python:
En caso de que tengamos más de un dispositivo Bluetooth, tendremos que adaptarlo
devicePath
adecuadamente, por supuesto. El ejemplo anterior conectará aHeadset
. Cambie la interfaz a un protocolo diferente para cualquier otro servicio (por ejemploAudioSink
).Pulseaudio
Si conoce la dirección MAC de su dispositivo Bluetooth, puede conectarlo como un sumidero de salida para pulseaudio:
Donde xx_xx_xx_xx_xx_xx es la dirección MAC (reemplace ':' por '_' para que pulseaudio lo reconozca).
Vea también esta respuesta para más detalles.
fuente
Sink bluez_sink.xx_xx_xx_xx_xx_xx does not exist.
prueban tanto en mayúsculas como en minúsculas.bt
oblue
está en la listapacmd list-sinks
. (Reporta solo 1 sumidero disponible.)Utilizo este script para conectar mi dispositivo de audio Bluetooth. Si sus auriculares ya están emparejados, debería poder conectarlos de la misma manera usando org.bluez.Headset.Connect / Disconnect en lugar de org.bluez.Audiosink.Connect / Disconnect .
HTH!
fuente
16.04
, gracias! otros, no te olvides de pasar laon
opción al script!Uso i3 como administrador de ventanas, por lo que no tengo disponible el icono de la bandeja de Bluetooth. Por alguna razón, el botón de verificación en la configuración de la unidad no es sensible, por lo que necesito una forma de hacerlo de vez en cuando cuando mis auriculares no se conectan.
Parece que
bluez
ha cambiado su API dbus . La respuesta utilizandoorg.bluez.Manager
ya no parece funcionar. En cambio, se recomienda su usoObjectManager
.Aquí hay un script de Python actualizado que conectará los primeros auriculares bluetooth no conectados que encuentre (¿presumiblemente la lista incluye todos los dispositivos emparejados?):
Este ejemplo, como el otro ejemplo en este hilo, utiliza el
dbus
paquete Python. En ubuntu 16.04 instalé esto a travésapt-get install python-dbus
.Si desea coincidir con otros criterios, este documento parece mostrar una lista de propiedades que se pueden consultar a través de dbus.
Tengo este script guardado en el
~/.local/bin/bt-connect-headset
que está en miPATH
para poder ejecutarlo desde el iniciador i3. Haga que sea ejecutable (chmod +x bt-connect-headset
) si planea usarlo como un comando.Este script solo se ha probado en un ubuntu actualizado 16.04 a partir del 28/09/2018.
fuente
2360344
lugar de0x240404
.Disconnect()
método. No lo he probado, pero probablemente sea una apuesta segura;).first unconnected bluetooth headset
: ¿usará siempre el auricular (si está encendido) antes que otro dispositivo como altavoces bluetooth (sin importar la posición en la lista)? Eso es lo que pasa en mi caso. - Además, para desconectar no puedo hacerlo simplemente cambiando la última línea aadapter.Disconnect()
.)Después de probar algunos de los anteriores (los scripts no funcionaron para mí) encontré la siguiente solución.
Primero averigüe la dirección MAC del dispositivo al que desea conectarse
Esto ingresará un shell y enumerará todos los dispositivos disponibles con dirección. ("salir" para salir del shell y volver al indicador)
Luego, conéctese al dispositivo Bluetooth XX: XX: XX: XX: XX: XX:
para desconectar
He estado buscando esto durante bastante tiempo, nada parecía funcionar, me sentí tan aliviado cuando me enteré. Pensé que otros querrían saberlo también. :))
fuente
~$ bluetoothctl Agent registered [UE BOOM 2]#
. Entoncesdisconnect "UE BOOM 2" Device UE BOOM 2 not available
.bluetoothctl
? Debe alimentar los comandos con la dirección MAC del dispositivo, que es la combinación de valores HEX en el formato XX: XX: XX: XX: XX: XX, donde X es una letra o un número.echo -e 'connect CC:AF:78:AF:59:03' | bluetoothctl
obtener:Agent registered [bluetooth]# connect CC:AF:78:AF:59:03 Device CC:AF:78:AF:59:03 not available