/usr/bin/*ctl なプログラムが何をするのかを試してみました(1)
この記事は openSUSE Advent Calendar 2022 の1日目です。
systemd が使われるようになると、daemon の制御とかのやり方は大きく変わりました。/etc/init.d にあるスクリプトから、systemd パッケージに含まれるコマンドを使うようになってきました。それらのコマンドは、xxxxxctl という、末尾に ctl が含まれるものが多いように感じました。そこで、/usr/bin/ の中にある、末尾が ctl なプログラムがどんなものかを簡単に調べて見ることにしました。
今回は、bluetoothctl を紹介します。
コマンド名: bluetoothctl
パッケージ: bluez-5.55-150300.3.11.1.x86_64
動作: ○
詳細:
bluetooth の制御をするためのコマンドです。初っ端からですが、systemd とは無関係です。動作には、bluethoothd が必要です。
手持ちの、openSUSE が動く物理マシンでは、bluetooth 機能が標準で入っていなかったので、USB 接続の、バッファローの USB アダプタを使って検証してみました。
まずは、systemd で bluetoothd を起動しておきます。
続いて、USB アダプタを差し込み、bluetoothctl を起動します。
起動すると、プロンプトが表示されるので、デバイスのスキャンをするため、スキャンコマンドを入力すると、エラーになってしまいます。
# bluetoothctl
Agent registered
[CHG] Controller 00:1B:DC:F3:8B:51 Pairable: yes
[bluetooth]# scan on
Failed to start discovery: org.bluez.Error.NotReady
[bluetooth]#
これは、USB Bluetooth アダプタを差し込んだだけでは、まだ機能が動いていないためです。まずは、Bluetooth アダプタの機能を有効にするため、power on と入力します。すると、今度は見えるようになりました。
# power on [CHG] Controller 00:1B:DC:F3:8B:51 Class: 0x00000104 Changing power on succeeded [CHG] Controller 00:1B:DC:F3:8B:51 Powered: yes [bluetooth]# scan on Discovery started [CHG] Controller 00:1B:DC:F3:8B:51 Discovering: yes [NEW] Device 77:6C:E6:94:2A:38 77-6C-E6-94-2A-38 [NEW] Device 7E:4D:FE:CB:CC:D9 7E-4D-FE-CB-CC-D9 [CHG] Device 77:6C:E6:94:2A:38 RSSI: -73 [NEW] Device 4C:FD:32:93:41:95 4C-FD-32-93-41-95 [CHG] Device 77:6C:E6:94:2A:38 RSSI: -65 [NEW] Device 46:D9:DC:39:CC:E8 46-D9-DC-39-CC-E8 [NEW] Device 8C:DE:52:B8:AB:EA SRS-X33 [CHG] Device 77:6C:E6:94:2A:38 RSSI: -73 [CHG] Device 77:6C:E6:94:2A:38 RSSI: -65 [bluetooth]#
ここで、pair コマンドを入力すると
# pair 8C:DE:52:B8:AB:EA Attempting to pair with 8C:DE:52:B8:AB:EA [CHG] Device 8C:DE:52:B8:AB:EA Connected: yes [CHG] Device 8C:DE:52:B8:AB:EA Modalias: bluetooth:v0039p1582d2110 [CHG] Device 8C:DE:52:B8:AB:EA UUIDs: 00001108-0000-1000-8000-00805f9b34fb [CHG] Device 8C:DE:52:B8:AB:EA UUIDs: 0000110b-0000-1000-8000-00805f9b34fb [CHG] Device 8C:DE:52:B8:AB:EA UUIDs: 0000110c-0000-1000-8000-00805f9b34fb [CHG] Device 8C:DE:52:B8:AB:EA UUIDs: 0000110e-0000-1000-8000-00805f9b34fb [CHG] Device 8C:DE:52:B8:AB:EA UUIDs: 0000111e-0000-1000-8000-00805f9b34fb [CHG] Device 8C:DE:52:B8:AB:EA UUIDs: 00001200-0000-1000-8000-00805f9b34fb [CHG] Device 8C:DE:52:B8:AB:EA ServicesResolved: yes [CHG] Device 8C:DE:52:B8:AB:EA Paired: yes Pairing successful [bluetooth]#
となり、ペアリングが出来るようになりました。
この先は試してみていませんが、デバイスの削除とか情報の取得とか色々できるようです。
GUI な環境が無い状況での bluetooth 利用には使えると思います。