Сопряжение с устройством Bluetooth через терминал

Я пытаюсь подключить и выполнить сопряжение устройства Bluetooth из командной строки. Я могу сделать это через графический интерфейс, используя стандартный процесс, но я хочу автоматизировать весь процесс.

Я ищу команды, которые можно выполнить в сценарии оболочки для подключения к устройству Bluetooth. Точно так же, как в Linux есть команды «hcitool», «pand», я пытаюсь найти эквивалентные команды для macOS.

Как я могу это сделать?

Ответы (4)

blueutil(доступно через HomeBrew) — это ответ. Я просто использовал его, следуя рекомендациям в этом сообщении в блоге .

В моем случае у меня был iMac с macOS Catalina, к которому не был подключен трекпад. Я застрял на странице «Отправить Apple Crash Analytics?» экран без клавиатуры. Используя SSH, я подключился к машине и использовал следующие команды для сопряжения, а затем подключил трекпад без доступа к графическому интерфейсу. (Сначала мне пришлось перевести трекпад в режим «Обнаружение». PIN-код по умолчанию для указателей Apple — 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

В этот момент трекпад работал.

blueutil --recentя запускаю эту опцию, у меня есть список blueutil --inquiry, но новые устройства недоступны.

Инструмент blueutil использует частные API из фреймворка IOBluetooth для взаимодействия с устройствами Bluetooth. Вы можете перечислить последние устройства, используя:

blueutil --recent

и подключитесь к определенному устройству, используя:

blueutil --connect $device_adress

Это кажется немного «хакерским», но вы можете сделать это с помощью oascript, который эмулирует взаимодействие с графическим интерфейсом, необходимое для подключения: https://stackoverflow.com/a/23018886/5269642

К сожалению, я не смог найти никаких документированных API для Bluetooth, подход oascript был лучшим, что я мог найти/придумать до сих пор.

Я использую это:

https://github.com/lapfelix/BluetoothConnector

TL;DR

$ brew install bluetoothconnector

$ BluetoothConnector # gets the address of your connected devices

$ BluetoothConnector 00-00-00-00-00-00 --notify # toggles the connection

Замените 00-00-00-00-00-00 на свой MAC-адрес.