eclipse-mraa/mraa
FreeLinux 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.
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
Pros & Cons
- 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
- 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