Bluez (hcitool &gatttool) の古いバージョンでは、Bluetooth Low Energy デバイスへの書き込みが許可されていないようです。通知などを有効にするために、新しいバージョン (この記事の執筆時点では 5.17) をインストールすることになりました。
すべてのハンドルのリストを取得するには、次を実行できます:
char-desc
その後、ハンドルから読み取ることができます:
char-read-hnd 0x000e
(上記のハンドルは、私の nrf51822 バッテリー レベル用です)
ハンドルは char-desc.
から取得したリストの 1 つです
上でティムが言ったように、通知関連のハンドルに書き込んで、指示または通知を取得できます。 (私の場合、私のデバイスには通知しかありませんでした)
char-write-req 0x000f 0100
(上記のハンドルは私の nrf51822 バッテリー レベル通知用です)
私の場合、バッテリー通知は、バッテリー レベルが変化するまで何も送信しないはずです。
Bluez のセットアップに関するかなり長いブログ記事を書きました。ここで見つけることができます:Bluetooth Low Energy の使用を開始する お気軽にチェックしてください!
これを試してみてください...
gatttool -b <MAC Address> --interactive
を実行 あなたが前にしたように。プロンプトが表示されたら、connect
と入力します。 . CON
が表示されるはずです デバイスに接続したことを示すプロンプトで。次に char-read-uuid 2902
と入力します .デバイスのすべての CCC (Client Characteristic Configuration) 属性のリストを取得する必要があります。それらをすべて 0100 に設定して通知を受け取るか、0200 を通知に、0300 を両方に、または 0000 にすべてをオフにするかを試すことができます。 help
と入力します すべてのコマンドとその引数を表示します。
編集:
--listen
の使用 引数では、通知や表示をオンにする他のコマンドと組み合わせる必要があります。 Bluez 4.101 で動作する例を次に示します:
gatttool -b <MAC Address> --char-write-req --handle=0x0031 --value=0100 --listen
ハンドルを、通知を有効にしたい CCC のハンドルに変更する必要があることは明らかです。ただし、インタラクティブ モードを使用する方がずっと簡単だと思います。
Mio Alpha で心拍数を読み取るための最終回答:
gatttool -b xx:xx:xx:xx:xx:xx -t random --char-write-req -a 0x0025 -n 0100 --listen
Characteristic value was written successfully
Notification handle = 0x0024 value: 10 4b 33 03
Notification handle = 0x0024 value: 10 4b 33 03
Notification handle = 0x0024 value: 10 4b 33 03
Notification handle = 0x0024 value: 10 4a 3e 03
Notification handle = 0x0024 value: 10 4c 28 03 28 03
Notification handle = 0x0024 value: 10 4c 28 03
Notification handle = 0x0024 value: 10 4b 33 03
Notification handle = 0x0024 value: 10 4a 3e 03 3e 03
CCC 値を保持するには、2 つのデバイスをペアリングする必要があります。ペアリングしたら、CCC を再度設定する必要はありません。次回の再接続時に設定が検出され、キーフォブのフラッシュに保存されます。 SMP 経由でペアリングした後、設定を試みてください。