eclipse/mraa logo

eclipse/mraa

Free

Linux Library for low speed IO Communication in C with bindings for C++, Python, Node.js & Java. Supports generic io platforms, as well as Intel Edison, Intel Joule, Raspberry Pi and many more.

FreeFree tier
Type
Open Source
Company
Eclipse Foundation

About eclipse/mraa

Eclipse MRAA (Libmraa) is a C/C++ library with bindings to Java, Python, and JavaScript for low-level I/O communication on GNU/Linux platforms. It provides a structured API where port names and numbering match the specific board being used, enabling portable code that works across supported hardware through runtime board detection. The library supports a wide range of x86, ARM, MIPS, FPGA, USB, and RISC-V boards, including Intel Edison, Raspberry Pi, Beaglebone Black, and many more. It is designed to simplify sensor and actuator mapping for IoT and edge devices, allowing high-level languages to control low-level communication protocols. MRAA is an Eclipse IoT project and is distributed under an open-source license.

Key Features

C/C++ library with bindings for Java, Python, and JavaScript
Runtime board detection for portable code across supported platforms
Supports x86 (e.g., Intel Edison, Galileo, UP Squared), ARM (Raspberry Pi, Beaglebone Black, Radxa, Rock Pi), MIPS (Linkit Smart 7688), FPGA (DE10-Nano), USB (FT4222, GrovePi), and RISC-V boards
Structured API matching board-specific port names and numbering
Low-level I/O control for pins, buses (I2C, SPI, UART, GPIO), and communication protocols
Part of the Eclipse IoT ecosystem

Pros & Cons

Pros
  • Open-source and free to use
  • Wide board support including x86, ARM, MIPS, FPGA, and USB platforms
  • Runtime board detection enables portable code without hardware-specific modifications
  • Multiple language bindings allow use from C++, Java, Python, and JavaScript
  • Active Eclipse IoT project with community backing
Cons
  • Limited to GNU/Linux operating systems
  • Running tools or applications may require elevated permissions (sudo) on Ubuntu
  • Steep learning curve for beginners unfamiliar with low-level I/O concepts
  • Not an AI tool; focused purely on hardware abstraction and communication

Best For

IoT and edge device prototyping with sensor and actuator mappingCross-platform low-level hardware control for embedded Linux systemsEducational projects involving GPIO, I2C, SPI, and UART communicationIndustrial automation and control on supported single-board computers

FAQ

What is Eclipse MRAA?
Eclipse MRAA is a low-level I/O communications library for GNU/Linux platforms. It provides a C/C++ API with bindings to Java, Python, and JavaScript for controlling GPIO, I2C, SPI, UART, and other hardware interfaces on various single-board computers and IoT devices.
What boards are supported by MRAA?
MRAA supports many x86 boards (e.g., Intel Edison, Galileo, UP Squared, Intel Joule), ARM boards (Raspberry Pi, Beaglebone Black, Radxa series, Rock Pi, Orange Pi), MIPS (Linkit Smart 7688), FPGA (DE10-Nano), USB adapters (FT4222, GrovePi), and RISC-V platforms. A full list is available on the GitHub repository.
How do I install MRAA on Ubuntu?
You can install MRAA on Ubuntu via the official PPA: run 'sudo add-apt-repository ppa:mraa/mraa', then 'sudo apt-get update', and 'sudo apt-get install libmraa2 libmraa-dev libmraa-java python-mraa python3-mraa node-mraa mraa-tools'. Note that running MRAA tools may require sudo.
What programming languages can I use with MRAA?
MRAA provides a C/C++ library (libmraa) with binding layers for Java, Python (both Python 2 and 3), and JavaScript (Node.js). Example code in each language is included in the repository.