今回はLinuxと自転車の話。

自転車、特にサイクルスポーツ用のメータ(サイクルコンピュータ)にスマホでBluetooth接続が可能な回転数センサーの旧Panobikeに対してelementaryOSから接続を試みてみた。

ちなみに現行ではセンサーのみ購入は不可で、以下のようにメータ同梱で販売されている商品である。


あわよくばデータ取得できないかと試行錯誤したが、何度接続してもすぐに切断されてしまうため断念することとしたが、結果について書き残しておくことにする。

やったことは以下

bluetoothctl
scan on

infoでBluetoothデバイスの情報が取得できた。

info xx:xx:xx:xx:xx:xx
Device xx:xx:xx:xx:xx:xx (public)
	Name: PanoBike BLE CSS
	Alias: PanoBike BLE CSS
	Appearance: 0x0485
	Paired: no
	Trusted: no
	Blocked: no
	Connected: no
	LegacyPairing: no
	UUID: Generic Access Profile    (00001800-0000-1000-8000-00805f9b34fb)
	UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
	UUID: Device Information        (0000180a-0000-1000-8000-00805f9b34fb)
	UUID: Battery Service           (0000180f-0000-1000-8000-00805f9b34fb)
	UUID: Cycling Speed and Cadence (00001816-0000-1000-8000-00805f9b34fb)
	RSSI: -79

次にPanoBikeのMacAddressを取得して以下のように接続を試みる。

trust xx:xx:xx:xx:xx:xx
pair xx:xx:xx:xx:xx:xx
connect xx:xx:xx:xx:xx:xx

一時的に接続されるがすぐに切断されてしまった。
表示は以下である。

[bluetooth]# trust xx:xx:xx:xx:xx:xx
Changing xx:xx:xx:xx:xx:xx trust succeeded
[bluetooth]# pair xx:xx:xx:xx:xx:xx
Attempting to pair with xx:xx:xx:xx:xx:xx
[CHG] Device xx:xx:xx:xx:xx:xx Connected: yes
[PanoBike BLE CSS]# connect xx:xx:xx:xx:xx:xx
Attempting to connect to xx:xx:xx:xx:xx:xx
[CHG] Device xx:xx:xx:xx:xx:xx ServicesResolved: yes
Failed to pair: org.bluez.Error.ConnectionAttemptFailed
Failed to connect: org.bluez.Error.Failed

ここでbluetoothのデーモンのステータスは以下

● bluetooth.service - Bluetooth service
   Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-09-11 21:50:01 JST; 2h 52min ago
     Docs: man:bluetoothd(8)
 Main PID: 674 (bluetoothd)
   Status: "Running"
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/bluetooth.service
           └─674 /usr/lib/bluetooth/bluetoothd

 9月 11 23:15:09 TPX250 bluetoothd[674]: Failed to set mode: Not Powered (0x0f)
 9月 11 23:15:09 TPX250 bluetoothd[674]: Failed to set mode: Not Powered (0x0f)
 9月 11 23:15:20 TPX250 bluetoothd[674]: No cache for xx:xx:xx:xx:xx:xx
 9月 11 23:31:18 TPX250 bluetoothd[674]: xx:xx:xx:xx:xx:xx: error updating services: Host is down (112)
 9月 12 00:36:44 TPX250 bluetoothd[674]: Unable pair since another pairing is in progress
 9月 12 00:38:54 TPX250 bluetoothd[674]: xx:xx:xx:xx:xx:xx: error updating services: Host is down (112)
 9月 12 00:40:25 TPX250 bluetoothd[674]: Unable pair since another pairing is in progress
 9月 12 00:41:31 TPX250 bluetoothd[674]: xx:xx:xx:xx:xx:xx: error updating services: Host is down (112)

スマホ(iPhone)経由のBluetooth接続では問題ないが、設定からは接続が行えず、Panobike+というアプリで一度接続しないと設定画面で認識されなかったことから、アプリ側になんらかのPINコード解除の仕組みが含まれていると推測する。

なんだか悔しいのでPINコードが不要だと思われる汎用センサーをポチっとしてしまった。それについては届いてからまた後日紹介したい。