

# FUOTA プロセスの概要
<a name="lorawan-fuota-mc-process"></a>

次の図は、エンドデバイスに対して AWS IoT Core for LoRaWAN によりFUOTA プロセスがどのように実行されるのかを示しています。FUOTA セッションに個々のデバイスを追加する場合は、マルチキャストグループの作成および設定の手順をスキップできます。FUOTA セッションにデバイスを直接追加できます。その後、AWS IoT Core for LoRaWAN によりファームウェアの更新プロセスが開始されます。

![AWS IoT Core for LoRaWAN がエンドデバイス用に FUOTA を実行する方法を示す画像。](http://docs.aws.amazon.com/ja_jp/iot-wireless/latest/developerguide/images/iot-lorawan-fuota-flow.png)


デバイス用に FUOTA を実行するには、最初にデジタル署名されたファームウェアイメージを作成し、FUOTA タスクに追加するデバイスおよびマルチキャストグループを設定します。FUOTA セッションを開始すると、エンドデバイスによりすべてのフラグメントが収集され、フラグメントからイメージが再構築され、ステータスが AWS IoT Core for LoRaWAN に報告されます。その後、新しいファームウェアイメージが適用されます。

FUOTA プロセスのさまざまな手順を次に示します。

1. 

**デジタル署名したファームウェアイメージまたはデルタイメージを作成する**

   AWS IoT Core for LoRaWAN で LoRaWAN デバイス用の FUOTA を実行するには、ファームウェアの更新を無線で送信する際に、ファームウェアイメージまたはデルタイメージにデジタル署名しておくことをお勧めします。その後、画像を受信するデバイスでは、それが正しいソースから来ていることを確認できます。

   ファームウェアイメージのサイズは 1 メガバイトを超えてはいけません。ファームウェアのサイズが大きいほど、更新プロセスの完了に時間がかかります。データ転送を高速化したい場合、または新しいイメージが 1 メガバイトを超える場合は、デルタイメージを使用します。デルタイメージは、新しいファームウェアイメージと以前のイメージの間のデルタとなる新しいイメージの一部です。
**注記**  
AWS IoT Core for LoRaWAN では、デジタル署名作成ツールおよびファームウェアバージョンの管理システムは提供されていません。サードパーティー製のツールを使用して、ファームウェアイメージのデジタル署名を生成できます。[ARM Mbed GitHub リポジトリ](https://github.com/armmbed/mbed-os-example-lorawan-fuota)に埋め込まれているようなデジタル署名ツールを使用することをお勧めします。これには、デルタイメージを生成するためのツールと、デバイスがそのイメージを使用するためのツールも含まれています。

1. 

**FUOTA のデバイスの特定および設定**

   FUOTA のデバイスを特定したら、ファームウェアの更新を個々のデバイスまたは複数のデバイスに送信します。
   + ファームウェアの更新を複数のデバイスに送信するには、マルチキャストグループを作成し、エンドデバイスでマルチキャストグループを設定します。詳細については、「[マルチキャストグループを作成してダウンリンクのペイロードを複数のデバイスに送信する](lorawan-multicast-groups.md)」を参照してください。
   + 個々のデバイスにファームウェアの更新を送信するには、それらのデバイスを FUOTA セッションに追加し、ファームウェアの更新を実行します。

1. 

**配信ウィンドウをスケジュールしてフラグメンテーションセッションをセットアップする**

   マルチキャストグループを作成した場合、クラス B またはクラス C の配信ウィンドウを指定して、デバイスが AWS IoT Core for LoRaWAN からフラグメントを受信できるタイミングを決定できます。クラス B またはクラス C モードに切り替える前に、デバイスがクラス A で動作している可能性があります。また、セッションの開始時刻を指定する必要があります。

   クラス B またはクラス C のデバイスは、指定された配信ウィンドウで起動し、ダウンリンクパケットの受信を開始します。クラス C モードで動作するデバイスは、クラス B のデバイスよりも多くの電力を消費します。詳細については、「[デバイスクラス](lorawan-manage-end-devices.md#lorawan-device-classes)」を参照してください。

1. 

**エンドデバイスによる AWS IoT Core for LoRaWAN へのステータスの報告およびファームウェアイメージの更新**

   フラグメンテーションセッションの設定後、エンドデバイスおよび AWS IoT Core for LoRaWAN では次の手順が実行され、デバイスのファームウェアが更新されます。

   1. LoRaWan デバイスのデータレートが低いため、FUOTA プロセスを開始するために AWS IoT Core for LoRaWAN でフラグメンテーションセッションが設定され、ファームウェアイメージがフラグメント化されます。その後、これらのフラグメントがエンドデバイスに送信されます。

   1. AWS IoT Core for LoRaWAN によりイメージのフラグメントが送信されたら、LoRaWan エンドデバイスでは次のタスクが実行されます。

      1. フラグメントが収集され、これらのフラグメントからバイナリイメージが再構築されます。

      1. 再構築されたイメージのデジタル署名の確認、イメージの認証が行われ、それが正しいソースから来ていることが確認されます。

      1. AWS IoT Core for LoRaWAN からのファームウェアのバージョンと現在のバージョンが比較されます。

      1. 転送済みの、フラグメント化されたイメージのステータスが AWS IoT Core for LoRaWAN に報告され、新しいファームウェアイメージが適用されます。
**注記**  
場合によっては、ファームウェアイメージのデジタル署名が確認される前に、エンドデバイスにより転送済みのフラグメント化されたイメージのステータスが AWS IoT Core for LoRaWAN に報告されます。

FUOTA プロセスを学習したので、FUOTA タスクを作成し、タスクにデバイスを追加してファームウェアを更新できます。詳細については、「[FUOTA タスクを作成およびファームウェアイメージの指定](lorawan-fuota-create-task.md)」を参照してください。