OTAアップデートプロセス(Classic Bluetooth)



OTAアップデートプロセス(Classic Bluetooth)

このトピックでは、EchoデバイスとガジェットがClassic Bluetooth経由でOTAアップデートを実行するプロセスについて説明します。

OTAアップデートのためにガジェットが満たす必要のある要件についてはOTAアップデートの前提条件を参照してください。追加の前提条件として、ガジェットには2つの実行中のRFCOMMサーバーが必要です。一方はOTAアップデート用(UUID 0x1101)で、もう一方はイベントおよびディレクティブ用(UUID 0x1201)です。

概要

ガジェットがBluetooth経由でEchoデバイスとペアリングされたら、Echoデバイスは、ガジェットに一連のコマンドを送ることによって、OTAアップデートの開始と提供を行うことができます。コマンドのプロトコルについては、OTAアップデートコマンドを参照してください。ガジェットはコマンドを実行し、場合によっては応答を返します。Echoデバイスとガジェットは、それらのコマンドと応答を、パケットの形式で説明されているシリアルポートプロトコル(SPP)のパケットの形式を使用して、Bluetooth経由で交換します。

次の図は、ガジェットとEchoデバイスがどのように対話してガジェットのファームウェアのOTAアップデートを実行するかを示しています。この手順では、Echoデバイスとガジェットが既にペアリングされていることを前提にしています。図に続いて、各ステップについて説明します。

Classic Bluetooth通信によるガジェットのOTAアップデート

OTAアップデート手順

このセクションでは、上の図で示したOTAアップデートの各ステップについて説明します。

RFCOMM接続の確立

このステップでは、最初のBluetooth接続フローのRFCOMM接続フェーズと同様に、EchoデバイスでガジェットとのSPPリンクを確立します。そのためには、EchoデバイスはガジェットにOTA用のRFCOMMサーバー(UUID 0x1101)と接続するリクエストを送信します。これは、イベントおよびディレクティブの交換に使用するサーバー(UUID 0x1201)とは別のRFCOMMサーバーです。この接続が確立するためには、サービス発見プロトコル(SDP)データベース設定に記載されている設定がガジェットのローカルSDPデータベースに含まれている必要があります。

OTAハンドシェイク

このステップでは、一部のEchoデバイスからガジェットに対してCMD_VERSIONコマンドを送信して、ガジェットのOTAのバージョンをリクエストします。ガジェットは、不揮発性メモリにある自身のOTAバージョンを返します。ただし、OTAアップデートを行う必要があるかどうかの判断は、Bluetooth接続または再接続中にDiscover.Responseイベントを使ってガジェットから報告されるfirmwareVersionに基づいて行われます。

ガジェットの準備状況の確認

一部のEchoデバイスは、ガジェットにCMD_BATTERYコマンドを送信し、ガジェットがOTAアップデートを実行するのに適した状態かを確認します。バッテリーレベルは、この判断に影響を与え得る要因の一例であるため、このコマンドは現時点ではCMD_BATTERYと呼びますが、変更される可能性があります。影響を与える要因にかかわらず、ガジェットが0x0A以上の値を返した場合は更新が可能な状態であることを示し、0x0A未満の値の場合は更新の準備が整っていないことを示します。

ガジェットのフラッシュの消去

ガジェットがアップデート可能であることを示した場合は、EchoデバイスはガジェットにCMD_ERASEコマンドを送信し、新しいイメージを格納するためにフラッシュを消去するよう指示します。消去が完了するまでに数秒かかる場合があります。消去のステータスを判断するために、EchoデバイスはガジェットにCMD_STATUSコマンドを繰り返し送信します。ガジェットは、0x00を返すことで、消去が完了したことを示します。

ガジェットのフラッシュへの新しいイメージの書き込み

ここで、Echoデバイスは一連のコマンドをガジェットに送信して、新しいファームウェアイメージをガジェットのフラッシュバッファーに書き込みます。

  • 最初のコマンドのCMD_WRITE_METADATAは、イメージのメタデータを書き込みます。
  • 次のコマンドのCMD_WRITE_SIGNATUREは、署名データを書き込みます。ガジェットは、このデータからOTAのバージョンを抽出し、バージョン値を新しいOTAのバージョンとして不揮発性メモリに格納します。
  • 最後のコマンドのCMD_WRITEは、イメージの残りの部分をダウンロードします。Echoデバイスは、イメージ全体がガジェットにダウンロードされるまでCMD_WRITEを繰り返して呼び出します。

ガジェットは、各CMD_WRITEを受信するごとに、CRC値を増分で計算できます。ガジェットは最後のCMD_WRITEを受け取ったときに、ダウンロードされたイメージのCRCを検証することができます。CRCの計算の詳細については、CMD_WRITEを参照してください。

アップデートの適用

その後、ガジェットはガジェット固有の方法でアップデートを適用します。この目的は、新たにダウンロードされたイメージをブートイメージにすることです。前提条件のセクションで示した例では、ガジェットはブートアドレスをアクティブセクションからOTAセクションに切り替えています。これにより、ガジェットがリセットされた場合に新しいイメージがロードされます。