

# AWS IoT Core for LoRaWAN デバイス用の Firmware Updates Over-The-Air (FUOTA)
<a name="lorawan-mc-fuota-overview"></a>

Firmware Updates Over-The-Air (FUOTA) を使用して、AWS IoT Core for LoRaWAN デバイスにファームウェアの更新をデプロイします。

FUOTA を使用すると、ファームウェアの更新を個々のデバイスまたはデバイスのグループに送信できます。マルチキャストグループを作成して、ファームウェアの更新を複数のデバイスに送信することもできます。まず、デバイスをマルチキャストグループに追加し、その後ファームウェアの更新イメージをそれらのすべてのデバイスに送信します。ファームウェアのイメージにデジタル署名して、イメージを受信するデバイスがそれが正しいソースから来ていることを確認できるようにすることをお勧めします。

AWS IoT Core for LoRaWAN の FUOTA では、次を行うことができます。
+ 新しいファームウェアイメージまたはデルタイメージを単一のデバイスやデバイスのグループにデプロイします。
+ 新しいファームウェアがデバイスに導入された後、そのファームウェアの信頼性と完全性を検証します。
+ デプロイの進行状況をモニタリングし、失敗した場合に問題をデバッグします。

FUOTA およびマルチキャストグループに対する AWS IoT Core for LoRaWAN のサポートは、[LoRa Alliance](https://lora-alliance.org/about-lorawan) の次の仕様に基づいています。
+ LoRaWAN Remote Multicast Setup Specification、TS005-2.0.0
+ LoRaWAN Fragmented Data Block Transportation Specification、TS004-2.0.0
+ LoRaWAN Application Layer Clock Synchronization Specification、TS003-2.0.0

**注記**  
AWS IoT Core for LoRaWAN では、LoRa Alliance 仕様に従い、クロック同期が自動的に実行されます。ClockSync シグナリングを使用してサーバー側の時刻をリクエストするデバイスに返信するには `AppTimeReq` 関数を使用します。

 次の動画では、AWS IoT Core for LoRaWAN FUOTA タスクの作成方法について説明し、タスクにデバイスを追加し、FUOTA タスクをスケジュールするプロセスについて説明します。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/0Yd6PFwL-IM/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/0Yd6PFwL-IM)


**Topics**
+ [

# FUOTA プロセスの概要
](lorawan-fuota-mc-process.md)
+ [

# FUOTA タスクを作成およびファームウェアイメージの指定
](lorawan-fuota-create-task.md)
+ [

# は デバイスおよびマルチキャストグループを FUOTA タスクに追加して FUOTA セッションをスケジュールする
](lorawan-fuota-add-devices.md)
+ [

# FUOTA タスクとタスクに追加されたデバイスのステータスを監視およびトラブルシューティングします。
](lorawan-fuota-status.md)

# 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)」を参照してください。

# FUOTA タスクを作成およびファームウェアイメージの指定
<a name="lorawan-fuota-create-task"></a>

LoRaWAN デバイスのファームウェアを更新するには、まず FUOTA タスクを作成し、アップデートに使用するデジタル署名されたファームウェアイメージを指定します。その後、デバイスおよびマルチキャストグループをタスクに追加し、FUOTA セッションをスケジュールできます。セッションが開始されると、AWS IoT Core for LoRaWAN によりフラグメンテーションセッションが設定されます。また、エンドデバイスによりフラグメントが収集され、イメージが再構築され、新しいファームウェアが適用されます。FUOTA プロセスの詳細については、「[FUOTA プロセスの概要](lorawan-fuota-mc-process.md)」を参照してください。

FUOTA タスクを作成し、S3 バケットに格納するファームウェアイメージまたはデルタイメージをアップロードする方法を次に示します。

## 前提条件
<a name="lorawan-fuota-task-prereq"></a>

