1

SPP Bluetooth モジュールを使用して、Android 電話アプリとモジュールの間でデータを送信しています。今日は面白いことに出くわしました。

  1. パスキーを入力してモジュールとペアリングします
  2. 通常、アプリとモジュールの間でデータをやり取りできます
  3. アプリ内から、モジュールから切断してアプリを閉じます。
  4. モジュールで、パスキーを新しい値に変更します。
  5. アプリを再度開いても、引き続きデータを交換できます。再度ペアリングする必要はありません。携帯電話とモジュールを最初にペアリングしたときに (古いパスキーを使用して) 交換したすべてのセキュリティ情報は、モジュールの PIN を変更した後でも有効なようです。
  6. 次に、アプリを閉じて、Bluetooth 設定からデバイスのペアリングを解除します。
  7. その後、2 つのデバイスをペアリングして、パスキーの変更が実際に受け入れられ、それで十分であることを確認しました。新しい PIN とのみペアリングできるようになりました。

驚いたことに、上記のポイント 5 では、携帯電話でも PIN を更新しなくてもすべてが機能していました。モジュールに PIN を変更するコマンドを送信した後、リフレクションを使用して removeBond() を呼び出すことで、これを回避する予定です。しかし、PINの変更が他の何かによって引き起こされる可能性がある場合、私の電話は機能しません.

私の質問は、これが正常かどうかです。Bluetoothの仕様はかなり長いので、他の誰かがこれを知っていることを願っていました. Bluetooth デバイスのパスキーを変更した後、既にペアリングされているすべてのデバイスは、今度は新しいパスキーを使用して、ペアリング プロセスを再度実行する必要があると思います。しかし、上記の手順は、そうではないことを示しています。これは私の Bluetooth モジュール (Bluegiga WT12) のバグですか、それとも予想される動作ですか? 誰もこれに遭遇したことがありますか?

ありがとうございました。

乾杯!

4

1 に答える 1

1

ということで、思ったよりBluetoothスペックが優しい。この段落で答えを見つけました:

Bluetooth PIN は、(以前にリンク キーを交換していない) 2 つの Bluetooth デバイスを相互に認証し、それらの間に信頼関係を作成するために使用されます。PIN はペアリング手順 (241 ページのセクション 11.2 を参照) で使用され、さらなる認証に使用される初期リンク キーを生成します。

したがって、パスキーはルーターのパスワードとは異なります。これは、一方が他方を認証するために、接続時に両方のデバイスが知る必要がある単なるシーケンスです。お互いに信頼できることが確認できたら、リンク キーを交換し、それらを将来の通信に使用します。その場合、パスキー/PIN は関係ありません。

私はこれを正しく理解していることを願っています。

投稿が早すぎて大変申し訳ありません。

乾杯!

于 2013-10-01T18:05:48.433 に答える