The friendly Operating System for the Internet of Things. Learn more.

RIOT logo

In a Nutshell

RIOT: The friendly Operating System for the Internet of Things.

RIOT powers the Internet of Things like Linux powers the Internet. RIOT is a free, open source operating system developed by a grassroots community gathering companies, academia, and hobbyists, distributed all around the world.

RIOT supports most low-power IoT devices and microcontroller architectures (32-bit, 16-bit, 8-bit). RIOT aims to implement all relevant open standards supporting an Internet of Things that is connected, secure, durable & privacy-friendly.

Community

Join the RIOT!

Developers

You want to participate and contribute to the kernel development or integrate new MCU and platform support? You're welcome! Read the newcomer guide and scan through our community processes. Subscribe to the RIOT-devel mailing list, which is the right place in case you have questions. For live discussions, join the IRC channel #riot-os at irc.freenode.net.

The RIOT issue tracker informs about bugs and enhancement requests. You could also subscribe to the notifications mailing list to get informed about new issues, comments, and pull requests. All commits to the source code will be posted to the commits mailing list. Take a look at our coding conventions and development procedures.

Users

Whether you are looking for help with writing an application for RIOT, learn more about it, or just want to stay in the loop, you are invited to join the RIOT-users mailing list.

RIOTers meet face to face at the annual RIOT Summit.

Features

Three good reasons to think about a new OS for the IoT.

glass bulb

RIOT is Developer Friendly

Program like you are used to. Do not waste time with complex or new environments.

  • Standard programming in C or C++
  • Standard tools such as gcc, gdb, valgrind
  • Minimized hardware dependent code
  • Zero learning curve for embedded programming
  • Code once, run on 8-bit platforms (e.g. Arduino Mega 2560), 16-bit platforms (e.g. MSP430), and on 32-bit platforms (e.g. ARM)
  • Partial POSIX compliance. Towards full POSIX compliance.
  • Develop under Linux or Mac OS using the native port, deploy on embedded device
batteries

RIOT is Resource Friendly

Benefit from a microkernel architecture and a tickless scheduler on very lightweight devices.

  • Robustness & code-footprint flexibility
  • Enabling maximum energy-efficiency
  • Real-time capability due to ultra-low interrupt latency (~50 clock cycles) and priority-based scheduling
  • Multi-threading with ultra-low threading overhead (<25 bytes per thread)
symbol

RIOT is IoT Friendly

Make your applications ready for the smaller things in the Internet with common system support.

  • 6LoWPAN, IPv6, RPL, and UDP
  • CoAP and CBOR
  • Static and dynamic memory allocation
  • High resolution and long-term timers
  • Tools and utilities (System shell, SHA-256, Bloom filters, ...)

Comparison of Current Operating Systems

OS Min RAM Min ROM C Support C++ Support Multi-Threading MCU w/o MMU Modularity Real-Time
Contiki < 2kB < 30kB neutral orange cross red neutral orange check green neutral orange neutral orange
Tiny OS < 1kB < 4KB cross red cross red neutral orange check green cross red cross red
Linux ~ 1MB ~ 1MB check green check green check green cross red neutral orange neutral orange
RIOT ~ 1.5kB ~ 5kB check green check green check green check green check green check green
Full support
Partial support
No support

Get Started

Development and deployment with open tools and common platforms.

First Steps

You find all the information you need to get started on the GitHub wiki. For a high-level overview, check this introduction to RIOT. For a first hands-on experience, you can try a tutorial. You might also find answers to your questions in the FAQ.

Documentation

Detailed documentation is available online. The documentation can also be built offline from the code, using doxygen.

Download

RIOT is a community project and publicly available. We host our source code on GitHub. Checkout the code from https://github.com/RIOT-OS/ or download the latest release.

Native Linux and Mac OS Port

For those of you who are more familiar with non-embedded programming, you should start with the native port of RIOT. This allows to run RIOT inside a process on Linux or Mac OS. It eases the development and debugging of both, RIOT and projects written for RIOT. Such a native process can be analyzed using readily available tools such as gdb or valgrind. You can create virtual testbeds of multiple instances of RIOT running simultaneously and networked together, via a configurable topology. All you need is your PC and Linux or Mac OS!

Testing

A high code quality and thorough testing is a major concern for the RIOT community. Therefore, established tools like embUnit - Unit Testing and Continuous Integration are used.

Development Environment in a Box

RIOT supports Docker and Vagrant. Setup your RIOT development environment very easily. We provide a Docker repository, as well as a Vagrant image.

Usage

Out of the box usage in industry, research, and private environments.

Hardware Support

RIOT runs on several platforms including embedded devices as well as common PCs. It supports multiple drivers, which allows you to start out of the box. The hardware dependent code is reduced to a minimum and abstracted from the kernel itself.

Architectures

  • AVR
  • ARM7
  • Cortex-M0 -M0+ -M3 -M4 -M7
  • Cortex-M23
  • ESP8266
  • ESP32
  • MIPS32
  • MSP430
  • PIC32
  • RISC-V
  • x86

