Linuxマシンを介してBLEモジュールと通信しようとしています(モジュールは心拍数プロファイルを実行しています)。これまで、通知と指示のリッスンを除く必要なすべてを行うことができました(例:心拍数測定通知のリッスン)。カーネルバージョン3.5およびbluez-5.3を使用しています。
これまでに使用された成功したコマンド:
hcitool lescan
hcitool lecc
gatttool -b <Mac Address> --primary
gatttool -b <MAC Address> --characteristics
gatttool -b <MAC Address> --char-read
gatttool -b <MAC Address> --char-desc
gatttool -b <MAC Address> --interactive
失敗したコマンド:
gatttool -b <MAC Address> --listen
どんな助けも大歓迎です。
これを試して...
以前と同じようにgatttool -b <MAC Address> --interactive
を実行します。プロンプトが表示されたら、connect
と入力します。デバイスに接続したことを示すCON
がプロンプトに表示されます。次にchar-read-uuid 2902
と入力します。デバイス上のすべてのCCC(クライアント特性構成)属性のリストを取得する必要があります。 通知を取得する場合はすべて0100、通知を取得する場合は0200、両方を実行する場合は0300、すべてオフの場合は0000に設定してみてください。help
と入力して、すべてのコマンドと引数を表示します。
--listen
引数を使用するには、他のコマンドと組み合わせて、通知や表示をオンにする必要があります。 Bluez 4.101で機能する例を次に示します。
gatttool -b <MAC Address> --char-write-req --handle=0x0031 --value=0100 --listen
明らかに、通知をオンにするCCCのハンドルにハンドルを変更する必要があります。ただし、インタラクティブモードを使用する方が簡単です。
Bluezの古いバージョン(hcitoolおよびgatttool)では、Bluetooth Low Energyデバイスへの書き込みが許可されていないようです。通知などを有効にするために、新しいバージョン(この記事の執筆時点では5.17)をインストールすることになりました。
すべてのハンドルのリストを取得するには、次を実行できます。
char-desc
その後、ハンドルから読み取ることができます。
char-read-hnd 0x000e
(上のハンドルは私のnrf51822バッテリーレベル用です)
ハンドルはchar-desc.
から取得したリストからのものです
ティムが上記のように言ったように、通知関連のハンドルに書き込んで指示または通知を取得できます。 (私の場合、私のデバイスには通知しかありませんでした)
char-write-req 0x000f 0100
(上記のハンドルは私のnrf51822バッテリーレベル通知用です)
私の場合、バッテリー残量が変更されるまで、バッテリー通知は何も送信しません。
Bluezでのセットアップに関するかなり長いブログ記事を書きました。ここで見つけることができます: Bluetooth Low Energyを使ってみましょう 気軽にチェックしてください!
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を再度設定する必要はありません。次の再接続で、設定が検出され、キーフォブのFLASHに保存されます。 SMPを介してペアリングした後、設定を試行してください。