Overview of Azure IoT Device SDKs

The Azure IoT device SDKs include a set of device client libraries, samples, and documentation. The device SDKs simplify the process of programmatically connecting devices to Azure IoT. The SDKs are available in various programming languages with support for multiple RTOSs for embedded devices.

Which SDK should I use?

The main consideration in choosing an SDK is the device's own hardware. General computing devices like PCs and mobile phones, contain microprocessor units (MPUs) and have relatively greater compute and memory resources. A specialized class of devices, which are used as sensors or other special-purpose roles, contain microcontroller units (MCUs) and have relatively limited compute and memory resources. These resource-constrained devices require specialized development tools and SDKs. The following table summarizes the different classes of devices, and which SDKs to use for device development.

Device class Description Examples SDKs
Device SDKs General-use devices Includes general purpose MPU-based devices with larger compute and memory resources PC, smartphone, Raspberry Pi
Embedded device SDKs Embedded devices Special-purpose MCU-based devices with compute and memory limitations Sensors


For more information on different device categories so you can choose the best SDK for your device, see Azure IoT Device Types.

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.


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.

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
Azure RTOS Azure RTOS Middleware GitHub Quickstarts Reference
FreeRTOS FreeRTOS Middleware GitHub Samples Reference
Bare Metal Azure SDK for Embedded C GitHub Samples Reference

Next Steps

To start using the device SDKs to connect devices to Azure IoT, see the following article that provides a set of quickstarts.