May 7, 2019 8:06 am

Microsoft Azure IoT Device Agent V2 general availability

By / Program Manager II

We are excited to announce the general availability of Microsoft Azure IoT Device Agent V2. The Microsoft Azure IoT Device Agent is an open-source, ready-to-build and package solution for Windows 10 IoT Enterprise and Windows 10 IoT Core operating systems that provides you with built-in capabilities to remotely provision, configure, monitor and manage your IoT devices.

Flow chart showing Azure IoT Services
When it comes to the widespread deployment of IoT devices, one of the key challenges is around remote manageability. IoT devices are deployed out in the field or on factory floors where direct device access is not always possible or practical. As an operator, you also want to ensure that you can deploy software and security updates across all the IoT devices in the field to protect and secure the data as well as the device.

What’s new

The Microsoft Azure IoT Device Agent has been in public preview since Jan 2019. If you were using our public preview version, we hope you found it useful and we are eager to know your feedback. With GA, you now have access to the following new features:

1) UWP Management Plugin and UWP bridge: You can now remotely manage your UWP app running on your devices using the UWP management plugin. The Device Agent now includes a UWP bridge which allows UWP applications to leverage a subset of the Device Agent capabilities such as TPM access and reboot.

2) Diagnostics and error reporting: Troubleshooting issues on your IoT devices is a lot easier with quick access to collect logs and error information from the device and upload them to Azure Storage.

3) Device Agent extensibility: Ready-to-use Visual Studio templates and Nugets make it easy for a device developer to create their own plugins and extend the Device Agent’s capabilities.

See the complete list of capabilities below for more information.

Microsoft Azure IoT Device Agent capabilities

The Microsoft Azure IoT Device Agent provides you with the following capabilities to support these scenarios:

  • Device provisioning: The Microsoft Azure IoT Device Agent integrates with the Azure Device Provisioning Service (DPS) client SDK to automatically provision and create the Azure IoT Hub identities of the device using the Azure Device Provisioning Service. The Device Agent registers the device with the Azure IoT Hub, ensuring the identity assignment of the device and applications running on it. The Microsoft Azure IoT Device Agent leverages Azure IoT Module twin such that each process that connects to the IoT Hub is associated to the same IoT Hub device. If your solution demands that you have a custom provisioning client, you can do so by downloading the Azure Device Provisioning Service device SDK and implementing your own provisioning service.
  • Manage cloud connectivity: Once the Microsoft Azure IoT Device Agent establishes the connection with the IoT Hub, it continues to manage the Azure cloud connection and the renewal of the SAS token before it expires.
  • Remote device management: The Microsoft Azure IoT Device Agent provides the following remote device management capabilities via built-in plugins:
    1. Device info: Enables you to retrieve information like Device ID, manufacturer information, firmware version, etc.
    2. Reboot: Enables you to remotely reboot the device or schedule a reboot.
    3. Remote wipe: Enables you to wipe out all data on the device and restore the device to a clean state.
    4. Factory reset: Enables you to apply a factory image on the device bringing it back to its original state.
    5. Time management: Enables you to configure an NTP service and set the time zone on the device.
    6. Windows Update management: Enables you to enforce OS update policies on the device.
    7. Certificate management: Enables you to remotely install or uninstall certificates.
    8. Windows telemetry management: Enables you to configure the level of telemetry that is being reported from the device.
  • Device Agent’s extensibility: As a device builder, you can write your own plugins which can interface  with the Microsoft Azure IoT Device Agent. The Device Agent makes it easy for you to build your own custom code by providing you with the following hooks:
    1. Includes a plugin model to bridge platform components with the agent and consequently with IoT Hub. The plugin model enables discovery, initialization, error reporting and state aggregation. The model includes a Visual Studio template and Nugets, which help you to quickly create your own plugin while abstracting the communication between the Device Agent and your plugin.
    2. When a handler has dependencies on other handlers, Azure IoT Device Agent can make sure that the dependencies are processed in the right order.
    3. Handlers have a versioning model to prevent mismatches in twin schemas or mismatches between plugin versions and the Device Agent.
  • Remote UWP application management: As a solution operator you can now remotely deploy, update, remove, start, or stop UWP applications on your devices using the UWP management plugin. On Windows IoT Core, you can also designate an application to be the start-up application.
  • Device Agent plugin capabilities in UWP apps: UWP applications can also leverage the UWP bridge, which enables the UWP application to leverage a limited subset of the functionalities of the Device Agent such as retrieving DPS enrollment information from the TPM or accessing admin-privileged functionality such as reboot.
  • Diagnostics and error reporting: Errors and diagnostics logs are now easily accessible for troubleshooting purposes using the Microsoft Azure IoT Device Agent.
    1. Solution operators can now collect ETW logs on their IoT devices and upload them back to the cloud for inspection.
    2. The error reports have been enhanced to now include details of the sub-system or the process where the error originally occurred helping users to better interpret error messages.

Getting started

Check out the Quick Start for more information or download the code or exe from this GitHub repo.

We want to hear from you!

As always, your feedback is very important to us! Please share your comments, questions, or concerns on our   or comment below. We’re listening!