

# AWS IoT Core for LoRaWAN 裝置的無線韌體更新 (FUOTA)
<a name="lorawan-mc-fuota-overview"></a>

使用「無線韌體更新」(FUOTA)，將韌體更新部署到 AWS IoT Core for LoRaWAN 裝置。

您可以使用 FUOTA 將韌體更新傳送至個別裝置或裝置群組。您也可以透過建立多點傳送群組，將韌體更新傳送至多個裝置。首先將裝置新增至多點傳送群組，然後將韌體更新映像傳送至所有裝置。建議以數位方式簽署韌體映像，以便接收映像的裝置可以確認其是否來自正確來源。

使用 AWS IoT Core for LoRaWAN 的 FUOTA，您可以：
+ 將新韌體映像或差異映像部署到單一裝置或裝置群組。
+ 在韌體部署到裝置後驗證其真確性及完整性。
+ 監控部署進度，並在部署失敗時進行問題偵錯。

AWS IoT Core for LoRaWAN 對 FUOTA 和多點傳送群組的支援依據是 [LoRa Alliance 的](https://lora-alliance.org/about-lorawan)以下規格：
+ LoRaWAN 遠端多點傳送設定規格：TS005-2.0.0
+ LoRaWAN 分段資料區塊運輸規格：TS004-2.0.0
+ LoRaWAN 應用程式層時鐘同步規格：TS003-2.0.0

**注意**  
AWS IoT Core for LoRaWAN 會根據 LoRa Alliance 規格自動執行時鐘同步處理。透過使用函數 `AppTimeReq`，其會將伺服器端時間回覆至使用 ClockSync 訊號請求該時間的裝置。

 下列影片說明如何建立 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/zh_tw/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 MB。韌體大小越大，完成更新程序所需的時間就越長。若要更快速地傳輸資料，或者新映像大於 1 MB，請使用差異映像，其為新映像的一部分，即新韌體映像與上一個映像之間的差異。
**注意**  
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 任務的以下資訊。
      + **名稱**：輸入 FUOTA 任務的唯一名稱。名稱僅可包含字母、數字、連字號和底線。不可含有空格。
      + **描述**：可以選擇為多點傳送群組提供描述。描述欄位最長可達 2,048 個字元。
      + **RFRegion**：設定 FUOTA 任務的頻帶。頻帶必須符合用來佈建無線裝置或多點傳送群組的頻帶。

   1. 

**FUOTA 任務的標籤**  
您可以選擇提供任何鍵值對，作為 FUOTA 任務的**標籤**。請選擇 **Next ** (下一步) 以繼續建立任務。

1. 

**上傳韌體映像**

   選擇要用來更新新增至 FUOTA 任務的裝置韌體的韌體映像檔案。韌體映像檔案會存放在 S3 儲存貯體中。您可以提供 AWS IoT Core for LoRaWAN 許可，讓其代表您存取韌體映像。建議您以數位方式簽署韌體映像，以便在執行韌體更新時驗證其真偽。

   1. 

**選擇韌體映像檔案**  
您可以將新韌體映像檔案上傳至 S3 儲存貯體，或選擇已上傳至 S3 儲存貯體的現有映像。
**注意**  
韌體映像檔案大小不得超過 1 MB。韌體大小越大，完成更新程序所需的時間就越長。
      + 若要使用現有映像，請選擇 **Select an existing firmware image** (選取現有韌體映像)，然後選擇 **Browse S3** (瀏覽 S3)，再選擇要使用的韌體映像檔案。

        AWS IoT Core for LoRaWAN 會填入 S3 URL，其為前往 S3 儲存貯體中韌體映像檔案的路徑。路徑的格式為 `s3://bucket_name/file_name`。若要在 [Amazon Simple Storage Service](https://console.aws.amazon.com/s3/) 主控台中檢視檔案，請選擇 **View** (檢視)。
      + 上傳新韌體映像。

        1. 選擇 **Upload a new firmware image** (上傳新韌體映像)，然後上傳韌體映像。映像檔案大小不得超過 1 MB。

        1. 若要建立 S3 儲存貯體並輸入 **Bucket name** (儲存貯體名稱) 以存放韌體映像檔案，請選擇 **Create S3 bucket** (建立 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>

若要建立 FUOTA 任務並使用 API 指定韌體映像檔案，請使用 [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 命令。您可以提供 `input.json` 檔案作為 `create-fuota-task` 命令的輸入。在使用 API 或 CLI 時，必須已將作為輸入提供的韌體映像檔案上傳至 S3 儲存貯體。您也可以指定 IAM 角色，授予 AWS IoT Core for LoRaWAN 存取 S3 儲存貯體中韌體映像的權限。

```
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 任務建立關聯。
   + 請使用 [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 命令來為個別裝置與 FUOTA 任務建立關聯，並提供 `WirelessDeviceID` 作為輸入。

     ```
     aws iotwireless associate-wireless-device-with-fuota-task \
         --id "01a23cde-5678-4a5b-ab1d-33456808ecb2"
         --wireless-device-id "ab0c23d3-b001-45ef-6a01-2bc3de4f5333"
     ```
   + 請使用 [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 命令來為多點傳送群組與 FUOTA 任務建立關聯，並提供 `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` 會列出一般無線裝置，以及與多點傳送群組相關聯的裝置。在將 `FuotaTaskID` 作為篩選條件使用時，API 會列出與 FUOTA 任務相關聯的無線裝置。
在將 `FuotaTaskID` 作為篩選條件使用時，`ListMulticastGroups` 會列出一般多點傳送群組，以及與 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 儲存貯體錯誤 (例如 S3 儲存貯體中的映像檔案連結不正確，或 AWS IoT Core for LoRaWAN 沒有足夠的許可來存取儲存貯體中的檔案) 時。
  + 在 FUOTA 任務狀態為 **FUOTA session waiting** (FUOTA 工作階段等待中)，且具有開始 FUOTA 工作階段的請求，但 FUOTA 任務中未收到來自裝置或多點傳送群組的回應時。
  + 在 FUOTA 任務狀態為 **FUOTA session waiting** (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 傳送映像片段後，終端裝置會收集映像片段，並從這些片段中重建二進位映像。如果裝置沒有足夠的記憶體來組裝韌體映像的傳入片段，系統便會顯示此狀態，而此情況可能導致韌體更新工作階段提前結束。若要解決此錯誤，請檢查裝置的硬體是否可接收此更新。如果裝置無法接收此更新，請使用差異映像來更新韌體。
+ 

**不支援分段索引**  
分段索引可識別四個同時可行的分段工作階段中的某一個工作階段。如果裝置不支援指定的分段索引值，系統便會顯示此狀態。若要解決此問題，請執行以下其中一或多個動作。
  + 開始裝置的新 FUOTA 任務。
  + 如果錯誤仍然出現，請從單點傳送模式切換為多點傳送模式。
  + 如果錯誤仍未解決，請檢查裝置韌體。
+ 

**記憶體錯誤**  
此狀態表示裝置在接收來自 AWS IoT Core for LoRaWAN 的片段時發生記憶體錯誤。如果發生此錯誤，裝置可能無法接收此更新。若要解決此錯誤，請檢查裝置的硬體是否可接收此更新。若有需要，請使用差異映像來更新裝置韌體。
+ 

**錯誤描述項**  
裝置不支援指定的描述項。描述項是一個欄位，用來描述將在分段工作階段期間傳輸的檔案。如果看到此錯誤，請聯絡 [AWS 支援 中心](https://console.aws.amazon.com/support/home#/)。
+ 

**重新顯示工作階段計數**  
此狀態表示裝置先前已使用過此工作階段計數。若要解決錯誤，請為裝置開始新的 FUOTA 任務。
+ 

**缺少片段**  
若裝置從 AWS IoT Core for LoRaWAN 收集映像片段，其會從獨立且編碼的片段中重建新的韌體映像。如果裝置未收到所有片段，則無法重建新映像，系統會顯示此狀態。若要解決錯誤，請為裝置開始新的 FUOTA 任務。
+ 

**MIC 錯誤**  
在裝置從已收集片段重建新韌體映像時，其會執行 MIC (訊息完整性檢查) 來驗證映像的真偽，以及映像是否來自正確來源。如果裝置在重新組裝片段後偵測到 MIC 中有不相符的項目，便會顯示此狀態。若要解決錯誤，請為裝置開始新的 FUOTA 任務。
+ 

**成功**  
裝置的 FUOTA 工作階段已成功。
**注意**  
雖然此狀態訊息表示裝置已從片段中重建映像並已進行驗證，但在裝置回報狀態至 AWS IoT Core for LoRaWAN 時，裝置韌體可能尚未更新。檢查裝置韌體是否已更新。

## 後續步驟
<a name="lorawan-fuota-device-next"></a>

您已了解 FUOTA 任務及其裝置的不同狀態，以及如何疑難排解相關問題。如需有關上述各種狀態的詳細資訊，請參閱 [LoRaWAN 分段資料區塊傳輸規格：TS004-1.0.0](https://lora-alliance.org/wp-content/uploads/2020/11/fragmented_data_block_transport_v1.0.0.pdf)。