top of page

Sensor Interfacing in Linux Using MRAA and UPM Libraries

Updated: Jul 17, 2020

Sensor Programming in Linux was never been so easy. The development of MRAA and UPM libraries has totally changed the Embedded programming in Linux. Either be it in a language like C, C++, Python, Java or NodeJS. Now a Software Developer Without having much knowledge on the Linux Architecture or device driver can easily write codes for almost all the interfaces and Sensors devices.

Let us understand why MRAA and UPM Libraries are getting so much popularity, I will explain mainly the purpose, architecture and supported interfaces of these libraries.

MRAA has been originally developed by Intel with an intent make it easier for developers and sensor manufacturer to map their sensor and actuators mapped with hardware interfaces and use the constructs and APIs provided by the MRAA libraries independent of the hardware selected. In a nutshell, MRAA provides the flexibility to use ports of supported hardware by adding an additional layer of to allow control of low-level communication by high-level language and constructs such as Javascript, Python and JAVA.

Fortunately, MRAA supports multiple interfaces as listed below:

  • GPIO

  • AIO

  • I2C

  • PWM

  • UART

  • SPI

MRAA & UPM Architecture Diagram

Introduction of MRAA libraries has shown the embedded OEM manufacturer and Sensor manufactures a new world of opportunities. You have seen the above section that the MRAA library provides a layer to access the hardware ports referred by some numbers/name for the particular port. This feature enables the sensor manufacturer to develop a single library for its sensors irrespective of the hardware, these are referred to as “UPM Library”. Almost all kind of sensors manufacturer’s are developing the libraries and contributing to the growing community.

Technically speaking in UPM library for each sensor contains a header which allows to interface with it. A sensor is represented as a class and instantiated. Typically an update() function will be called in order to get new data from the sensor in order to reduce load when doing multiple reads to sensor data.

Join our Technical Session-5 to deep dive into the usage of MRAA and UPM libraries with a number of demo seasons.

What are you going to learn?

  • Boot Process of RuggedBoard

  • Programs in Python and C using UPM & MRAA Libraries

  • Example Programs for Interfaces such as GPIO, UART, I2C, SPI, PWM, & ADC

  • Example Programs for Sensors and GPS

Access Previous Sessions Details:

Subscribe & Follow us on YouTube & Facebook to get the updates.

219 views0 comments

Recent Posts

See All


bottom of page