Boards

  • Airfy Beacon
  • Arduino Due
  • Arduino Mega 2560
  • Arduino Zero
  • Microchip SAML10/SAML11
  • Microchip SAMR21-Xplained Pro
  • mbed NXP LPC1768
  • Micro::bit
  • Nordic nrf51822 (DevKit)
  • Nordic nrf52840 (DevKit)
  • Nucleo boards (almost all of them)

Boards (continued)

  • senseBox
  • STM32F4DISCOVERY
  • STM32F3DISCOVERY
  • STM32F0DISCOVERY
  • TelosB
  • Texas Instruments cc2538 Developer Kit
  • Texas Instruments EZ430-Chronos
  • UDOO Board (Cortex-M3 part)
  • Waspmote-pro
  • Zolertia Z1
  • ... and many more: full list here

Drivers

  • Radio transceivers: CC2538, CC2420, AT86RF231 ...
  • Environmental sensors: Sensirion SHT11 Humidity and Temperature Sensor, LPS331AP pressure sensor, SparkFun MQ-3 Alcohol Gas Sensor, Bosch BM180...
  • Battery gas gauges: Linear Technology LTC4150 Coulomb Counter
  • Acceleration sensors: Bosch SMB380 Triaxial Sensor, Pololu LSM303DLHC 3D Compass and Accelerometer...
  • Gyroscopes: ST L3G4200D three-axis digital output gyroscope...
  • Ultra sonic range finders: Robot Electronics SRF02/SRF08...
  • Light: RGB LED, ISL29020 light sensor...
  • Servo motors...
  • ... and many more: full list here

Virtualization

  • Virtual hardware platform (i.e. board and cpu) to run RIOT inside a UNIX process
  • Nativenet transceiver to create virtual testbeds
  • Configurable topology
  • Standard sniffing tools such as Wireshark
  • No special hardware required
  • RIOT embedded on PC with Linux or Mac OS

Core Software Support

  • 6LoWPAN: RFC6282 and RFC6775 compliant
  • RPL: RFC6550 compliant
  • CoAP, CBOR, MQTT-SN, and UBJSON
  • Arduino API

Additional Tools

Open Testbeds




License

Core Code

RIOT is free software: you can redistribute it and/or modify. Software developed by the RIOT community is available under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 2.1 (LGPLv2.1).

In short, LGPLv2 allows you to redistribute, use and/or modify the free open source code developed and maintained by the RIOT community, without requiring you to necessarily open your code. Other software released under LGPLv2 include for example VLC, GNU C Library, or Git, as well as software for industrial products, such as Panasonic LCD HDTV software. Do you need more arguments? Please read our FAQ.

Through this license, RIOT use is suitable for virtually all scenarios. But if you think your use case is not covered, contact us and we will work something out.

External Code

Some external libraries (for example packages) are published under a separate license.

But don't worry, all code files contain licensing information that provide the necessary details.

You can find our coding conventions and a template for the LICENSE preamble in the wiki.



Reference

You are using RIOT in a scientific context? Please consider one of the following references for citation.

About

Continuous development and progress.

History

2008

Project roots. The seed for RIOT was FeuerWare, an operating system for Wireless Sensor Networks. It was part of the FeuerWhere project where firefighters should be monitored. Major design goals were reliability and real-time guarantees.

2010

Towards Internet compliance. To increase modularity and include new IETF protocols, µkleos was forked from the orignal FeuerWare repository. Support for 6LoWPAN, RPL, and TCP was integrated over the following years.

2013

RIOT goes public. RIOT is the direct successor of µkleos. We decided on re-branding to avoid problems with spelling and pronouncing the name of the operating system. We explicitly promote RIOT to a larger community.

Future

We have a vision. Be part of the community and follow ongoing enhancements in our issue tracker. Start working on new features or let the RIOT community know what you miss!

Scientific Papers

  • Emmanuel Baccelli, Oliver Hahm, Mesut Günes, Matthias Wählisch, Thomas C. Schmidt, "RIOT OS: Towards an OS for the Internet of Things," in Proceedings of the 32nd IEEE International Conference on Computer Communications (INFOCOM), Poster Session, April 2013.

Acknowledgments and Contact

Personal Thanks

To the original authors of FeuerWare, the members of the research projects AVS Extrem, G-Mesh-Lab, OPNEX, SAFEST and VIVE, and anybody else who has contributed to FeuerWare, µkleos, and RIOT. Furthermore, a special thank goes to Peter Schmerzl!

Supporters

RIOT is significantly supported by Freie Universität Berlin, by INRIA, and by Hamburg University of Applied Sciences.

Contact

Many people are working on RIOT. Public development questions should be directed to the RIOT-devel mailing list. If you require one-to-one communication for other development questions, you can contact the RIOT maintainers, and for questions related to formal project establishment or collaboration, you can contact Emmanuel Baccelli, Thomas Schmidt, and Matthias Wählisch.