FUOTA を実行する前に、エンドデバイスがイメージの適用時にイメージの信頼性を確認できるよう、ファームウェアイメージにデジタル署名する必要があります。サードパーティー製のツールを使用して、ファームウェアイメージのデジタル署名を生成できます。[ARM Mbed GitHub リポジトリ](https://github.com/armmbed/mbed-os-example-lorawan-fuota)に埋め込まれているようなデジタル署名ツールを使用することをお勧めします。これには、デルタイメージを生成するためのツールと、デバイスがそのイメージを使用するためのツールも含まれています。

## コンソールを使用して FUOTA タスクを作成しファームウェアイメージをアップロードする
<a name="lorawan-fuota-task-console"></a>

コンソールを使用して FUOTA タスクを作成し、ファームウェアイメージをアップロードするには、コンソールの [[FUOTA tasks]](https://console.aws.amazon.com/iot/home#/wireless/fuotaTasks) (FUOTA タスク) タブに移動して、**[Create FUOTA task]** (FUOTA タスクの作成) を選択します。

1. 

**FUOTA タスクの作成**

   FUOTA タスクを作成するには、タスクのプロパティとタグを指定します。

   1. 

**FUOTA タスクのプロパティの指定**  
FUOTA タスクのプロパティを指定するには、FUOTA タスクについて次の情報を入力します。
      + **Name** (名前): FUOTA タスクの一意の名前を入力します。名前には、文字、数字、ハイフン、またはアンダースコアのみを使用できます。スペースを含めることはできません。
      + **Description** (説明): マルチキャストグループの説明をオプションで提供できます。説明フィールドは最大 2,048 文字です。
      + **RFRegion**: FUOTA タスクの周波数帯域を設定します。周波数帯域は、ワイヤレスデバイスまたはマルチキャストグループのプロビジョニングに使用したものと一致する必要があります。

   1. 

**FUOTA タスクのタグ**  
オプションで、FUOTA タスクの **Tags** (タグ) として、任意のキーと値の組み合わせを指定できます。イメージの作成を続行するには、**[Next]** (次へ) を選択します。

1. 

**ファームウェアイメージのアップロード**

   FUOTA タスクに追加するデバイスにおけるファームウェアの更新に使用するファームウェアのイメージファイルを選択します。ファームウェアのイメージファイルは S3 バケットに保存されます。お客様に代わってファームウェアイメージにアクセスするアクセス許可を AWS IoT Core for LoRaWAN に与えることができます。ファームウェアイメージにデジタル署名して、ファームウェアの更新時にその信頼性が確認できるようにすることをお勧めします。

   1. 

**ファームウェアのイメージファイルを選択する**  
ファームウェアの新しいイメージファイルを S3 バケットにアップロードするか、既に S3 バケットにアップロードされている既存のイメージを選択できます。
**注記**  
ファームウェアのイメージファイルのサイズは 1 メガバイトを超えてはいけません。ファームウェアのサイズが大きいほど、更新プロセスの完了に時間がかかります。
      + 既存のイメージを使用するには、**[Select an existing firmware image]** (既存のファームウェアイメージを選択する) を選択し、**[Browse S3]** (S3 をブラウズする) を選択します。その後、使用するファームウェアのイメージファイルを選択します。

        AWS IoT Core for LoRaWAN により、S3 バケット内にあるファームウェアのイメージファイルへのパスである S3 URL が設定されます。パスの形式は `s3://bucket_name/file_name` です。[Amazon Simple Storage Service](https://console.aws.amazon.com/s3/) コンソールでファイルを表示するには、**[View]** (表示) を選択します。
      + 新しいファームウェアイメージをアップロードするには。

        1. **[Upload a new firmware image]** (新しいファームウェアイメージをアップロード) を選択し、ファームウェアイメージをアップロードします。イメージファイルは 1 メガバイトを超えてはいけません。

        1. S3 バケットを作成し、ファームウェアイメージファイルを保存するための **Bucket name** (バケット名) を入力するには、**[Create S3 bucketS3]** (S3 バケットの作成) を選択します。

   1. 

**バケットへのアクセス許可**  
新しいサービスロールを作成するか、既存のロールを選択して、AWS IoT Core for LoRaWAN がお客様に代わって S3 バケット内にあるファームウェアのイメージファイルにアクセスすることを許可できます。[**Next**] を選択します。

      新しいロールを作成するには、ロール名を入力するか、空白のままにするとランダムな名前が自動的に生成されます。S3 バケットへのアクセスを許可するポリシーのアクセス許可を表示するには、**[View policy permissions]** (ポリシーのアクセス許可を表示する) を選択します。

   S3 バケットを使用してイメージを保存し、AWS IoT Core for LoRaWAN にアクセスを許可する方法の詳細については、「[S3 バケットにファームウェアファイルをアップロードし、IAM ロールを追加する](lorawan-upload-firmware-s3bucket.md)」を参照してください。

1. 

**確認と作成**

   FUOTA タスクを作成するには、指定した FUOTA タスクと設定の詳細を確認し、**[Create task]** (タスクの作成) を選択します。

## API を使用して FUOTA タスクを作成しファームウェアイメージをアップロードする
<a name="lorawan-fuota-task-api"></a>

API を使用して FUOTA タスクを作成し、ファームウェアのイメージファイルを指定するには、[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateFuotaTask.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateFuotaTask.html) API オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-fuota-task.html) CLI コマンドを使用します。`create-fuota-task` コマンドへの入力として `input.json` ファイルを指定できます。API または CLI を使用する際、入力として指定するファームウェアのイメージファイルは、既に S3 バケットにアップロードされている必要があります。また、AWS IoT Core for LoRaWAN が S3 バケット内のファームウェアイメージにアクセスできるようにする IAM ロールを指定します。

```
aws iotwireless create-fuota-task \
    --cli-input-json file://input.json
```

各パラメータの意味は次のとおりです。

**input.json の内容**

```
{   
   "Description": "FUOTA task to update firmware of devices in multicast group.",
   "FirmwareUpdateImage": "S3:/firmware_bucket/firmware_image
   "FirmwareUpdateRole": "arn:aws:iam::123456789012:role/service-role/ACF1zBEI"
   "LoRaWAN": { 
      "RfRegion": "US915"
   },
   "Name": "FUOTA_Task_MC"  
}
```

FUOTA タスクを作成したら、次の API オペレーションまたは CLI コマンドを使用して、FUOTA タスクに関する情報を更新、削除、取得できます。
+ [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateFuotaTask](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateFuotaTask) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/update-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/update-fuota-task.html) 
+ [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetFuotaTask](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetFuotaTask) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-fuota-task.html) 
+ [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListFuotaTasks](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListFuotaTasks) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/list-fuota-tasks.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/list-fuota-tasks.html) 
+ [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteFuotaTask](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteFuotaTask) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/delete-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/delete-fuota-task.html) 

