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

3

Tengo dos trackpads con Bluetooth, uno en el trabajo y otro en casa. ¿Hay una manera de seleccionar uno u otro desde la línea de comandos. Mi flujo de trabajo actual es subir al menú del bluetooth, pasar a casa u oficina y hacer clic en Conectar , pero me gustaría poder hacerlo desde la terminal.

    
pregunta nachocab 29.04.2016 - 02:57

3 respuestas

2

Terminé yendo con esta versión modificada de esta respuesta y creando dos archivos, uno con "Home Trackpad" y otro con "Office Trackpad". Funciona, pero se 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
    
respondido por el nachocab 04.05.2016 - 01:56
2
blued listall

Este comando de Terminal le dirá todos los dispositivos "conocidos" actualmente. Vas a tener que averiguar (leyendo entre líneas) cuál es cuál (asumiendo que hayas llamado a tus trackpads algo "bueno", 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 presioné "ctrl-c" para cancelar)

Supongamos que sabía 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.

Es posible que también tenga que agregar una función de eliminación, ya que parece que blued no "habla" bien con Terminal.

Entonces, tal vez un posible comando de shell sería:

blued join c4-2c-03-b7-87-57
killall terminal
    
respondido por el frank ankersly 04.05.2016 - 02:22
1

AFIK, no hay una utilidad de línea de comandos incorporada para administrar conexiones Bluetooth individuales.

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

  

El demonio Bluetooth maneja las transacciones SDP, la administración de claves de enlace,   y la aceptación de la conexión entrante. No puede ser usado directamente por el   usuario. (énfasis 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á automáticamente al dispositivo al iniciarse. En otras palabras, se conectará automáticamente a cualquier dispositivo dentro del rango cuando se inicie el daemon.

Obtén 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 de BT se está ejecutando o no; 1 está arriba, 0 está abajo.


Descargar el daemon

Al emitir el comando sudo killall blued se debe matar el daemon de BT. La desventaja aquí es que si tienes un teclado BT, dejará de funcionar.


(Re) Iniciando el daemon

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

Poniéndolo todo junto Juntándolo en una sola línea, podemos emitir el comando

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

Lo que esto hace es ...

  1. Mata al demonio
  2. Espera 3 segundos para asegurarse de que se ha eliminado (puedes cambiar esto si lo deseas)
  3. Inicia el demonio.

Ahora para hacerlo más fácil

Para facilitar esto, le damos un alias . Puedes llamar al alias como quieras; Acabo de usar "btrestart" porque tiene sentido en este contexto.

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

Ahora, en cualquier parte del shell de su terminal, si escribe btrestart emitirá el comando. Una vez que lo tienes funcionando, puedes agregarlo a tu .bash_profile para que el alias sea persistente en los reinicios:

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


Un par de advertencias

  1. Tendrá que introducir su contraseña cada vez. Launchctl es un comando del sistema y requiere privilegios elevados.
  2. Todos de sus dispositivos BT se desconectarán y volverán a conectar. Si solo tiene uno o dos dispositivos BT, esto puede no ser un gran problema

Espero que esto te guíe en la dirección correcta ...

    
respondido por el Allan 03.05.2016 - 17:34

Lea otras preguntas en las etiquetas