Azure IoT SDKs
The following tables list the various SDKs you can use to build IoT solutions.
Device SDKs
The Microsoft Azure IoT device SDKs contain code that facilitates building applications that connect to and are managed by Azure IoT Hub services. These SDKs can run on a general MPU-based computing device 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.
The SDKs are available in multiple languages providing the flexibility to choose which best suits your team and scenario.
Language | Package | Source | Quickstarts | Samples | Reference |
---|---|---|---|---|---|
.NET | NuGet | GitHub | Connect to IoT Hub | Samples | Reference |
Python | pip | GitHub | Connect to IoT Hub | Samples | Reference |
Node.js | npm | GitHub | Connect to IoT Hub | Samples | Reference |
Java | Maven | GitHub | Connect to IoT Hub | Samples | Reference |
C | packages | GitHub | Connect to IoT Hub | Samples | Reference |
The Java device SDK includes samples for Android.
The C device SDK includes samples for iOS that use CocoaPods.
Warning
The Azure IoT C SDK isn't suitable for embedded applications due to its memory management and threading model. For embedded device SDK options, see the embedded device SDKs.
Use the device SDKs to develop code to run on IoT devices that connect to IoT Hub or IoT Central.
To learn more about how to use the device SDKs, see What is Azure IoT device and application development?.
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.
The embedded device SDKs are available for multiple operating systems providing the flexibility to choose which best suits your scenario.
RTOS | SDK | Source | Samples | Reference |
---|---|---|---|---|
Eclipse ThreadX | Azure RTOS Middleware | GitHub | Quickstarts | Reference |
FreeRTOS | FreeRTOS Middleware | GitHub | Samples | Reference |
Bare Metal | Azure SDK for Embedded C | GitHub | Samples | Reference |
Use the embedded device SDKs to develop code to run on IoT devices that connect to IoT Hub or IoT Central.
To learn more about when to use the embedded device SDKs, see C SDK and Embedded C SDK usage scenarios.
Device SDK lifecycle and support
This section summarizes the Azure IoT Device SDK lifecycle and support policy. For more information, see Azure SDK Lifecycle and support policy.
Package lifecycle
Packages are released in the following categories. Each category has a defined support structure.
Beta - Also known as Preview or Release Candidate. Available for early access and feedback purposes and is not recommended for use in production. The preview version support is limited to GitHub issues. Preview releases typically live for less than six months, after which they're either deprecated or released as active.
Active - Generally available and fully supported, receives new feature updates, as well as bug and security fixes. We recommend that customers use the latest version because that version receives fixes and updates.
Deprecated - Superseded by a more recent release. Deprecation occurs at the same time the new release becomes active. Deprecated releases address the most critical bug fixes and security fixes for another 12 months.
Get support
If you experience problems while using the Azure IoT SDKs, there are several ways to seek support:
Reporting bugs - All customers can report bugs on the issues page for the GitHub repository associated with the relevant SDK.
Microsoft Customer Support team - Users who have a support plan can engage the Microsoft Customer Support team by creating a support ticket directly from the Azure portal.
IoT Hub service SDKs
The Azure IoT service SDKs contain code to facilitate building applications that interact directly with IoT Hub to manage devices and security.
Platform | Package | Code Repository | Samples | Reference |
---|---|---|---|---|
.NET | NuGet | GitHub | Samples | Reference |
Java | Maven | GitHub | Samples | Reference |
Node | npm | GitHub | Samples | Reference |
Python | pip | GitHub | Samples | Reference |
To learn more about using the service SDKs to interact with devices through an IoT hub, see IoT Plug and Play service developer guide.
IoT Hub management SDKs
The IoT Hub management SDKs help you build backend applications that manage the IoT hubs 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 |
Alternatives to the management SDKs include the Azure CLI, PowerShell, and REST API.
DPS 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.
DPS 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 |
---|---|---|---|---|
Eclipse ThreadX | Azure RTOS Middleware | GitHub | Quickstarts | Reference |
FreeRTOS | FreeRTOS Middleware | GitHub | Samples | Reference |
Bare Metal | Azure SDK for Embedded C | GitHub | Samples | Reference |
Learn more about the device and embedded device SDKs in IoT SDKs.
DPS 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 |
DPS 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 |
Azure Digital Twins control plane APIs
The control plane APIs are ARM APIs used to manage your Azure Digital Twins instance as a whole, so they cover operations like creating or deleting your entire instance. You'll also use these APIs to create and delete endpoints.
To call the APIs directly, reference the latest Swagger folder in the control plane Swagger repo. This folder also includes a folder of examples that show the usage.
Here are the SDKs currently available for the Azure Digital Twins control plane APIs.
Azure Digital Twins data plane APIs
The data plane APIs are the Azure Digital Twins APIs used to manage the elements within your Azure Digital Twins instance. They include operations like creating routes, uploading models, creating relationships, and managing twins, and can be broadly divided into the following categories:
DigitalTwinModels
- The DigitalTwinModels category contains APIs to manage the models in an Azure Digital Twins instance. Management activities include upload, validation, retrieval, and deletion of models authored in DTDL.DigitalTwins
- The DigitalTwins category contains the APIs that let developers create, modify, and delete digital twins and their relationships in an Azure Digital Twins instance.Query
- The Query category lets developers find sets of digital twins in the twin graph across relationships.Event Routes
- The Event Routes category contains APIs to route data, through the system and to downstream services.Import Jobs
- The Import Jobs API lets you manage a long running, asynchronous action to import models, twins, and relationships in bulk.Delete Jobs
- The Delete Jobs API lets you manage a long running, asynchronous action to delete all models, twins, and relationships in an instance.
To call the APIs directly, reference the latest Swagger folder in the data plane Swagger repo. This folder also includes a folder of examples that show the usage. You can also view the data plane API reference documentation.
Here are the SDKs currently available for the Azure Digital Twins data plane APIs.
Next steps
Suggested next steps include: