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 for and with support for multiple RTOSs for embedded devices.

Why use an Azure IoT Device SDK?

The advantages of using an Azure IoT Device SDK over building a custom connection layer are outlined below:

Custom connection layer Azure IoT Device SDKs
Support Need to support and document your solution Access to Microsoft support (GitHub, Microsoft Q&A, Microsoft technical documentation, Customer Support teams)
New Features Need to manually add new Azure features Can immediately take advantage of new features added
Investment Invest hundreds of hours of embedded development to design, build, test, and maintain a custom version Can take advantage of free, open-source tools. The only cost associated with the SDKs is the learning curve.

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
Embedded devices Special-purpose MCU-based devices with compute and memory limitations Sensors Embedded device SDKs
Other Includes general purpose MPU-based devices with larger compute and memory resources PC, smartphone, Raspberry Pi Device SDKs


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

Device SDKs

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


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.

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

Next Steps

To learn more about using the Azure IoT device SDKs to connect general, MPU-based devices, see the following articles:

To learn more about using the Azure IoT embedded device SDKs to connect resource-constrained, MCU-based devices, see the following article: