Azure SDKs for IoT Hub Device Provisioning Service
The Azure IoT Hub Device Provisioning Service (DPS) is a helper service for IoT Hub. The DPS package provides SDKs to help you build backend and device applications that leverage DPS to provide zero-touch, just-in-time provisioning to one or more IoT hubs. The SDKs are published in a variety of popular languages and handle the underlying transport and security protocols between your devices or backend apps and DPS, freeing developers to focus on application development. Additionally, using the SDKs provides you with support for future updates to DPS, including security updates.
There are three categories of software development kits (SDKs) for working with DPS:
DPS device SDKs provide data plane operations for devices. You use the device SDK to provision a device through DPS.
DPS service SDKs provide data plane operations for backend apps. You can use the service SDKs to create and manage individual enrollments and enrollment groups, and to query and manage device registration records.
DPS management SDKs provide control plane operations for backend apps. You can use the management SDKs to create and manage DPS instances and metadata. For example, to create and manage DPS instances in your subscription, to upload and verify certificates with a DPS instance, or to create and manage authorization policies or allocation policies in a DPS instance.
The DPS SDKs help to provision devices to your IoT hubs. Azure also provides a set of SDKs to help you build device apps and backend apps that communicate directly with Azure IoT Hub. For example, to help your provisioned devices send telemetry to your IoT hub, and, optionally, to receive messages and job, method, or twin updates from your IoT hub. To learn more, see Azure IoT Hub SDKs.
Device SDKs
The DPS device SDKs provide implementations of the Register API and others that devices call to provision through DPS. The device SDKs can run on general MPU-based computing devices such as a PC, tablet, smartphone, or Raspberry Pi. The SDKs support development in C and in modern managed languages including in C#, Node.JS, Python, and Java.
Platform | Package | Code repository | Samples | Quickstart | Reference |
---|---|---|---|---|---|
.NET | NuGet | GitHub | Samples | Quickstart | Reference |
C | apt-get, MBED, Arduino IDE or iOS | GitHub | Samples | Quickstart | Reference |
Java | Maven | GitHub | Samples | Quickstart | Reference |
Node.js | npm | GitHub | Samples | Quickstart | Reference |
Python | pip | GitHub | Samples | Quickstart | Reference |
Warning
The C SDK listed above is not suitable for embedded applications due to its memory management and threading model. For embedded devices, refer to the Embedded device SDKs.
Embedded device SDKs
These SDKs were designed and created to run on devices with limited compute and memory resources and are implemented using the C language.
RTOS | SDK | Source | Samples | Reference |
---|---|---|---|---|
FreeRTOS | FreeRTOS Middleware | GitHub | Samples | Reference |
Bare Metal | Azure SDK for Embedded C | GitHub | Samples | Reference |
Service SDKs
The DPS service SDKs help you build backend applications to manage enrollments and registration records in DPS instances.
Platform | Package | Code repository | Samples | Quickstart | Reference |
---|---|---|---|---|---|
.NET | NuGet | GitHub | Samples | Quickstart | Reference |
Java | Maven | GitHub | Samples | Quickstart | Reference |
Node.js | npm | GitHub | Samples | Quickstart | Reference |
Management SDKs
The DPS management SDKs help you build backend applications that manage the DPS instances and their metadata in your Azure subscription.
Platform | Package | Code repository | Reference |
---|---|---|---|
.NET | NuGet | GitHub | Reference |
Java | Maven | GitHub | Reference |
Node.js | npm | GitHub | Reference |
Python | pip | GitHub | Reference |
Next steps
The Device Provisioning Service documentation provides tutorials and additional samples that you can use to try out the SDKs and libraries.