## 次のステップ
<a name="lorawan-fuota-next-steps"></a>

FUOTA タスクを作成し、ファームウェアイメージを指定したので、ファームウェアの更新のためタスクにデバイスを追加できます。個々のデバイスまたはマルチキャストグループをタスクに追加できます。詳細については、「[は デバイスおよびマルチキャストグループを FUOTA タスクに追加して FUOTA セッションをスケジュールする](lorawan-fuota-add-devices.md)」を参照してください。

# は デバイスおよびマルチキャストグループを FUOTA タスクに追加して FUOTA セッションをスケジュールする
<a name="lorawan-fuota-add-devices"></a>

FUOTA タスクを作成したら、ファームウェアを更新するデバイスをタスクに追加できます。デバイスが FUOTA タスクに正常に追加されたら、FUOTA セッションをスケジュールしてデバイスのファームウェアを更新できます。
+ デバイスの数が少ない場合、それらのデバイスを FUOTA タスクに直接追加できます。
+ ファームウェアを更新するデバイスの数が多い場合、これらのデバイスをマルチキャストグループに追加して、マルチキャストグループを FUOTA タスクに追加できます。マルチキャストグループの作成と使用の詳細については、「[マルチキャストグループを作成してダウンリンクのペイロードを複数のデバイスに送信する](lorawan-multicast-groups.md)」を参照してください。

**注記**  
FUOTA タスクには、個々のデバイスまたはマルチキャストグループを追加できます。デバイスとマルチキャストグループの両方をタスクに追加することはできません。

デバイスまたはマルチキャストグループを追加したら、ファームウェアの更新セッションを開始できます。AWS IoT Core for LoRaWAN ではファームウェアイメージが収集され、イメージがフラグメント化されます。その後、暗号化された形式でフラグメントが保存されます。エンドデバイスによりフラグメントが収集され、新しいファームウェアイメージが適用されます。ファームウェアの更新にかかる時間は、イメージのサイズとフラグメントの方法によって異なります。ファームウェアの更新が完了すると、AWS IoT Core for LoRaWAN で保存したファームウェアイメージの暗号化されたフラグメントは削除されます。削除後も S3 バケット内でファームウェアイメージを見つけることができます。

