3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Mac】コマンドラインでBluetoothを制御する(blueutil)

Last updated at Posted at 2023-10-24

はじめに

いつからか、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確認

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にする。

BluetoothのON
#短いオプション
blueutil -p 1

#長いオプション
blueutil --power 1

リファレンスの書きっぷり的には「状態をセットする」といったところ。
そのため、状態コードの値をオプションのパラメータとして渡す。

BluetoothをOFFにする。

BluetoothのOFF
#短いオプション
blueutil -p 0

#長いオプション
blueutil --power 0

接続する

接続
blueutil --connect <ID>

接続解除する

接続解除
blueutil --disconnect <ID>

ペアリングする

ペアリング
blueutil --pair [PIN]

ペアリングを解除する

アンペアリング
blueutil --unpair <ID>

その他

出力フォーマットを変更する。

デフォルトではカンマ区切りで出力されるが、
formatオプションを用いることで、json形式で出力することも可能。

json出力
blueutil --paired --format json 

#整形されたjsonフォーマットで出力
blueutil --paired --format json-pretty

helpを表示する

help
blueutil --help

余談

他にもオプションは存在するが、
一部オプションは用途不明なものが所々あった。
また一部Bluetooth機器※がリスト上に表示されないなどの問題も見られた。
※MX Keys mini

ただし、筆者の機器(Mac mini M2)はBluetoothの接続が周りがかなり不安定なため、固有の問題かもしれない。

参考

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?