利用 Azure 裝置登錄系統的一項軟體更新功能,大規模地向你的裝置提供 OTA 更新。 將更新匯入 Azure 裝置登錄檔命名空間,然後利用該命名空間中的工作和群組將其更新部署到裝置。
Important
Azure 裝置登錄軟體更新目前處於預覽階段。 目前的預覽版限於連接 IoT 中樞 的裝置。 不要在生產工作負載中使用預覽功能。 對於生產工作負載,請繼續使用 Device Update for IoT 中樞,該功能仍正式推出。
請參閱Microsoft Azure 預覽的補充使用條款,以了解適用於 Azure 測試版、預覽版或其他尚未正式發布的功能的法律條款。
服役適用性
| Feature | Azure IoT 操作 | Azure IoT 中樞 |
|---|---|---|
| 軟體更新 | 不適用 | Preview |
IoT 中樞 的軟體更新與裝置更新
軟體更新將空中更新功能帶入 Azure Device Registry。 它使用與 IoT 中樞 裝置更新相同的匯入清單格式,並允許你透過 Azure 裝置登錄群組和工作在命名空間層級管理更新。
請依照以下指引選擇正確的方案:
| 如果你... | 使用 |
|---|---|
| 需要用於生產工作負載的無線更新 | IoT 中樞 裝置更新,其仍維持正式推出並受支援。 |
| 想評估透過 Azure Device Registry 命名空間、群組和工作來管理更新 | 軟體更新(預覽),本文有詳細說明。 |
如果您已經使用 IoT 中樞 的裝置更新,請留意以下幾點:
- 你不能在同一個 IoT 中樞上同時使用兩者。 在這個預覽中,你只能在沒有現有 Device Update for IoT 中樞 執行個體的 IoT 中樞使用軟體更新。 要嘗試軟體更新,請將一個不使用 Device Update for IoT 中樞 的 IoT hub 連接到你的命名空間。
- 裝置使用不同的客戶端。 執行 裝置更新代理程式 的裝置無法接收軟體更新。 要接收軟體更新,裝置會使用統一的 Azure IoT SDK (預覽版)中的軟體更新用戶端。
軟體更新的運作方式
你可以在 Azure Device Registry 命名空間啟用軟體更新,無論是在設定命名空間時或之後。 欲了解如何操作,請參閱「開始使用 Azure 裝置登錄(預覽版)」。 此功能引入以下組件:
- 軟體更新:匯入至命名空間的更新。 軟體更新包含一個或多個更新檔案及匯入清單。 匯入軟體更新後,該更新可供該命名空間中的軟體更新作業和上線更新作業使用。
- 軟體更新工作:對目標群組中相容的裝置套用軟體更新。
- 初始設定更新工作:當相容裝置在初始設定期間檢查更新時,也就是在註冊並開始運作之前,對這些裝置套用軟體更新。
- 軟體更新用戶端:統一 Azure IoT SDK(預覽版)中的一部分,用於您的裝置應用程式檢查、下載及安裝軟體更新,並回報結果。
典型的更新流程如下:
- 你要把更新檔案和匯入清單上傳到 Azure 儲存體 容器。
- 你要 把軟體更新匯入到 你的命名空間。
- 你建立一個針對 某個群組 或在上線導入時針對 命名空間 的工作。
- 每個裝置都會檢查更新並回報其相容性屬性。 如果裝置相容,就會收到更新。
- 裝置會下載並安裝更新,然後回報結果。 你在工作執行中監控進度和裝置層級的結果。
軟體更新
軟體更新包含兩個組件,需同時上傳:
- 更新檔案:裝置安裝的酬載。 有效載荷可以是韌體映像檔、軟體套件、腳本或多個相關檔案。
-
匯入清單:描述更新的、具有
.importmanifest.json副檔名的 JSON 檔案。 進口清單宣稱:- Update 識別資訊:唯一識別該更新的提供者、名稱及版本。 提供者與名稱合起來可識別更新 更新系列,例如同一裝置型號的所有韌體版本。
- 相容性屬性:決定哪些裝置可以安裝更新的裝置屬性。 欲了解更多資訊,請參閱 裝置相容性。
- 安裝說明:安裝步驟、其順序及每個步驟的 處理常式。 處理常式會告訴裝置如何套用該步驟,例如安裝套件、執行腳本或寫入映像檔。
- 檔案元資料:每個更新檔案的名稱、大小及雜湊值。 服務利用雜湊值在匯入時驗證檔案完整性,裝置也能在安裝前用這些雜湊值驗證每個檔案。
每次軟體更新都需要匯入清單。 如果你嘗試匯入更新檔但沒有匯入清單,匯入會失敗。 匯入時,你可以選擇掃描更新檔案是否含有惡意軟體。 部分地區提供惡意軟體掃描功能。 有關逐步說明,請參見「匯入軟體更新」。
以下範例展示了基於映像的更新的匯入清單:
{
"updateId": {
"provider": "Contoso",
"name": "IrrigationControllerV2-Image",
"version": "1.3.0"
},
"isDeployable": true,
"compatibility": [
{
"manufacturer": "Contoso",
"model": "IrrigationControllerV2"
}
],
"instructions": {
"steps": [
{
"type": "inline",
"description": "Update the device image to version 1.3.0",
"handler": "microsoft/swupdate:1",
"files": [
"contoso-irrigation-controller-v2-1.3.0.swu"
],
"handlerProperties": {
"installedCriteria": "1.3.0"
}
}
]
},
"files": [
{
"filename": "contoso-irrigation-controller-v2-1.3.0.swu",
"sizeInBytes": 112738816,
"hashes": {
"sha256": "wPdNKUSmWTZkR6Pum9oR/EIzdn5AvON4dsXME+/gHVw="
}
}
],
"createdDateTime": "2026-10-01T06:56:51.2002204Z",
"manifestVersion": "5.0"
}
軟體更新使用與 IoT 中樞 裝置更新相同的匯入清單格式。 要了解如何撰寫匯入資訊清單,請參見:
裝置相容性
匯入清單中的相容性屬性決定哪些裝置可以安裝軟體更新。 當裝置檢查更新時,會回報自身的相容性屬性。 Azure 裝置登錄會將這些屬性與軟體更新中宣告的相容性屬性進行比較。
你將相容性屬性定義為名稱-值組。 每次軟體更新都必須宣告至少一個相容性屬性。
manufacturer 和 model 是常見的選擇,但並非必須。 使用任何適合你車隊的屬性,例如 region 或 environment。
匯入清單中的 compatibility 區段是一個屬性集合的陣列。 例如:
"compatibility": [
{
"manufacturer": "Contoso",
"model": "IrrigationControllerV2"
}
]
配對如下:
- 裝置必須匹配集合中的每個屬性。 前述更新僅適用於同時將
manufacturer報告為Contoso,並將model報告為IrrigationControllerV2的裝置。 它不適用於 ContosoSoilSensorV1裝置,或不適用於回報不同製造商的IrrigationControllerV2裝置。 - 裝置只需匹配一組。 如果你宣告多個屬性集,單一軟體更新可以套用到多種裝置類型。
- 每個屬性集都屬於一個更新系列。 你不能用完全相同的相容性屬性來搭配超過一個提供者與名稱的組合。 一起規劃你的更新系列和相容性屬性。 欲了解更多資訊,請參閱「匯入概念」。
一個群組可以包含具有不同相容性特性的裝置。 軟體更新工作只會將更新套用到目標群組中相容的裝置。 例如,若一群組包含 18 IrrigationControllerV2 個裝置與 6 SoilSensorV1 個裝置,則會將針對 IrrigationControllerV2 裝置的更新套用至這 18 個相容裝置。 這六 SoilSensorV1 台裝置都沒有受到影響。
Tip
裝置會向 Azure 裝置登錄檔回報相容性屬性,因此你可以在群組查詢中用它們建立只包含更新適用裝置的群組。
工作、群組與部署行為
你部署軟體更新時,是在命名空間建立 一個作業。 軟體更新支援兩種工作類型:
| 作業類型 | Target | 何時使用它 |
|---|---|---|
| 軟體更新 | Azure Device Registry 群組 | 更新已註冊運作中的裝置。 該群組定義作業的範圍,相容性屬性決定該範圍中哪些裝置安裝更新。 |
| 導入更新 | Azure 裝置登錄命名空間 | 裝置在註冊時就升級到所需的軟體版本,然後再開始運作。 例如,對於曾經存放過一段時間且使用較舊韌體的裝置,使用佈建更新。 |
軟體更新工作不會在到達啟動時相容的裝置後停止。 當工作執行仍在進行時,它仍持續將更新套用於:
- 那些在工作開始時離線的裝置,在重新連線並檢查更新後,就會收到更新。
- 用來加入目標群組的裝置。 群組成員資格不會自動更新:下次刷新群組時,新的裝置會加入群組。 欲了解更多資訊,請參閱 快取成員資格與重新整理。
- 例如,因為相容性屬性改變而符合更新資格的裝置。
註冊更新工作會維持啟用,直到你結束它為止,因此相容裝置在註冊時會持續收到更新。
關於工作狀態、排程與監控,請參閱 Jobs 概念(預覽)。
裝置 SDK 考量
裝置透過統一的 Azure IoT SDK (預覽版)中的軟體更新客戶端接收軟體更新。 在規劃裝置軟體時,請考慮以下幾點:
- 支援的裝置:在此預覽版中,軟體更新用戶端主要適用於可用記憶體超過 32 MB 的 Linux 裝置。
- 整合:SDK 是一個函式庫,而非現成的代理程式。 你將軟體更新客戶端整合進你的裝置應用程式,並提供邏輯來下載、安裝並在硬體上套用更新。 Microsoft 提供範例幫助你入門。
- 檢查更新有兩種方式:正在上線的裝置會在註冊前檢查是否有上線更新。 註冊裝置會透過軟體更新工作檢查軟體更新。 你的裝置應用程式會決定何時檢查更新。
- 連線:裝置會透過其 Device Provisioning Service 連線檢查更新並回報結果。 它不需要獨立的端點或憑證來接收更新。
- 安全性:在下載任何更新檔案之前,軟體更新用戶端會驗證從服務收到的更新資訊的簽名。 裝置下載更新檔案時只會透過 HTTPS 傳輸,因此更新內容在傳輸過程中總是被加密。 確保你的裝置能建立對外的 HTTPS 連線以下載更新檔案。
- 狀態回報:安裝嘗試後,裝置會回報結果,若安裝失敗則會顯示錯誤代碼。 結果會顯示在該工作執行的裝置層級結果中。
- 你的責任:你有責任在自己的環境中驗證整合,包括安裝失敗或裝置在更新時重新啟動時的復原行為。
預覽限制
目前的預覽有下列限制:
- 軟體更新支援已連接到 IoT 中樞 的裝置。 Azure IoT 操作 裝置與資產在此預覽中不被支援。
- 你無法在已有 Device Update for IoT 中樞 執行個體的 IoT hub 上使用軟體更新。
- 每次軟體更新都需要匯入清單。 你無法在 Azure 入口網站建立匯入清單。
- 軟體更新用戶端目前不支援 Proxy 更新或使用參考步驟(父與子更新)的更新。
關於適用於匯入更新的限制,例如最大更新大小,請參見 IoT 中樞 的裝置更新限制。 關於適用於群組與工作的限制,請參閱群組概念(預覽)及工作概念(預覽)。