RaspberryPi にコマンドラインでbluetoothを制御する

HALは、一旦組み上げると、USBを新たにつなげることができないので、キーボードもマウスも使えない。ただ、どうしても必要な時(例えば、何かの拍子でどのIPで繋がっているかわわからない時など)があるので、bluetoothのキーボード(マウスパッド付きの小型のもの)を使っていた。
ただ、たまに、繋がらなくなる時がある。すると、マウスが使えないのでラズパイのウィンドウ操作で再接続ができなくなり、にっちもさっちも行かなくなる。sshでターミナルには接続できるので、それでbluetoothがコントロールできないかと思ったら、bluetoothctlというラインコマンドがあった。なぜか、すでに入っていたのでありがたい。使い方は簡単だ。

$ Bluetoothctl

で起動する。
詳細はこちらに記載されているhttps://qiita.com/propella/items/6daf3c56e26f709b4141

基本的なものは次のようになる。

[bluetooth]# show

で状態表示。スキャンは次のようにする

[bluetooth]# scan on

Discovery started
[CHG] Controller B8:27:EB:7D:14:E6 Discovering: yes
[NEW] Device 79:50:86:95:3F:CB 79-50-86-95-3F-CB
[NEW] Device 78:7B:8A:F3:B6:F7 78-7B-8A-F3-B6-F7
[CHG] Device 79:50:86:95:3F:CB RSSI: -68
[NEW] Device CC:C5:0A:28:6E:BA CC-C5-0A-28-6E-BA
[CHG] Device CC:C5:0A:28:6E:BA LegacyPairing: no
[CHG] Device CC:C5:0A:28:6E:BA Name: Bluetooth 3.0 Macro Keyboard
[CHG] Device CC:C5:0A:28:6E:BA Alias: Bluetooth 3.0 Macro Keyboard

接続対象のデバイスは、

[bluetooth]# devices
Device 79:50:86:95:3F:CB 79-50-86-95-3F-CB
Device 78:7B:8A:F3:B6:F7 78-7B-8A-F3-B6-F7
Device CC:C5:0A:28:6E:BA Bluetooth 3.0 Macro Keyboard
[CHG] Device 79:50:86:95:3F:CB RSSI: -68
[CHG] Device 78:7B:8A:F3:B6:F7 RSSI: -48
[CHG] Device 78:7B:8A:F3:B6:F7 RSSI: -69

接続は、次のようにデバイスアドレスを使う。

[bluetooth]# connect CC:C5:0A:28:6E:BA
Attempting to connect to CC:C5:0A:28:6E:BA
[CHG] Device CC:C5:0A:28:6E:BA Connected: yes
[CHG] Device CC:C5:0A:28:6E:BA Modalias: usb:v0A5Cp8502d011B
[CHG] Device CC:C5:0A:28:6E:BA UUIDs: 00001000-0000-1000-8000-00805f9b34fb
[CHG] Device CC:C5:0A:28:6E:BA UUIDs: 00001124-0000-1000-8000-00805f9b34fb
[CHG] Device CC:C5:0A:28:6E:BA UUIDs: 00001200-0000-1000-8000-00805f9b34fb
[CHG] Device CC:C5:0A:28:6E:BA ServicesResolved: yes
[CHG] Device CC:C5:0A:28:6E:BA Paired: yes
Connection successful

今まで、接続できずに結構パニックに陥ったが、これで随分助かる。