The Common Device Interface for IoT connected microcontrollers


Open-CMSIS-CDI is a new project being proposed by Arm and Linaro to define a common device interface for microcontroller-based devices used in the Internet of Things (IoT).

Today, developing and deploying IoT devices is hard. Developers used to building traditional embedded systems are suddenly faced with a huge range of complex requirements that must be met in order to support ever increasing use cases around connectivity, firmware update, machine learning and the need for long term support of devices that are deployed in the field. This is hindered further by a highly fragmented patchwork of standards and implementations. Software reuse and streamlined development processes common in other areas of software engineering, remain elusive to IoT developers.

Particularly difficult problems include:

  1. Porting applications from one device to another – Every time you start a new project or move to a new device you take a step back. There is a raft of platform bring-up work you have to do just to get back to square one.

  2. Connecting to the Cloud services you want to use – Developers should be free to use the cloud services that are right for them, not be constrained to what is supported by their device.

  3. Managing and updating devices once they’re deployed in the field – Firmware update remains a difficult problem on most microcontroller platforms. Developers should not have to continually reimplement mechanisms for reflashing the firmware on their devices – this should be a basic property they can assume.

  4. Accessing and exploiting the potential of virtual hardware platforms – Virtual hardware is a powerful new technique of starting MCU-based development ahead of the availability of physical platforms. It also allows you to scale development and testing processes free of the cost and complexity of maintaining large physical board farms. Developers need better support to unlock the potential of virtual hardware.

  5. Security – Too often security is an afterthought, but the threats that a connected device faces evolve constantly. Having security built in from the start is essential to the integrity of IoT devices with long deployment lifecycles.

The Open-CMSIS-CDI project will solve these problem by bringing together a set of established, best-in-class APIs to define a set of foundational device software interfaces which can be supported on every IoT connected microcontroller. We aren’t seeking to create something new from scratch – rather to bring together proven, established APIs and libraries to form a foundation that just works. We want to solve the problems which don’t differentiate one IoT device from another, allowing you to focus on the things which do differentiate your device.

The first big problem: Secure Firmware Update

Through Open-CMSIS-CDI we want to build a complete device side software infrastructure. And the first problem we want to solve is this:

Secure firmware update, for any IoT software stack running on microcontroller devices

Building on top of standards such as CMSIS, PSA (The Platform Security Architecture) and TrustedFirmware, we want to ensure every microcontroller can handle firmware updates, irrespective of which device management service delivers them.

Invitation To Participate

Arm and Linaro are proposing to establish Open-CMSIS-CDI as a new community project, and a companion to the established Open-CMSIS-Pack project. To learn more, we are inviting interested partners to join us for a first project call on Thursday 21 April @ 15:00 UK time.

Further details of this call will be published sortly.

If you are interested in joining and learning more about Open-CMSIS-CDI and our vision for a common microcontroller device interface, please contact Arm via


To learn more about Project Centauri, CMSIS and the Open-CMSIS-Pack project see: