External libraries and applications. More...

Detailed Description

External libraries and applications.

What are packages? RIOT packages:

Using packages

To add a package to the list of compiled modules you have to add it to the USEPKG macro in your application's Makefile. If the package provides header files you might need to update the INCLUDE macro, too:

USEPKG += <pkg_name>
INCLUDE += $(RIOTPKG)/<pkg_name>/...

When the package can be built out-of-source, the source code of external packages is fetched in a global location in:


When out-of-source build is not possible (for example because the package build system doesn't allow it), the source code is fetched in the build directory of the application under:


In this case, the source and the build directory are the same (currently, this only applies to the micropython package).

Porting an external library

Structure of a package

This module provides porting information for libraries and applications to use with RIOT (to build an external module). If you'd like to add a package to RIOT you need to add a directory with the name of your package to this directory. This directory should contain at least one file:

Patch files can be included in a patches directory in the package dir. These are applied to the upstream package to make it build with RIOT.

Creating a patch with git

Assuming your upstream library resides in a git repository, you can create the patch files as follows:


 ATWINC15x0 WiFi Module Vendor Driver Package
 ATWINC15x0 WiFi vendor driver from the Arduino WiFi101 library.
 Arduino library for SDI-12 communication
 Implements support for the SDI-12 serial communications protocol.
 BLAKE2 hashing library
 C library providing BLAKE2b, BLAKE2s, BLAKE2bp, BLAKE2sp.
 C25519 cryptographic library
 Curve25519 and Ed25519 for low-memory systems.
 Cayenne Low Power Payload (LPP)
 Provides a RIOT support for Cayenne LPP format.
 Cifra cryptographic library
 Provides the Cifra cryptographic library.
 Color graphics library for embedded systems
 Provides a color graphics library for OLED and LCD displays.
 Cross platform fixed point maths library
 Provides a cross platform fixed point maths library to RIOT.
 Device driver model for the Decawave Impulse Radio-Ultra Wideband (IR-UWB) transceiver(s)
 Hardware and architecture agnostic platform for IoT Location Based Services (LBS)
 Driver implementation for the uwb-core driver for Decawave DW1000 transceiver
 uwb-core driver for Decawave DW1000 transceiver
 Driver package for I2C/SPI BME680 sensor
 Provides the Bosch Sensortec's BME680 gas sensor API.
 Support for Ephemeral Diffie-Hellman Over COSE (EDHOC)
 Elk: a tiny Javascript engine
 Elk is a tiny embeddable JavaScript engine that implements a small but usable subset of ES6.
 FAT file system
 Provides FAT file system support.
 Fake Functions Framework
 Fake Functions Framework (fff)
 FlatBuffers: Memory Efficient Serialization Library.
 FreeRTOS coreJSON
 JSON parser that strictly enforces the ECMA-404 JSON standard.
 GEMM (General Matrix Multiplication) library
 Provides support for GEMM library from Google.
 GPS parser library
 Provides a GPS parser library to RIOT.
 HACL* High Assurance Cryptographic Library
 Support for HACL* (High Assurance Cryptographic Library)
 Hardware independent layer of the Arduino cores
 Hardware independent layer of the Arduino cores.
 JSON parser library
 Provides a JSON parser library to RIOT.
 JSON parser library
 C library for Bitcoin's base58 encoding.
 LZ4 compression library
 LZ4 is a fast compression library.
 LibHydrogen cryptographic library
 A lightweight, secure, easy-to-use crypto library suitable for constrained environments.
 Lightweight ASN.1 decoding/encoding library
 Lightweight ASN.1 decoding/encoding library.
 Lightweight Morse encoder
 Provides slim Morse encoding functionality.
 Lightweight compression library
 Provides a lightweight compression library to RIOT.
 LittlevGL - Open-Source Embedded GUI Library
 LittlevGL package for RIOT.
 Lora Serialization
 Provides a RIOT support for Lora Serialization format.
 Lua ported to RIOT
 Provides a Lua interpreter for RIOT.
 Micro-ECC for RIOT
 Micro-ECC for RIOT.
 MicroPython RIOT port
 MicroPython - Python for microcontrollers.
 Microchip CryptoAuthentication Library
 Provides the library for Microchip CryptoAuth devices.
 Monocypher cryptographic library
 Provides the Monocypher cryptographic library.
 NanoCBOR library
 CBOR encoder and decoder library for tiny devices.
 RIOT port of the NimBLE BLE stack.
 OpenThread network stack
 Provides a RIOT adaption of the OpenThread network stack.
 OpenWSN network stack
 Provides a RIOT adaption of the OpenWSN network stack.
 PAHO MQTT framework
 The Eclipse Paho project provides open-source client implementations of MQTT for embedded systems.
 Small footprint CBOR encoder/decoder.
 QR Code generator
 QR Code generator library.
 Relic toolkit for RIOT
 Provides the Relic cryptographic toolkit to RIOT.
 SPI flash file system
 Provides a file system for SPI NOR flash devices.
 SX1261/2 LoRa radio driver
 This package is an implementation of the SX1261/2 LoRa radio driver.
 Semtech LoRaMAC implementation
 Provides a RIOT adaption of Semtech LoRaMAC implementation.
 TLSF-based malloc.
 TLSF-based global memory allocator.
 Talking LEDs - Arduino library for demonstration
 Demonstrates the usage of Arduino libraries as packages.
 TensorFlow Lite
 Provides a RIOT support for TensorFlow Lite AI library.
 TinyCBOR library
 Provides the TinyCBOR (Concise Binary Object Representation) library.
 TinyDTLS for RIOT
 Provides the Eclipse TinyDTLS to RIOT.
 TweetNaCl high-security cryptographic library
 Provides the TweetNaCl high-security cryptographic library.
 Two-Level Segregated Fit memory allocator
 TLSF is a general purpose dynamic memory allocator specifically designed to meet real-time requirements:
 U8G2 graphic library for monochome displays
 Provides a monochrome graphics library for OLED and LCD displays.
 Ultra-lightweight Javascript for Internet Of Things
 Provides Javascript support for RIOT.
 Vendor library for EFM/EFR/EZR32 MCUs
 Vendor library for EFM/EFR/EZR32 targets by Silicon Labs.
 Vendor library for the ESP8266 MCU RTOS support
 Vendor library for the ESP8266 MCU RTOS support by Espressif.
 Wakaama LwM2M implementation
 Provides the Wakaama implementation of LwM2M.
 WolfSSL Embedded SSL/TLS library
 Provides the WolfSSL SSL/TLS solution.
 Yxml XML parser
 Provides an XML parser library.
 A constrained node implementation of CBOR in C.
 Machine Learning inference engine.
 libcose for RIOT
 Constrained node COSE library.
 littlefs file system
 A little fail-safe filesystem designed for embedded systems.
 littlefs v2.x.y file system
 A little fail-safe filesystem designed for embedded systems, v2.x.y release.
 lwIP network stack
 Provides the lwIP network stack.
 Apache MyNewt package for MyNewt based packages: uwb-core, nimble.
 Small and Secure Digital Signatures with Curve-based Diffie-Hellman Key Pairs.
 small Protocol Buffers library
 Provides a protocol buffers library to RIOT.
 tinycrypt crypto library
 Memory optimized crypto library for embedded devices.
 uBASIC interpreter
 A really tiny BASIC interpreter.
 Provides a package for AI inference based on TensorFlow.
 Deflate/Zlib-compatible LZ77 compression/decompression library.