You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
title: Understand Device Update for Azure IoT Hub Agent
3
-
description: Understand Device Update for Azure IoT Hub Agent.
2
+
title: Azure Device Update for IoT Hub agent overview
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/19/2024
7
7
ms.topic: concept-article
8
8
ms.service: azure-iot-hub
9
9
ms.subservice: device-update
@@ -13,62 +13,58 @@ ms.subservice: device-update
13
13
14
14
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) (PnP) to allow messages to flow between the Device Update agent and the Device Update service.
17
+
- The *platform layer*does the high-level update download, install, and apply actions, which can be platform- or device-specific.
The following diagram lists Device Update agent capabilities and actions.
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:
-[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 to report to 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
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.
40
44
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.
45
+
## Platform layer
42
46
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.
47
+
All clients that run on Linux systems, such as the Device Update Raspberry Pi reference image, use the Linux platform layer. The Linux platform layer integrates with the [Delivery Optimization client](https://github.com/microsoft/do-client/releases) for downloads.
44
48
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.
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.
47
50
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).
51
+
If you choose to implement 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).
49
52
50
53
## Update handlers
51
54
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.
53
-
54
-
## Changes to Device Update agent at GA release
55
-
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)
57
-
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).
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 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 [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