8 votos

¿Cómo seleccionar el dispositivo Bluetooth utilizando la línea de comandos?

Tengo dos trackpads Bluetooth, uno en el trabajo y otro en casa. ¿Hay alguna forma de seleccionar uno u otro desde la línea de comandos? Mi flujo de trabajo actual es ir hasta el menú bluetooth, se cierne sobre el hogar o la oficina y haga clic en Conectar pero me gustaría poder hacerlo desde la terminal.

0 votos

¿Puedes aclarar tu respuesta para que sepamos qué has probado ya en la línea de comandos? De lo contrario, recibirás un montón de sugerencias/respuestas inútiles. También, si es relevante, es posible que desee ampliar en por qué desea conectarse a través de la terminal - Lo pregunto porque si es para evitar ver tipo de problema, entonces puede haber otras opciones mejores para evitar que el uso de la terminal.

12voto

chr Puntos 136

Esta aplicación CLI de código abierto Conector Bluetooth parece una buena solución. He probado y confirmado que funciona desde MacOS 10.15.2.

Está disponible en GitHub así como Homebrew:

$ brew install bluetoothconnector
$ BluetoothConnector --connect 00-11-22-33-44-55 --notify
$ BluetoothConnector --disconnect 00-11-22-33-44-55

0 votos

Pero no hay descubrimiento de nuevos dispositivos :(

3voto

nachocab Puntos 209

Terminé yendo con esta versión modificada de este responder y creando dos archivos, uno con "Home Trackpad" y otro con "Office Trackpad". Funciona, pero tarda unos segundos en completarse

tell application "System Events" to tell process "SystemUIServer"
  set bt to (first menu bar item whose description is "bluetooth") of menu bar 1
  click bt
  tell (first menu item whose title is "Home Trackpad") of menu of bt
    click
    tell menu 1
      if exists menu item "Connect"
        click menu item "Connect"
        return "Connecting..."
      else
        click bt  -- close main dropdown to clean up after ourselves
        return "No connect button; is it already connected?"
      end if
    end tell
  end tell
end tell

0 votos

He utilizado el código anterior. Una nota, sin embargo, si el nombre del dispositivo tiene un apóstrofe (por ejemplo, "Airpods de Bob", entonces puede que tenga que utilizar un carácter no estándar. Parece que los dispositivos que se configuraron en un teléfono suelen utilizar el carácter U+2019, mientras que nuestros IDE suelen utilizar U+0027. Copié/pegué el apóstrofe de fantasía y entonces esto funcionó bien. Estoy usando Alfred para activarlo y sólo tarda fracciones de segundo

3voto

Wayne Khan Puntos 875

Acabo de hacerlo con https://github.com/toy/blueutil .

Lo instalé desde MacPorts:

$ sudo port install blueutil

averiguó el ID de mi dispositivo:

$ blueutil --paired
address: 03-5e-1c-4a-a8-11, not connected, not favourite, not paired, name: "Los Headphones", recent access date: 2020-03-17 17:58:09 +0000
...

Conectado:

$ blueutil --connect 03-5e-1c-4a-a8-11

1 votos

Brew install blueutil

2voto

Douglas Puntos 10417

AFIK, no hay ninguna utilidad de línea de comandos integrada para gestionar conexiones Bluetooth individuales.

De hecho, la página man man blued (demonio Bluetooth de OS X) establece específicamente:

El demonio Bluetooth han y la aceptación de conexiones entrantes. No se puede utilizar dire usuario. (El subrayado es mío)

Por lo tanto, parece que está limitado a cargar/descargar el demonio BT desde la línea de comandos. Eso puede ser útil, sin embargo. Si su dispositivo está activo, OS X se conectará al dispositivo automáticamente al iniciarse. En otras palabras, se conectará automáticamente a cualquier dispositivo dentro del alcance cuando se inicie el demonio.

Obtener el estado del demonio Si emitimos el comando defaults read /Library/Preferences/com.apple.Bluetooth.plist ControllerPowerState

Responde con un 1 o 0 dependiendo de si el demonio BT se está ejecutando o no; siendo 1 si está activo y 0 si está inactivo.

Descargar el demonio

Emisión del comando sudo killall blued debería matar al demonio BT. El inconveniente es que si tienes un teclado BT, dejará de funcionar.

(Re)Arrancar el Daemon

Si emitimos el comando launchctl start com.apple.blued le dirá al demonio que (re)arranque. Después de hacerlo, debería detectar el dispositivo dentro del alcance.

Puesta en común Juntándolo todo en una línea, podemos emitir el comando

sudo killall blued && sleep 3 && launchctl start com.apple.blued

Lo que esto hace es....

  1. Matar al demonio
  2. Espera 3 segundos para asegurarse de que se ha matado (puede cambiarlo si lo desea)
  3. Inicia el demonio.

Ahora para hacerlo más fácil

Para hacerlo más fácil, le damos un alias . Puedes llamar al alias como quieras; yo he usado "btrestart" porque tiene sentido en este contexto.

alias btrestart=sudo killall blued && sleep 3 && launchctl start com.apple.blued

Ahora, en cualquier lugar de su shell de terminal, si escribe btrestart emitirá el comando. Una vez que lo tengas funcionando, puedes añadirlo a tu .bash_profile para que el alias sea persistente entre reinicios:

echo alias btrestart=sudo killall blued && sleep 3 && launchctl start com.apple.blued >> ~/.bash_profile

Un par de advertencias

  1. Tendrás que introducir tu contraseña cada vez. Launchctl es un comando del sistema y requiere privilegios elevados.
  2. Todos de tus dispositivos BT se desconectarán y volverán a conectarse. Si sólo tienes uno o dos dispositivos BT, puede que esto no suponga un gran problema.

Espero que esto te haga avanzar en la dirección correcta....

2voto

frank ankersly Puntos 144
blued listall

Este comando de Terminal te dirá todos los dispositivos 'conocidos' actualmente. Tendrás que averiguar (leyendo entre líneas) cuál es cada uno (suponiendo que hayas puesto a tus trackpads un nombre "bonito", como "casa" o "trabajo", etc.).

Hice esto, y obtuve:

2016-05-03 20:14:58.392 blued[3852:507] hostControllerOnline - Number of Paired devices = 3, List of Paired devices = (
    "d8-96-95-e0-3e-f8",
    "c4-2c-03-b7-87-57",
    "90-84-0d-e4-7b-41"
)
link key found for device: c4-2c-03-b7-87-57
2016-05-03 20:15:04.637 blued[3852:507] link key found for device: c4-2c-03-b7-87-57
2016-05-03 20:15:04.639 blued[3852:507] [setSystemPreference] syncs returns false
2016-05-03 20:15:04.639 blued[3852:507] Save link key for device: c4-2c-03-b7-87-57
link key found for device: 90-84-0d-e4-7b-41
2016-05-03 20:15:04.640 blued[3852:507] link key found for device: 90-84-0d-e4-7b-41
2016-05-03 20:15:04.640 blued[3852:507] Save link key for device: 90-84-0d-e4-7b-41
link key found for device: d8-96-95-e0-3e-f8
2016-05-03 20:15:04.640 blued[3852:507] link key found for device: d8-96-95-e0-3e-f8
2016-05-03 20:15:04.641 blued[3852:507] Save link key for device: d8-96-95-e0-3e-f8 
Create connection failed (0x4) for device: D8-96-95-E0-3E-F8

(luego pulsé "ctrl-c" para cancelar)

Supongamos que supiera que "c4-2c-03-b7-87-57" es 'home'....

siguiente:

blued join c4-2c-03-b7-87-57

Esto funciona en mi sistema (10.9.5). YMMV.

También es posible que tenga que añadir una función de matar, ya que parece que blued no "habla" bien con Terminal.

Así que tal vez un posible comando de shell sería:

blued join c4-2c-03-b7-87-57
killall terminal

0 votos

Gracias. Esto es exactamente lo que necesitaba. Mucho más rápido que hacerlo con applescript y no hay necesidad de introducir una contraseña sudo. En lugar de killall Acabo de pulsar ctrl+c otra vez

0 votos

Creo que he hablado demasiado pronto. Tu comando permite conectar y desconectar el último comando bluetooth activado, pero al cambiar de uno a otro falla con este error: Create connection failed (0x4) for device: 7C-C3-A1-4D-CF-99

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X