Common IO - FreeRTOS
Services or capabilities described in Amazon Web Services documentation might vary by Region. To see the differences applicable to the China Regions, see Getting Started with Amazon Web Services in China (PDF).

Common IO

Common IO APIs act as hardware abstraction layers (HAL) that provide a common interface between drivers and higher-level application code. FreeRTOS Common IO provides a set of standard APIs for accessing common serial devices on supported reference boards; implementations of these APIs are not included. These common APIs communicate and interact with these peripherals and enable your code to function across platforms. Without Common IO, writing code to work with low level devices is silicon-vendor specific.


FreeRTOS does not require implementations of the Common IO APIs to function, but it will attempt to use the Common IO APIs as a way to interface with the specific peripherals on a microcontroller-based board instead of vendor-specific APIs.

In general, device drivers are independent of the underlying operating system and are specific to a given hardware configuration. The HAL abstracts away the details of how a specific driver works and provides a uniform API to control such devices. You can use the same APIs to access various device drivers across multiple microcontroller- (MCU-) based reference boards.


Currently, FreeRTOS provides two Common IO libraries: Common IO - basic and Common IO - BLE.

Common IO - basic


Common IO - basic provides APIs that deal with basic I/O peripherals and functions that you may find on MCU-based boards. The Common IO - basic repository is available on GitHub.

Supported peripherals
  • ADC

  • GPIO

  • I2C

  • PWM

  • SPI

  • UART

  • Watchdog

  • Flash

  • RTC


  • Resets

  • I2S

  • Performance counter

  • Hardware platform information

Supported features
  • Synchronous read/write

    The function doesn't return until the requested amount of data is transferred.

  • Asynchronous read/write

    The function returns immediately and the data transfer happens asynchronously. When the action completes, a registered user callback is invoked.

Peripheral specific
  • I2C

    Combine multiple operations into one transaction. Used to do write then read actions in one transaction.

  • SPI

    Transfer data between primary and secondary, which means the write and read happen simultaneously.

API reference

For a full API reference, see the Common IO - basic API reference.

Common IO - BLE


Common IO - BLE provides abstraction from the manufacturer's Bluetooth Low Energy stack. It provides the following interfaces which can be used to control the device, and perform GAP and GATT operations. The Common IO - BLE repository is available on GitHub.

Bluetooth Device Manager:

This provides an interface to control the Bluetooth device, perform device discovery operations and other connectivity related tasks.

BLE Adapter Manager:

This provides an interface for the GAP API functions that are specific to BLE.

Bluetooth Classic Adapter Manager:

This provides an interface to control BT classic functionalities of a device.

GATT Server:

This provides an interface to use the Bluetooth GATT server feature.

GATT Client:

This provides an interface to use the Bluetooth GATT client feature.

A2DP Connection Interface:

This provides an interface for the A2DP Source profile for the local device.

API reference

For a full API reference, see the Common IO - BLE API reference.

Common IO for Amazon Common Software

The Common IO APIs are a part of the required implementations needed by Amazon Common Software for Devices, specifically to be implemented in a vendor device porting kit (DPK).

What is ACS?

Amazon Common Software (ACS) for Devices is software that makes it faster for you to integrate Amazon Device SDKs on your devices. ACS provides a unified API integration layer, pre-validated and memory efficient components for common functions such as connectivity, a device porting kit (DPK), and multi-tier test suites.

Qualification Program

The Amazon Common Software for Devices qualification program verifies that a build of the ACS DPK (Device Porting Kit) which runs on a specific microcontroller-based development board is compatible with the program's published best practices and robust enough to pass ACS-mandated tests specified by the qualification program.

Vendors qualified under this program are listed on the ACS Chipset Vendors page.

For information about qualifying, contact ACS for Devices.