## 前提条件
<a name="lorawan-fuota-devices-prereq"></a>

FUOTA タスクにデバイスまたはマルチキャストグループを追加する前に、次の操作を実行してください。
+ FUOTA タスクを作成し、ファームウェアイメージを指定しておく必要があります。詳細については、「[FUOTA タスクを作成およびファームウェアイメージの指定](lorawan-fuota-create-task.md)」を参照してください。
+ デバイスのファームウェアを更新するワイヤレスデバイスをプロビジョニングします。デバイスのオンボーディングの詳細については、「[デバイスを AWS IoT Core for LoRaWAN にオンボードする](lorawan-onboard-end-devices.md)」を参照してください。
+ 複数のデバイスのファームウェアを更新するには、それらをマルチキャストグループに追加します。詳細については、「[マルチキャストグループを作成してダウンリンクのペイロードを複数のデバイスに送信する](lorawan-multicast-groups.md)」を参照してください。
+ デバイスを AWS IoT Core for LoRaWAN にオンボードする際、FUOTA の設定パラメータ `FPorts` を指定します。LoRaWAN v1.0.x デバイスを使用している場合は、`GenAppKey` も指定する必要があります。FUOTA の設定パラメータの詳細については、「[マルチキャストおよび FUOTA 設定用のデバイスを準備する](lorawan-prepare-devices-multicast.md)」を参照してください。

## コンソールを使用して FUOTA タスクにデバイスを追加し FUOTA セッションをスケジュールする
<a name="lorawan-fuota-devices-console"></a>

コンソールを使用してデバイスまたはマルチキャストグループを追加し、FUOTA セッションをスケジュールするには、コンソールの [[FUOTA tasks]](https://console.aws.amazon.com/iot/home#/wireless/fuotaTasks) (Fuota タスク) タブに移動します。次に、デバイスを追加する FUOTA タスクを選択し、ファームウェアの更新を実行します。

**デバイスおよびマルチキャストグループの追加**

1. FUOTA タスクには、個々のデバイスまたはマルチキャストグループを追加できます。ただし、個々のデバイスとマルチキャストグループの両方を同じ FUOTA タスクに追加することはできません。コンソールを使用してデバイスを追加するには、次の操作を実行します。

   1. **[FUOTA task details]** (FUOTA タスクの詳細) で、**[Add device]** (デバイスの追加) を選択します。

   1. タスクに追加するデバイスの **RFRegion** または周波数帯域を選択します。この値は、FUOTA タスク用に選択した **RFRegion** と一致する必要があります。

   1. 個々のデバイスとマルチキャストグループのどちらにタスクに追加するかを選択します。
      + 個々のデバイスを追加するには、**[Add individual devices]** (個々のデバイスを追加する) をクリックし、FUOTA タスクに追加する各デバイスのデバイス ID を入力します。
      + マルチキャストグループを追加するには、**[Add multicast groups]** (マルチキャストグループを追加する) をクリックし、タスクにマルチキャストグループを追加します。デバイスのプロファイルまたはタグを使用して、タスクに追加するマルチキャストグループをフィルタリングできます。デバイスプロファイルでフィルタリングする場合、**[Supports Class B]** (クラス B をサポート) または **[Supports Class C]** (クラス C をサポート) が有効なプロファイルを持つデバイスのマルチキャストグループを選択できます。

1. 

**FUOTA セッションのスケジュール**

   デバイスまたはマルチキャストグループが正常に追加されたら、FUOTA セッションをスケジュールできます。セッションをスケジュールするには、次の操作を実行します。

   1. デバイスのファームウェアを更新する FUOTA タスクを選択し、**[Schedule FUOTA session]** (FUOTA セッションのスケジュール) を選択します。

   1. FUOTA セッションの**[Start date]** (開始日) および**[Start time]** (開始時刻) を指定します。開始時刻が現在の時刻から 30 分以上後であることを確認してください。

## API を使用して FUOTA タスクにデバイスを追加し FUOTA セッションをスケジュールする
<a name="lorawan-fuota-devices-api"></a>

AWS IoT Wireless API または CLI を使用して、ワイヤレスデバイスまたはマルチキャストグループを FUOTA タスクに追加できます。その後、FUOTA セッションをスケジュールできます。

1. 

**デバイスおよびマルチキャストグループの追加**

   ワイヤレスデバイスまたはマルチキャストグループを FUOTA タスクに関連付けることができます。
   + FUOTA タスクに個々のデバイスを関連付けるには、[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_AssociateWirelessDeviceWithFuotaTask.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_AssociateWirelessDeviceWithFuotaTask.html) API オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/associate-wireless-device-with-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/associate-wireless-device-with-fuota-task.html) CLI コマンドを使用し、入力として `WirelessDeviceID` を指定します。

     ```
     aws iotwireless associate-wireless-device-with-fuota-task \
         --id "01a23cde-5678-4a5b-ab1d-33456808ecb2"
         --wireless-device-id "ab0c23d3-b001-45ef-6a01-2bc3de4f5333"
     ```
   + マルチキャストグループを FUOTA タスクに関連付けるには、[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_AssociateMulticastGroupWithFuotaTask.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_AssociateMulticastGroupWithFuotaTask.html) API オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/associate-multicast-group-with-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/associate-multicast-group-with-fuota-task.html) CLI コマンドを使用し、入力として `MulticastGroupID` を指定します。

     ```
     aws iotwireless associate-multicast-group-with-FUOTA-task \
         --id 01a23cde-5678-4a5b-ab1d-33456808ecb2"
         --multicast-group-id
     ```

   ワイヤレスデバイスまたはマルチキャストグループを FUOTA タスクに関連付けた後、次の API オペレーションまたは CLI コマンドを使用して、デバイスまたはマルチキャストグループを一覧表示したり、タスクから関連付けを解除できます。
   + [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DisassociateWirelessDeviceFromFuotaTask.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DisassociateWirelessDeviceFromFuotaTask.html) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/disassociate-wireless-device-from-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/disassociate-wireless-device-from-fuota-task.html) 
   + [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DisassociateMulticastGroupFromFuotaTask.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DisassociateMulticastGroupFromFuotaTask.html) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/disassociate-multicast-group-from-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/disassociate-multicast-group-from-fuota-task.html) 
   + [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListWirelessDevices.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListWirelessDevices.html) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/delete-multicast-group.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/delete-multicast-group.html) 
   + [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListMulticastGroups.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListMulticastGroups.html) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/list-multicast-groups.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/list-multicast-groups.html) 
