aws/aws-iot-device-sdk-embedded-C logo

aws/aws-iot-device-sdk-embedded-C

Free

SDK for connecting to AWS IoT from a device using embedded C.

FreeFree tier
Type
Open Source

About aws/aws-iot-device-sdk-embedded-C

The AWS IoT Device SDK for Embedded C (C-SDK) is a collection of C source files licensed under the MIT open source license, designed for embedded applications to securely connect IoT devices to AWS IoT Core. It includes libraries for MQTT client, HTTP client, JSON parser, AWS IoT Device Shadow, AWS IoT Jobs, AWS IoT Device Defender, over-the-air updates, fleet provisioning, and AWS SigV4 signing. The SDK is distributed in source form and can be built into firmware along with application code and an OS of choice, relying only on standard C libraries for portability across RTOS, Linux, macOS, and Windows. It has been tested with AWS IoT Core and open source MQTT brokers, and includes demos for POSIX/OpenSSL and FreeRTOS/mbedTLS.

Key Features

MQTT client library for messaging with AWS IoT Core
HTTP client library for RESTful communication
JSON parser library for data handling
AWS IoT Device Shadow support for state synchronization
AWS IoT Jobs support for remote device management
AWS IoT Device Defender support for security monitoring
Over-the-air (OTA) update library for firmware updates
AWS IoT Fleet Provisioning library for device onboarding
AWS SigV4 signing for secure request authentication
Backoff algorithm utility for retry logic

Pros & Cons

Pros
  • Open source under permissive MIT license
  • Comprehensive set of AWS IoT service libraries in one SDK
  • Minimal dependencies (only standard C libraries) for broad portability
  • Actively maintained by AWS with regular releases and documentation
  • Includes demos and porting guides for common platforms
  • Interoperable with open source MQTT brokers beyond AWS IoT Core
Cons
  • Requires C development expertise and familiarity with embedded systems
  • Porting effort needed for non-supported RTOS or hardware platforms
  • No higher-level language bindings; only C source code provided
  • SDK size may be large for extremely resource-constrained MCUs without trimming

Best For

Securely connecting embedded IoT devices to AWS IoT Core for telemetry and commandImplementing MQTT-based messaging in resource-constrained devicesRemote device management via AWS IoT JobsSynchronizing device state with AWS IoT Device ShadowFleet provisioning and onboarding of IoT devicesFirmware over-the-air (OTA) updates for connected devicesMonitoring device security posture with AWS IoT Device DefenderBuilding custom IoT applications requiring HTTP communication

FAQ

What license is the SDK released under?
The SDK libraries are licensed under the MIT open source license.
Which AWS IoT services does the SDK support?
It supports AWS IoT Core MQTT and HTTP, Device Shadow, Jobs, Device Defender, over-the-air updates, and fleet provisioning.
What operating systems and platforms are supported?
The SDK is portable to any OS with standard C libraries; it includes demos for POSIX (Linux, macOS, Windows) and FreeRTOS.
Is the SDK tested only with AWS IoT Core?
The SDK has been tested with AWS IoT Core and also with open source MQTT brokers to ensure interoperability.
Can I use the SDK with mbedTLS instead of OpenSSL?
Yes, the SDK supports multiple TLS implementations; the FreeRTOS demos use mbedTLS.