Posted On: Mar 5, 2021

The over-the-air update (OTA), AWS IoT Device Defender custom metrics, and AWS IoT Device Shadow named shadow features are now generally available in AWS IoT Device SDK for Embedded C (C-SDK) version 202103.00. With this release, developers can use the C-SDK libraries to update firmware, manage device fleets, monitor fleet metrics, and create multiple shadows for their IoT device.

The AWS IoT OTA library makes it easier to download and perform cryptographic verification of firmware updates. You can use the OTA library with your preferred MQTT library, HTTP library, and underlying operating system (e.g. FreeRTOS, Linux). The AWS IoT Device Defender library supports custom metrics, a feature that helps you monitor operational health metrics that are unique to your fleet or use case. For example, you can define a new metric to monitor the memory usage or CPU usage on your devices. The AWS IoT Device Shadow library supports the named shadow functionality, which allows you to create multiple shadows for a single IoT device. A device's shadow is a JSON document that is used to store and retrieve state information for a device. With the named shadow feature, you can store different device state data (e.g. user settings) into different shadows, and as a result access only the required state data when needed and reduce individual shadow size. See C-SDK 202103.00 README for additional information on this release.

Like the rest of the C-SDK libraries, the AWS IoT OTA, AWS IoT Device Defender, and AWS IoT Device Shadow libraries have been refactored to improve design flexibility, security, and code quality. First, each C-SDK comes in its own GitHub repository, which makes it easier for developers to integrate and update libraries in their FreeRTOS projects. Second, the AWS IoT Device Defender and AWS IoT Device Shadow libraries have been validated for memory safety with the C Bounded Model Checker (CBMC) automated reasoning tool to mitigate code security issues such as buffer overflow. Lastly, C-SDK libraries have undergone code quality checks including MISRA-C compliance and Coverity static analysis to enhance code safety, portability, and reliability in embedded systems (see LTS Code Quality Checklist).  

C-SDK is a collection of C source files under the MIT open source license that can be used in embedded applications to securely connect IoT devices to AWS IoT Core. It is distributed in source form and intended to be built into customer firmware along with application code, other libraries, and an underlying operating system suitable for constrained embedded devices. You can get started by downloading source code from GitHub, and can find more information in the AWS IoT Core Developer Guide for C-SDK.