**注記**  
API:  
`MulticastGroupID` では、`ListWirelessDevices` がフィルタとして使用される際に、一般的なワイヤレスデバイスおよびマルチキャストグループに関連付けられたデバイスを一覧表示できます。この API では、`FuotaTaskID` がフィルタとして使用される際に、FUOTA タスクに関連付けられているワイヤレスデバイスが一覧表示されます。
`ListMulticastGroups` では、`FuotaTaskID` がフィルタとして使用される際に、一般的なマルチキャストグループおよび FUOTA タスクに関連付けられたマルチキャストグループを一覧表示できます。

1. 

**FUOTA セッションのスケジュール**

   デバイスまたはマルチキャストグループが FUOTA タスクに正常に追加されたら、FUOTA セッションを開始してデバイスのファームウェアを更新できます。開始時刻は、現在の時刻から 30 分以上後である必要があります。API または CLI を使用して FUOTA セッションをスケジュールするには、[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_StartFuotaTask.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_StartFuotaTask.html) API オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/start-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/start-fuota-task.html) CLI コマンドを使用します。

   FUOTA セッションの開始後は、タスクにデバイスまたはマルチキャストグループを追加できなくなります。[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GettFuotaTask.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GettFuotaTask.html) API オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-fuota-task.html) CLI コマンドを使用すると、FUOTA セッションのステータスに関する情報を得ることができます。

# FUOTA タスクとタスクに追加されたデバイスのステータスを監視およびトラブルシューティングします。
<a name="lorawan-fuota-status"></a>

ワイヤレスデバイスをプロビジョニングし、使用する可能性のあるマルチキャストグループを作成したら、次の手順を実行して FUOTA セッションを開始できます。

## FUOTA タスクのステータス
<a name="lorawan-fuota-task-status"></a>

