eclipse-mraa/mraa logo

eclipse-mraa/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/mraa

Eclipse MRAA (Libmraa) is a C/C++ library with bindings to Java, Python, and JavaScript (Node.js) for low-level I/O communication on GNU/Linux platforms. It provides a structured and consistent API where port names and numbering match the board in use, and board detection is performed at runtime, enabling portable code across a wide range of IoT and edge devices. The library supports control of GPIO, I2C, SPI, UART, PWM, and other low-level protocols, and is designed to simplify sensor and actuator integration for developers and manufacturers. MRAA is an Eclipse IoT project.

Key Features

Runtime board detection for portable code across supported platforms
Multi-language bindings: C/C++, Java, Python, Node.js (JavaScript)
Structured and consistent API matching board pin numbering
Support for low-level I/O protocols: GPIO, I2C, SPI, UART, PWM, Analog
Broad hardware support: x86 (Galileo, Edison, Joule, Minnowboard, NUC, UP), ARM (Raspberry Pi, Banana Pi, Beaglebone Black, 96Boards, Radxa, Rock Pi, Orange Pi), MIPS (Linkit Smart 7688, Onion Omega2), FPGA (DE10-Nano), USB FT4222, Firmata, and more
Open source Eclipse IoT project

Pros & Cons

Pros
  • Portable code across many supported boards due to runtime detection
  • Multiple high-level language bindings (Java, Python, Node.js) for ease of use
  • Comprehensive support for common I/O protocols and buses
  • Active open source project under the Eclipse Foundation
  • Clear and consistent API with board-specific pin mapping
Cons
  • Limited to GNU/Linux platforms; no native Windows or macOS support
  • Elevated permissions (sudo) often required on systems like Ubuntu
  • Learning curve for developers unfamiliar with low-level I/O concepts
  • Some boards may have incomplete or community-maintained support

Best For

IoT prototyping and development on diverse Linux-based single-board computersEdge computing applications requiring platform-independent I/O controlSensor and actuator integration with high-level language bindingsEducational projects for learning low-level hardware communicationIndustrial automation and monitoring with embedded Linux boards

FAQ

What is Eclipse MRAA?
Eclipse MRAA (Libmraa) is a low-level I/O communications library for GNU/Linux platforms that provides a portable API for interfacing with I/O pins and buses on various IoT and edge devices. It includes bindings for C/C++, Java, Python, and Node.js.
What boards are supported?
MRAA supports a wide range of x86 (e.g., Intel Edison, Joule, Galileo, Minnowboard, NUC, UP series), ARM (e.g., Raspberry Pi, Banana Pi, Beaglebone Black, 96Boards, Radxa, Rock Pi, Orange Pi), MIPS (Linkit Smart 7688, Onion Omega2), FPGA (DE10-Nano), USB FT4222, and various other platforms through Firmata, I2C, and GrovePi.
Is MRAA free to use?
Yes, MRAA is open source and free to use. It is licensed under the Eclipse Public License and available on GitHub.
How do I install MRAA?
Installation instructions are available for Ubuntu (via PPA), Arch Linux (AUR), and openSUSE/SLE (native repositories). For other distributions, you can build from source. Some distributions require elevated permissions to run MRAA tools.