Azure IoT Device SDKs Platform Support

Microsoft strives to continually expand the universe of Azure IoT Hub capable devices. Microsoft publishes open-source device SDKs on GitHub to help connect devices to Azure IoT Hub and the Device Provisioning Service. The device SDKs are available for C, .NET (C#), Java, Node.js, and Python. Microsoft tests each SDK to ensure that it runs on the supported configurations detailed for it in the Microsoft SDKs and device platform support section.

In addition to the device SDKs, Microsoft provides several other avenues to empower customers and developers to connect their devices to Azure IoT:

  • Microsoft collaborates with several partner companies to help them publish development kits, based on the Azure IoT C SDK, for their hardware platforms.

  • Microsoft works with Microsoft trusted partners to provide an ever-expanding set of devices that have been tested and certified for Azure IoT. For a current list of these devices, see the Azure certified for IoT device catalog.

  • Microsoft provides a platform abstraction layer (PAL) in the Azure IoT Hub Device C SDK that helps developers to easily port the SDK to their platform. To learn more, see the C SDK porting guidance.

This topic provides information about the Microsoft SDKs and the platform configurations they support, as well as each of the other options listed above.

Microsoft SDKs and device platform support

Microsoft publishes open-source SDKs on GitHub for the following languages: C, .NET (C#), Node.js, Java, and Python. The SDKs and their dependencies are listed in this section. The SDKs are supported on any device platform that satisfies these dependencies.

For each of the listed SDKs, Microsoft:

  • Continuously builds and runs end-to-end tests against the master branch of the relevant SDK in GitHub on several popular platforms. To provide test coverage across different compiler versions, we generally test against the latest LTS version and the most popular version.

  • Provides installation guidance or installation packages if applicable.

  • Fully supports the SDKs on GitHub with open-source code, a path for customer contributions, and product team engagement with GitHub issues.

C SDK

The Azure IoT Hub C device SDK is tested with and supports the following configurations.

OS TLS library Additional requirements
Linux OpenSSL, WolfSSL, or BearSSL Berkeley sockets

Portable Operating System Interface (POSIX)
iOS 12.2 OpenSSL XCode emulated in OSX 10.13.4
Windows 10 family SChannel
Mbed OS 5.4 Mbed TLS 2 MXChip IoT dev kit
Azure Sphere OS WolfSSL Azure Sphere MT3620
Arduino BearSSL ESP32 or ESP8266

Python SDK

The Azure IoT Hub Python device SDK is tested with and supports the following configurations.

OS Compiler
Linux Python 2.7.*, 3.5 or later
MacOS High Sierra Python 2.7.*, 3.5 or later
Windows 10 family Python 2.7.*, 3.5 or later

Only Python version 3.5.3 or later support the asynchronous APIs, we recommend using version 3.7 or later.

.NET SDK

The Azure IoT Hub .NET (C#) device SDK is tested with and supports the following configurations.

OS Standard
Linux .NET Core 2.1
Windows 10 Desktop and Server SKUs .NET Core 2.1, .NET Framework 4.5.1, or .NET Framework 4.7

The .NET SDK can also be used with Windows IoT Core with the Azure Device Agent or a custom NTService that can use RPC to communicate with UWP applications.

Node.js SDK

The Azure IoT Hub Node.js device SDK is tested with and supports the following configurations.

OS Node version
Linux LTS and Current
Windows 10 family LTS and Current

Java SDK

The Azure IoT Hub Java device SDK is tested with and supports the following configurations.

OS Java version
Android API 28 Java 8
Linux x64 Java 8
Windows 10 family x64 Java 8

Partner supported development kits

Microsoft works with various partners to provide development kits for several microprocessor architectures. These partners have ported the Azure IoT C SDK to their platform. Partners create and maintain the platform abstraction layer (PAL) of the SDK. Microsoft works with these partners to provide extended support.

Partner Devices Link Support
Espressif ESP32
ESP8266
Esp-azure GitHub
Qualcomm Qualcomm MDM9206 LTE IoT Modem Qualcomm LTE for IoT SDK Forum
ST Microelectronics STM32L4 Series
STM32F4 Series
STM32F7 Series
STM32L4 Discovery Kit for IoT node
X-CUBE-AZURE

P-NUCLEO-AZURE
FP-CLD-AZURE
Support
Texas Instruments CC3220SF LaunchPad
CC3220S LaunchPad
CC3235SF LaunchPad
CC3235S LaunchPad
MSP432E4 LaunchPad
Azure IoT Plugin for SimpleLink TI E2E Forum
TI E2E Forum for CC3220
TI E2E Forum for MSP432E4

Porting the Microsoft Azure IoT C SDK

If your device platform isn't covered by one of the previous sections, you can consider porting the Azure IoT C SDK. Porting the C SDK primarily involves implementing the platform abstraction layer (PAL) of the SDK. The PAL defines primitives that provide the glue between your device and higher-level functions in the SDK. For more information, see Porting Guidance.

Microsoft partners and certified Azure IoT devices

Microsoft works with a number of partners to continually expand the Azure IoT universe with Azure IoT tested and certified devices.

Connecting to IoT Hub without an SDK

If you're not able to use one of the IoT Hub device SDKs, you can connect directly to IoT Hub using the IoT Hub REST APIs from any application capable of sending and receiving HTTPS requests and responses.

Support and other resources

If you experience problems while using the Azure IoT device SDKs, there are several ways to seek support summarized below. For full information on all of your support options, please see Azure IoT Support and Help Options.

Reporting bugs – Bugs in the device SDKs can be reported on the issues page of the relevant GitHub project. Fixes rapidly make their way from the project in to product updates.

Technical Questions – You can ask technical questions on both Microsoft Q&A and Stack Overflow using the tag azure-iot-sdk.

Microsoft Customer Support team – Users who have a support plan can engage the Microsoft Customer Support team by creating a new support request directly from the Azure portal.

Feature requests – Azure IoT feature requests are tracked via the product’s User Voice page.

Next steps