FUOTA タスクには、AWS マネジメントコンソール で次のステータスメッセージのいずれかが表示されます。
+ 

**保留中**  
このステータスは、FUOTA タスクを作成したが、まだファームウェアの更新セッションがないことを示します。タスクが作成されると、このステータスメッセージが表示されます。この間は、FUOTA タスクを更新できます。また、デバイスまたはマルチキャストグループをタスクと関連付けたり、関連付けを解除できます。ステータスが **[Pending]** (保留中) から変更された後は、タスクに他のデバイスを追加することはできません。
+ 

**FUOTA セッションの待機中**  
デバイスが FUOTA タスクに正常に追加されると、タスクにファームウェアの更新セッションがスケジュールされている場合、このステータスメッセージが表示されます。この間、デバイスを更新したり FUOTA セッションに追加することはできません。FUOTA セッションをキャンセルすると、グループのステータスは **[Pending]** (保留中) に変わります。
+ 

**FUOTA セッション中**  
FUOTA セッションが開始されると、このステータスメッセージが表示されます。フラグメンテーションセッションが開始され、エンドデバイスによりフラグメントが収集され、ファームウェアイメージが再構築されます。また、新しいファームウェアバージョンが元のバージョンと比較され、新しいイメージが適用されます。
+ 

**FUOTA の完了**  
新しいファームウェアイメージが適用されたことがエンドデバイスにより AWS IoT Core for LoRaWAN に報告された後、またはセッションのタイムアウト時に FUOTA セッションは完了としてマークされ、このステータスが表示されます。

  また、次のいずれかの場合もこのステータスが表示されるので、ファームウェアの更新がデバイスに正しく適用されたかどうかを確認してください。
  + FUOTA タスクのステータスが **[FUOTA session waiting]** (FUOTA セッションの待機中) で、S3 バケット内のイメージファイルへのリンクが間違っている、AWS IoT Core for LoRaWAN にバケット内のファイルにアクセスするための十分なアクセス許可がないなどの S3 バケットのエラーがある場合。
  + FUOTA タスクのステータスが **[FUOTA session waiting]** (FUOTA セッションの待機中) で、FUOTA セッションを開始するリクエストがあるが、FUOTA タスクのデバイスまたはマルチキャストグループからのレスポンスが受信されない場合。
  + FUOTA タスクのステータスが **[In FUOTA session]** (FUOTA セッション中) で、デバイスまたはマルチキャストグループが一定期間フラグメントを送信していないため、セッションがタイムアウトになっている場合。
+ 

**削除の待機中**  
他の状態にある FUOTA タスクを削除すると、このステータスが表示されます。削除は永続的で、元に戻すことができません。この操作には時間がかかる場合があり、FUOTA タスクが削除されるまでタスクのステータスは **[Delete waiting]** (削除の待機中) です。FUOTA タスクがこの状態に入った後は、他のステータスに移行することはできません。

## FUOTA タスクでのデバイスのステータス
<a name="lorawan-fuota-device-status"></a>

FUOTA タスクのデバイスには、AWS マネジメントコンソール で次のステータスメッセージのいずれかが表示されます。各ステータスメッセージにカーソルを合わせると、そのメッセージが示す内容の詳細を確認できます。
+ 

**初期**  
FUOTA セッションの開始時、AWS IoT Core for LoRaWAN によりデバイスにファームウェアの更新でサポートされているパッケージがあるかどうかがが確認されます。デバイスにサポートされているパッケージがある場合、デバイスの FUOTA セッションが開始します。ファームウェアイメージがフラグメント化され、フラグメントがデバイスに送信されます。このステータスが表示された場合、デバイスの FUOTA セッションはまだ開始していません。
+ 

**パッケージはサポートされていません**  
デバイスにサポートされている FUOTA パッケージがない場合は、このステータスが表示されます。ファームウェアの更新パッケージがサポートされていない場合、デバイスの FUOTA セッションを開始できません。このエラーを解決するには、FUOTA を使用してデバイスのファームウェアがファームウェアの更新を受信できるかどうかを確認します。
+ 

**フラグメンテーションアルゴリズムはサポートされていません**  
FUOTA セッションの開始時に、AWS IoT Core for LoRaWAN によりデバイスのフラグメンテーションのセッションが設定されます。このステータスが表示された場合、使用するフラグメンテーションアルゴリズムの種類をデバイスのファームウェアの更新に適用できないことを意味します。このエラーは、使用するデバイスにサポートされている FUOTA パッケージがないために発生します。このエラーを解決するには、FUOTA を使用してデバイスのファームウェアがファームウェアの更新を受信できるかどうかを確認します。
+ 

**メモリが足りない**  
AWS IoT Core for LoRaWAN によりイメージのフラグメントが送信された後、エンドデバイスによりそれらが収集されます。その後これらのフラグメントからバイナリイメージが再構築されます。このステータスは、デバイスにファームウェアイメージの受信フラグメントを組み合わせるのに十分なメモリがない場合に表示されます。そのために、ファームウェアの更新セッションが途中で終了する可能性があります。このエラーを解決するには、デバイスのハードウェアがこの更新を受信できるかどうかを確認します。使用しているデバイスでこの更新を受信できない場合は、デルタイメージを使用してファームウェアを更新します。
+ 

**フラグメンテーションのインデックスはサポートされていません**  
フラグメンテーションのインデックスは、同時に実行できる 4 つのフラグメンテーションのセッションのうち 1 つを識別します。デバイスが指定されたフラグメンテーションのインデックス値をサポートしていない場合、このステータスが表示されます。この問題を解決するには、次のいずれかの操作を実行します。
  + デバイス用に新しい FUOTA タスクを開始します。
  + エラーが解決しない場合は、ユニキャストモードからマルチキャストモードに切り替えます。
  + それでもエラーが解決しない場合は、デバイスのファームウェアを確認してください。
+ 

**メモリエラー**  
このステータスは、AWS IoT Core for LoRaWAN から受信フラグメントを受信した際に、デバイスにメモリエラーが発生したことを示します。このエラーが発生した場合、デバイスはこの更新プログラムを受信できない可能性があります。このエラーを解決するには、デバイスのハードウェアがこの更新を受信できるかどうかを確認します。必要に応じて、デルタイメージを使用してデバイスのファームウェアを更新します。
+ 

**不適切な記述子**  
デバイスが、指定された記述子をサポートしていません。記述子は、フラグメンテーションのセッション中に転送されるファイルを記述するフィールドです。このエラーが表示された場合は、[AWS サポート Center](https://console.aws.amazon.com/support/home#/) ( センター) にお問い合わせください。
+ 

**セッションカウントのリプレイ**  
このステータスは、デバイスがこのセッションカウントを以前に使用したことを示します。このエラーを解決するには、デバイス用に新しい FUOTA タスクを開始します。
+ 

**フラグメントが見つかりません**  
デバイスにより AWS IoT Core for LoRaWAN からイメージのフラグメントが収集される際、コード化され独立したフラグメントから新しいファームウェアイメージが再構築されます。デバイスがすべてのフラグメントを受信していない場合、新しいイメージを再構築できず、このステータスが表示されます。このエラーを解決するには、デバイス用に新しい FUOTA タスクを開始します。
+ 

**MIC エラー**  
収集されたフラグメントから新しいファームウェアイメージがデバイスにより再構築されると、MIC (Message Integrity Check) が実行され、イメージの信頼性と、それが正しいソースから取得されているかどうかが確認されます。フラグメントの再構成後、デバイスにより MIC の不一致が検出されると、このステータスが表示されます。このエラーを解決するには、デバイス用に新しい FUOTA タスクを開始します。
+ 

**Successful**  
デバイスの FUOTA セッションが成功しました。
**注記**  
このステータスメッセージは、デバイスによりフラグメントからイメージが再構築され、それが確認できたことを示します。しかし、デバイスにより AWS IoT Core for LoRaWAN にステータスが報告されたときに、デバイスファームウェアが更新されていない可能性があります。デバイスのファームウェアが更新されているかどうかを確認してください。

## 次のステップ
<a name="lorawan-fuota-device-next"></a>

FUOTA タスクとそのデバイスのさまざまなステータス、および問題のトラブルシューティングの方法について学習しました。これらの各ステータスの詳細については、「[LoRaWAN Fragmented Data Block Transportation Specification, TS004-1.0.0](https://lora-alliance.org/wp-content/uploads/2020/11/fragmented_data_block_transport_v1.0.0.pdf)」を参照してください。