Classic Bluetoothを経由したガジェットとEchoデバイスのペアリングおよび接続



Classic Bluetoothを経由したガジェットとEchoデバイスのペアリングおよび接続

このトピックでは、ペアリングしたことのない、あるいはペアリング情報が削除されているガジェットとEchoデバイスの間で、Classic Bluetooth(BR/EDR)接続を確立する方法について説明します。

ペアリング後に切断されたガジェットをEchoデバイスに再接続するプロセスについては、Classic Bluetoothを経由したガジェットとEchoデバイスの再接続を参照してください。

Bluetoothに関連するAlexa Gadgets Toolkitの問題については、既知の問題ページを参照してください。

概要

次の図は、ガジェットとEchoデバイスがClassic Bluetooth接続を確立し、Alexa Gadgetsディレクティブとイベントを交換する流れを示しています。図に続いて、各ステップについて説明します。

Classic Bluetoothを経由したAlexa GadgetとEchoデバイスのペアリングおよび接続フロー

検出フェーズ

Echoデバイスとガジェットは、次のようにClassic Bluetooth経由で互いを検出します。

  1. ユーザーがガジェットをペアリングモードにします。この手順は、ガジェットによって異なります。たとえば、ボタン型のガジェットの場合は、長押しを使う可能性があります。タッチ画面付きのガジェットの場合は、画面にあるオプションでペアリングを有効にすることもできます。
  2. ユーザーがEchoデバイスをペアリングモードにします。画面の付いていないEchoデバイスの場合は、Amazon Alexaアプリを使用して、Echoデバイスをペアリングモードにします。Alexaアプリで設定に移動し、Echoデバイスを選択してから、接続デバイスAlexa Gadgetをペアリングを選択します。画面付きEchoデバイスの場合は、画面の指示に従って、ペアリングを開始します。
  3. Echoデバイスは照会リクエストを送信することによって、通信範囲内のBluetoothデバイスをスキャンします。
  4. ガジェットは、拡張問い合わせ応答(EIR)設定に記載されているパラメーターを含むEIRでEchoデバイスの照会リクエストに応答します。

ペアリングフェーズ

ガジェットを検出し、リンクレイヤーを介して接続したら、Echoデバイスは、標準的なBluetooth Secure Simple Pairing(SSP)プロセスを使用してガジェットとペアリングします。これを行うには、ガジェットはペアリングパラメーターに記載されているパラメーターを使用する必要があります。ペアリングのリクエストと応答のほか、ペアリングにはI/O機能、リンクキーなどの情報の交換が必要です。

ペアリングが完了すれば、ペアリングが解除された場合を除き、接続が切断されてもガジェットとEchoデバイスを再度ペアリングする必要はありません。

RFCOMM接続フェーズ

EchoデバイスはガジェットにRFCOMMサーバーと接続するリクエストを送信します。この接続が確立するためには、サービス発見プロトコル(SDP)データベース設定に記載されている設定がガジェットのローカルSDPデータベースに含まれている必要があります。

Alexa Gadgets Toolkitディレクティブおよびイベント

Echoデバイスとガジェットはプロトコルバッファー形式を使用して次の情報を交換します。

  1. EchoデバイスがガジェットにDiscoverディレクティブを送信します。
  2. ガジェットがDiscover.Responseイベントで応答します。このイベントには、DSNのハッシュと、開発者ポータルにガジェットを登録した際にガジェットに割り当てられたデバイスタイプシークレットが、その他の情報とともに含まれています。
  3. ガジェットは、Alexa Gadgetsインターフェースによって定義されたディレクティブやイベントを用いて、Echoデバイスと情報を交換します。

トラブルシューティング

ガジェットとEchoデバイスのペアリングまたは接続で問題が発生した場合は、以下のヒントを試してください。

問題: ガジェットがEchoデバイスとペアリングできない

考えられる原因 ヒント

ガジェットのBluetoothスタックが正しくコンフィギュレーションされていません。

  • ペアリングパラメーターで指定されている設定でガジェットがコンフィギュレーションされていることを確認します。
  • ガジェットの埋め込みプラットフォームのメーカーから、Bluetoothペアリングのサンプルコードが提供されているかを確認します。

問題: ガジェットはEchoデバイスとペアリング可能だが、EchoデバイスからRFCOMM接続リクエストを受信しない

考えられる原因 ヒント

ガジェットがEchoデバイスにSDP接続リクエストを送信していません。

EchoデバイスがAlexa Gadgetとしてガジェットを認識していません。その代わりに、Echoデバイスはこのガジェットが一般的なBluetoothデバイスと解釈しています。

  • EchoデバイスはBluetoothデバイスがAlexa GadgetかどうかをEIRによって識別するため、拡張問い合わせ応答(EIR)設定で指定されている設定でガジェットがコンフィギュレーションされていることを確認します。
  • ガジェットの埋め込みプラットフォームのメーカーから、EIR設定をコンフィギュレーションするサンプルコードが提供されているかを確認します。また、Alexa GadgetsサンプルコードGitHubリポジトリのConnectionHelpers/EIRディレクトリには、EIRの実装が含まれています。
  • EchoデバイスはガジェットのBluetooth設定をキャッシュするため、ガジェットのEIR設定を変更した直後は、Echoデバイスがガジェットを認識できない場合があります。この場合は、ガジェットのペアリングを一度解除し、ガジェットをペアリングモードにしてから、EchoデバイスにBluetoothデバイスをスキャンさせます。これでガジェットのEIR設定が更新されるので、ガジェットを再度ペアリングします。

EchoデバイスはAlexa Gadgetとしてガジェットを認識するものの、Echoデバイスがガジェットから正しいSDP応答を取得できていません。

  • Echoデバイスは、正しいポートにRFCOMM接続リクエストを送信できるように、ガジェットのRFCOMMサーバーがリッスンしているポートを検出する必要があります。そのため、サービス発見プロトコル(SDP)データベース設定で指定されているSDPデータベース設定でガジェットがコンフィギュレーションされていることを確認します。
  • ガジェットの埋め込みプラットフォームのメーカーから、SDPサーバーをセットアップするサンプルコードが提供されているかを確認します。また、Alexa GadgetsサンプルコードGitHubリポジトリのConnectionHelpers/SDPディレクトリには、CypressプラットフォームのサンプルSDPデータエントリーが含まれています。

問題: ガジェットはEchoデバイスとペアリング可能で、RFCOMM接続リクエストを受信できるが、EchoデバイスからAlexa.Discovery.Discoverディレクティブを受信しない

考えられる原因 ヒント

ガジェットのRFCOMMサーバーが正しくセットアップされていません。

  • ガジェットがEchoデバイスからRFCOMM接続リクエストを受信すると、1)EchoはガジェットをAlexa Gadgetとして認識し、2)EchoデバイスはどのRFCOMMポートに接続するか把握するので、ガジェットのEIRとSDP設定をデバッグする必要はありません。
  • RFCOMM接続が成功すれば、EchoデバイスはAlexa.Discovery.Discoverディレクティブをガジェットに送信するので、ガジェットのRFCOMMサーバーが原因であると考えられます。
  • ガジェットの埋め込みプラットフォームのメーカーは、RFCOMMサーバーをセットアップするSPPサンプルコードを提供している可能性があります。