Azure IoT Hub SDKs

There are three categories of software development kits (SDKs) for working with IoT Hub:

  • IoT Hub device SDKs enable you to build apps that run on your IoT devices using the device client or module client. These apps send telemetry to your IoT hub, and optionally receive messages, jobs, methods, or twin updates from your IoT hub. You can use these SDKs to build device apps that use Azure IoT Plug and Play conventions and models to advertise their capabilities to IoT Plug and Play-enabled applications. You can also use the module client to author modules for Azure IoT Edge runtime.

  • IoT Hub service SDKs enable you to build backend applications to manage your IoT hub, and optionally send messages, schedule jobs, invoke direct methods, or send desired property updates to your IoT devices or modules.

  • IoT Hub management SDKs help you build backend applications that manage the IoT hubs in your Azure subscription.

Microsoft also provides a set of SDKs for provisioning devices through and building backend services for the Device Provisioning Service. To learn more, see Microsoft SDKs for IoT Hub Device Provisioning Service.

Learn about the benefits of developing using Azure IoT SDKs.

Azure IoT Hub 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 Quickstart Samples Reference
Python pip GitHub Quickstart Samples Reference
Node.js npm  GitHub Quickstart Samples Reference
Java Maven GitHub Quickstart Samples Reference
C packages GitHub Quickstart Samples Reference

Warning

The C device SDK listed in the previous table 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 are 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 team and scenario.

RTOS SDK Source Samples Reference
Azure RTOS 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 IoT Hub device SDKS in the IoT device development documentation.

Azure 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

Azure 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

SDK and hardware compatibility

For more information about device SDK compatibility with specific hardware devices, see the Azure Certified Device catalog or individual repository.

Note

Some of the features mentioned in this article, like cloud-to-device messaging, device twins, and device management, are only available in the standard tier of IoT Hub. For more information about the basic and standard/free IoT Hub tiers, see Choose the right IoT Hub tier for your solution.

Azure IoT SDKs are also available for the following services:

Next steps