|
1 | 1 | ---
|
2 |
| -title: Understand Device Update for Azure IoT Hub Agent |
3 |
| -description: Understand Device Update for Azure IoT Hub Agent. |
| 2 | +title: Understand Azure Device Update for IoT Hub agent |
| 3 | +description: Understand the structure and functions of the Azure Device Update for IoT Hub agent. |
4 | 4 | author: eshashah-msft
|
5 | 5 | ms.author: eshashah
|
6 |
| -ms.date: 9/12/2022 |
| 6 | +ms.date: 12/16/2024 |
7 | 7 | ms.topic: concept-article
|
8 | 8 | ms.service: azure-iot-hub
|
9 | 9 | ms.subservice: device-update
|
10 | 10 | ---
|
11 | 11 |
|
12 | 12 | # Device Update for IoT Hub agent overview
|
13 | 13 |
|
14 |
| -The Device Update agent consists of two conceptual layers: |
| 14 | +This article summarizes the structure and function of the Azure Device Update for IoT Hub agent. The Device Update agent consists of two conceptual layers: |
15 | 15 |
|
16 |
| -* The *interface layer* builds on top of [Azure IoT Plug and Play](../iot/overview-iot-plug-and-play.md), allowing for messaging to flow between the Device Update agent and Device Update service. |
17 |
| -* The *platform layer* is responsible for the high-level update actions of download, install, and apply that may be platform- or device-specific. |
| 16 | +- The *interface layer* builds on top of [Azure IoT Plug and Play](../iot/overview-iot-plug-and-play.md) to allow messages to flow between the Device Update agent and the Device Update service. |
| 17 | +- The *platform layer* performs the high-level download, install, and apply update actions, which can be platform- or device-specific. |
18 | 18 |
|
19 |
| -:::image type="content" source="media/understand-device-update/client-agent-reference-implementations.png" alt-text="Agent Implementations." lightbox="media/understand-device-update/client-agent-reference-implementations.png"::: |
| 19 | +The following diagram shows agent implementations. |
20 | 20 |
|
21 |
| -## The interface layer |
| 21 | +:::image type="content" source="media/understand-device-update/client-agent-reference-implementations.png" alt-text="Diagram that shows agent implementations." border="false" lightbox="media/understand-device-update/client-agent-reference-implementations.png"::: |
22 | 22 |
|
23 |
| -The interface layer is made up of the [Device Update core interface](https://github.com/Azure/iot-hub-device-update/tree/main/src/agent/adu_core_interface), [Device information interface](https://github.com/Azure/iot-hub-device-update/tree/main/src/agent/device_info_interface) and [Diagnostic information interface](https://github.com/Azure/iot-hub-device-update/tree/main/src/diagnostics_component/diagnostics_interface). |
| 23 | +## Interface layer |
24 | 24 |
|
25 |
| -These interfaces rely on a configuration file for the device specific values that need to be reported to the Device Update services. For more information, see [Device Update configuration file](device-update-configuration-file.md). |
| 25 | +The interface layer is made up of the following components: |
| 26 | + |
| 27 | +- [Device Update core interface](https://github.com/Azure/iot-hub-device-update/tree/main/src/agent/adu_core_interface) |
| 28 | +- [Device information interface](https://github.com/Azure/iot-hub-device-update/tree/main/src/agent/device_info_interface) |
| 29 | +- [Diagnostic information interface](https://github.com/Azure/iot-hub-device-update/tree/main/src/diagnostics_component/diagnostics_interface) |
| 30 | + |
| 31 | +These interfaces use a configuration file for the device specific values that need to be reported to the Device Update services. For more information, see [Device Update configuration file](device-update-configuration-file.md). |
26 | 32 |
|
27 | 33 | ### Device Update core interface
|
28 | 34 |
|
29 |
| -The *Device Update interface* is the primary communication channel between the Device Update agent and services. For more information, see [Device Update core interface](https://github.com/Azure/iot-plugandplay-models/blob/main/dtmi/azure/iot/deviceupdate-1.json). |
| 35 | +The [Device Update core interface](https://github.com/Azure/iot-plugandplay-models/blob/main/dtmi/azure/iot/deviceupdate-1.json) is the primary communication channel between the Device Update agent and Device Update services. |
30 | 36 |
|
31 | 37 | ### Device information interface
|
32 | 38 |
|
33 |
| -The *device information interface* is used to implement the `Azure IoT PnP DeviceInformation` interface. For more information, see [Device information interface](https://github.com/Azure/iot-plugandplay-models/blob/main/dtmi/azure/devicemanagement/deviceinformation-1.json). |
| 39 | +The [device information interface](https://github.com/Azure/iot-plugandplay-models/blob/main/dtmi/azure/devicemanagement/deviceinformation-1.json) implements the `Azure IoT PnP DeviceInformation` interface. |
34 | 40 |
|
35 | 41 | ### Diagnostic information interface
|
36 | 42 |
|
37 |
| -The *diagnostic information interface* is used to enable [remote log collection](device-update-diagnostics.md#remote-log-collection) for diagnostics. For more information, see [Device information interface](https://github.com/Azure/iot-plugandplay-models/blob/main/dtmi/azure/devicemanagement/deviceinformation-1.json). |
38 |
| - |
39 |
| -## The platform Layer |
40 |
| - |
41 |
| -The Linux *platform layer* integrates with [Delivery Optimization](https://github.com/microsoft/do-client) for downloads and is used in our Raspberry Pi reference image, and all clients that run on Linux systems. |
42 |
| - |
43 |
| -The Linux platform layer implementation can be found in the `src/platform_layers/linux_platform_layer` and it integrates with the [Delivery Optimization client](https://github.com/microsoft/do-client/releases) for downloads. |
44 |
| - |
45 |
| -This layer can integrate with different update handlers to implement the |
46 |
| -installers. For instance, the `SWUpdate` update handler, `Apt` update handler, and `Script` update handler. |
47 |
| - |
48 |
| -If you choose to implement with your own downloader in place of Delivery Optimization, be sure to review the [requirements for large file downloads](device-update-limits.md). |
49 |
| - |
50 |
| -## Update handlers |
51 |
| - |
52 |
| -Update handlers are used to invoke installers or commands to do an over-the-air update. You can either use [existing update content handlers](https://github.com/Azure/iot-hub-device-update/blob/main/src/extensions/inc/aduc/content_handler.hpp) or [implement a custom content handler](https://github.com/Azure/iot-hub-device-update/tree/main/docs/agent-reference/how-to-implement-custom-update-handler.md) that can invoke any installer and execute the over-the-air update needed for your use case. |
| 43 | +The [diagnostic information interface](https://github.com/Azure/iot-plugandplay-models/blob/main/dtmi/azure/iot/diagnosticinformation-1.json) enables [remote log collection](device-update-diagnostics.md#remote-log-collection) for diagnostics. |
53 | 44 |
|
54 |
| -## Changes to Device Update agent at GA release |
| 45 | +## Platform layer |
55 | 46 |
|
56 |
| -If you are using the Device Update agent versions, please migrate to the latest agent version 1.0.0 which is the GA version. See [GA agent for changes and how to upgrade](migration-public-preview-refresh-to-ga.md) |
| 47 | +The Linux platform layer integrates with the [Delivery Optimization client](https://github.com/microsoft/do-client/releases) for downloads. All clients that run on Linux systems, such as the Device Update Raspberry Pi reference image, use the Linux platform layer. |
57 | 48 |
|
58 |
| -You can check installed version of the Device Update agent and the Delivery Optimization agent in the Device Properties section of your [IoT device twin](../iot-hub/iot-hub-devguide-device-twins.md). [Learn more about device properties under ADU Core Interface](device-update-plug-and-play.md#device-properties). |
| 49 | +The Linux platform layer implementation that integrates with [Delivery Optimization](https://github.com/microsoft/do-client) for downloads is in *src/platform_layers/linux_platform_layer*. This layer can integrate with update handlers such as `SWUpdate`, `Apt`, and `Script` to implement the installers. |
59 | 50 |
|
60 |
| -## Next Steps |
| 51 | +If you choose to implement with your own downloader instead of Delivery Optimization, be sure to review the [requirements for large file downloads](device-update-limits.md#requirements-for-large-file-downloads). |
61 | 52 |
|
62 |
| -[Understand Device Update agent configuration file](device-update-configuration-file.md) |
| 53 | +### Update handlers |
63 | 54 |
|
64 |
| -You can use the following tutorials for a simple demonstration of Device Update for IoT Hub: |
| 55 | +Update handlers invoke installers or commands to do over-the-air updates. You can either use [existing update content handlers](https://github.com/Azure/iot-hub-device-update/blob/main/src/extensions/inc/aduc/content_handler.hpp) or implement a [custom content handler](https://github.com/Azure/iot-hub-device-update/tree/main/docs/agent-reference/how-to-implement-custom-update-handler.md) that can invoke any installer to execute the over-the-air updates you need for your use case. |
65 | 56 |
|
66 |
| -* [Image Update: Getting Started with Raspberry Pi 3 B+ Reference Yocto Image](device-update-raspberry-pi.md) extensible via open source to build your own images for other architecture as needed. |
| 57 | +## Check and upgrade Device Update agent version |
67 | 58 |
|
68 |
| -* [Package Update: Getting Started using Ubuntu Server 18.04 x64 Package agent](device-update-ubuntu-agent.md) |
| 59 | +You can check the installed versions of the Device Update agent and the Delivery Optimization agent in the [Device Properties](device-update-plug-and-play.md#device-properties) section of your [IoT device twin](../iot-hub/iot-hub-devguide-device-twins.md). |
69 | 60 |
|
70 |
| -* [Proxy Update: Getting Started using Device Update binary agent for downstream devices](device-update-howto-proxy-updates.md) |
| 61 | +If you use the Device Update agent, make sure you're on the version 1.0.0 general availability (GA) version. For more information, see [Migrate devices and groups to the latest Device Update release](migration-public-preview-refresh-to-ga.md). |
71 | 62 |
|
72 |
| -* [Getting Started Using Ubuntu (18.04 x64) Simulator Reference Agent](device-update-simulator.md) |
| 63 | +## Related content |
73 | 64 |
|
74 |
| -* [Device Update for Azure IoT Hub tutorial for Azure-Real-Time-Operating-System](device-update-azure-real-time-operating-system.md) |
| 65 | +- [Device Update for IoT Hub configuration file](device-update-configuration-file.md) |
| 66 | +- [Azure Device Update for IoT Hub using a Raspberry Pi image](device-update-raspberry-pi.md) |
| 67 | +- [Azure Device Update for IoT Hub using the Ubuntu package agent](device-update-ubuntu-agent.md) |
| 68 | +- [Tutorial: Complete a proxy update by using Device Update for Azure IoT Hub](device-update-howto-proxy-updates.md) |
| 69 | +- [Azure Device Update for IoT Hub using a simulator agent](device-update-simulator.md) |
| 70 | +- [Device Update for Azure IoT Hub using Eclipse ThreadX](device-update-azure-real-time-operating-system.md) |
0 commit comments