はじめに
いつからか、MacにiOS同様のコントロールセンターが搭載され、
以前はメニューバーの右上にBluetooth用のアイコンからBluetoothの接続などをコントロールできたのがコントロールセンター経由となってしまった...
正直コントロールセンター使いにくい、、、
ということで、CLIでBluetoothの制御を考えることに。
環境
macOS:Ventura 13.3
プロセッサ:ARM
Bluetutil
LinuxにはBluetoothctlというBluetooth用の制御ツールがあったりしますが、Macにも似たようなものはないのだろうか?
...
何やらBlueutilというツールがMacOS向けの制御ツールとして提供されていた。
インストール
Homebrewでインストール可能です。
brew install blueutil
Bluetoothの状態確認(参照系)
用語
用語 | 解説 |
---|---|
ID | MACアドレス |
pair | ペアリング |
connect | ペアリング済みデバイスに対するBluetooth接続 |
IDに当たる部分はリファレンス上では機器の名前でも問題ないようだが、自分の環境ではうまく認識されなかったため、無難にMACアドレスを用いるのが良い。
昨今ではBluetoothも一般的となったため、
ペアリングと接続で異なるニュアンスを持つことは認識ずみであると思うが、「ペアリング=接続」ではないことに注意。
状態コード
状態コード | 説明 |
---|---|
1 | ON状態 |
0 | OFF状態 |
Bluetoothのon/off確認
blueutil -p
1
周辺のBluetoothデバイスをスキャンする
blueutil --inquiry
なお自分の環境ではなぜかうまく検知できなかった
ペアリング済みデバイスの確認
blueutil --paired
address: <MACアドレス>, <接続状態>, <お気に入り登録の有無>, <ペアリング状態>, name:<Bluetooth機器の名称>, recent access date:<最終アクセス日(接続日)>
接続済みデバイスの確認
blueutil --connected
出力はペアリング確認の際の出力フォーマットと同じ。
デバイスの情報を参照する
blueutil --info <ID>
出力フォーマットは上に同じ。
IDは機器のMACアドレスを指定する。
MACアドレスのフォーマット
MACアドレスは以下のフォーマットで記述可能
フォーマット |
---|
xxxxxxxxxxxx |
xx-xx-xx-xx-xx-xx |
xx:xx:xx:xx:xx:xx |
尚、大文字/小文字の区別はしていない模様。
接続状態の確認
blueutil --is-connected <ID>
1
主にスクリプトなどの判定処理で用いると考えられる。
Bluetoothの制御
BluetoothをONにする。
#短いオプション
blueutil -p 1
#長いオプション
blueutil --power 1
リファレンスの書きっぷり的には「状態をセットする」といったところ。
そのため、状態コードの値をオプションのパラメータとして渡す。
BluetoothをOFFにする。
#短いオプション
blueutil -p 0
#長いオプション
blueutil --power 0
接続する
blueutil --connect <ID>
接続解除する
blueutil --disconnect <ID>
ペアリングする
blueutil --pair [PIN]
ペアリングを解除する
blueutil --unpair <ID>
その他
出力フォーマットを変更する。
デフォルトではカンマ区切りで出力されるが、
formatオプションを用いることで、json形式で出力することも可能。
blueutil --paired --format json
#整形されたjsonフォーマットで出力
blueutil --paired --format json-pretty
helpを表示する
blueutil --help
余談
他にもオプションは存在するが、
一部オプションは用途不明なものが所々あった。
また一部Bluetooth機器※がリスト上に表示されないなどの問題も見られた。
※MX Keys mini
ただし、筆者の機器(Mac mini M2)はBluetoothの接続が周りがかなり不安定なため、固有の問題かもしれない。
参考