Azure IoT Hub SDKs

IoT Hub provides three categories of software development kits (SDKs) to help you build device and back-end applications:

  • IoT Hub device SDKs enable you to build applications 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.

  • 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.

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 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 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.

Learn more about the IoT Hub device SDKs in the IoT device development documentation.

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

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

Azure IoT SDKs are also available for the following services:

Next steps

Learn how to manage connectivity and reliable messaging using the IoT Hub device SDKs.