Koppeln Sie mit einem Bluetooth-Gerät über das Terminal

12

Ich versuche, ein Bluetooth-Gerät über die Befehlszeile zu verbinden und zu koppeln. Ich kann dies über die GUI mit dem Standardprozess tun, aber ich möchte den gesamten Prozess automatisieren.

Ich suche nach Befehlen, die in einem Shell-Skript ausgeführt werden können, um eine Verbindung zum Bluetooth-Gerät herzustellen. Genau wie Linux "hcitool" - und "pand" -Befehle hat, versuche ich, äquivalente Befehle für macOS zu finden.

Wie kann ich das erreichen?

Ankur Bose
quelle

Antworten:

2

Dies scheint ein bisschen "hacky" zu sein, aber Sie können dies tun, indem Sie ein Oascript verwenden, das die für die Verbindung erforderlichen GUI-Interaktionen emuliert: /programming//a/23018886/5269642

Ich konnte leider keine dokumentierten APIs für Bluetooth finden. Der Oascript-Ansatz war der beste, den ich bisher finden / denken konnte.

SimMac
quelle
1

blueutil(erhältlich über HomeBrew) ist die Antwort. Ich habe es nur gemäß den Richtlinien in diesem Blog-Beitrag verwendet .

In meinem Fall hatte ich einen iMac mit macOS Catalina, auf dem kein Trackpad gekoppelt war. Ich steckte beim "Apple Crash Analytics senden?" Bildschirm ohne Tastatursteuerung. Mit SSH stellte ich eine Verbindung zum Computer her und verwendete die folgenden Befehle, um das Trackpad ohne Zugriff auf die GUI zu koppeln und dann zu verbinden. (Zuerst musste ich das Trackpad in den Erkennbaren Modus versetzen. Die Standard-PIN für Apple-Zeigergeräte lautet 0000.)

% blueutil --inquiry
address: d0-a6-xx-xx-xx-xx, not connected, not favourite, not paired, name: "-", recent access date: -
% blueutil --pair d0-a6-xx-xx-xx-xx
Type pin code (up to 16 characters) for "Cheshire, Josh’s Trackpad" (d0-a6-xx-xx-xx-xx) and press Enter: 0000
% blueutil --connect d0-a6-xx-xx-xx-xx

Zu diesem Zeitpunkt funktionierte das Trackpad.

Josh Cheshire
quelle
0

Das Tool blueutil verwendet private APIs aus dem IOBluetooth-Framework, um mit Bluetooth-Geräten zu interagieren. Sie können aktuelle Geräte auflisten, indem Sie:

blueutil --recent

und stellen Sie eine Verbindung zu einem bestimmten Gerät her, indem Sie:

blueutil --connect $device_adress
Friedrich
quelle