Come selezionare il dispositivo Bluetooth usando la riga di comando?

3

Ho due trackpad Bluetooth, uno al lavoro e uno a casa. C'è un modo per selezionare uno o l'altro dalla riga di comando. Il mio attuale flusso di lavoro sale al menu bluetooth, passa al passaggio a casa o in ufficio e fai clic su Connetti , ma vorrei poterlo fare dal terminale.

    
posta nachocab 29.04.2016 - 02:57
fonte

3 risposte

2

Ho finito con questa versione modificata di questa risposta e la creazione di due file, uno con "Home Trackpad" e un altro con "Office Trackpad". Funziona, ma ci vogliono alcuni secondi per completare

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
    
risposta data 04.05.2016 - 01:56
fonte
2
blued listall

Questo comando di Terminale ti dirà tutti i dispositivi attualmente "conosciuti". Dovrai capire (leggendo tra le righe) quale è quale (supponendo che tu abbia nominato i tuoi trackpad qualcosa di "bello", come "casa" o "lavoro", ecc.)

L'ho fatto e ho ricevuto:

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

(quindi ho premuto "ctrl-c" per annullare)

Supponiamo che sapessi che "c4-2c-03-b7-87-57" è "casa" ....

successivo:

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

Funziona con il mio sistema (10.9.5). YMMV.

Potrebbe anche essere necessario aggiungere una funzione kill, poiché sembra che blued non "parli bene" con Terminal.

Quindi forse un possibile comando di shell potrebbe essere:

blued join c4-2c-03-b7-87-57
killall terminal
    
risposta data 04.05.2016 - 02:22
fonte
1

AFIK, non esiste un'utilità da riga di comando integrata per gestire le singole connessioni Bluetooth.

In effetti, la pagina man man blued (demone Bluetooth OS X) afferma in particolare:

The Bluetooth daemon handles SDP transactions, link key management, and incoming connection acceptance. It cannot be used directly by the user. (Emphasis mine)

Quindi, sembra che tu sia limitato a caricare / scaricare il demone BT dalla riga di comando. Potrebbe essere utile, comunque. Se il dispositivo è attivo, OS X si connetterà automaticamente al dispositivo all'avvio. In altre parole, si connetterà automaticamente a qualsiasi dispositivo nel raggio d'azione all'avvio del daemon.

Ottieni lo stato di daemon Se emettiamo il comando defaults read /Library/Preferences/com.apple.Bluetooth.plist ControllerPowerState

Risponde con un 1 o 0 a seconda che il daemon BT sia in esecuzione o meno; 1 in aumento, 0 in basso.


Scarica il demone

L'emissione del comando sudo killall blued dovrebbe uccidere il demone BT. Il lato negativo è che se hai una tastiera BT, smetterà di funzionare.


(Ri) Avvio del demone

Se emettiamo il comando: launchctl start com.apple.blued , dirà al daemon di (ri) iniziare. Dopo averlo fatto, dovrebbe rilevare il dispositivo nel raggio d'azione.

Mettere tutto insieme Mettendolo insieme come una riga, possiamo impartire il comando

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

Ciò che fa è ....

  1. Elimina il demone
  2. Aspetta 3 secondi per assicurarti che sia stato ucciso (puoi cambiarlo se vuoi)
  3. Avvia il daemon.

Ora per renderlo più facile

Per semplificare questo, diamo un alias . Puoi chiamare l'alias come preferisci; Ho appena usato "btrestart" perché ha senso in questo contesto.

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

Ora, ovunque nella tua shell del terminale, se digiti btrestart , emetterà il comando. Una volta che hai funzionato, puoi aggiungerlo al tuo .bash_profile in modo che l'alias sia persistente attraverso i riavvii:

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


A Caveats

  1. Dovrai inserire la tua password ogni volta. Launchctl è un comando di sistema e richiede privilegi elevati.
  2. Tutti i dei tuoi dispositivi BT verranno scollegati e ricollegati. Se hai solo uno o due dispositivi BT, questo potrebbe non essere un grosso problema

Spero che questo ti porti nella giusta direzione ....

    
risposta data 03.05.2016 - 17:34
fonte

Leggi altre domande sui tag