RIOT Documentation

RIOT in a nutshell

RIOT is an open-source microkernel-based operating system, designed to match the requirements of Internet of Things (IoT) devices and other embedded devices. These requirements include a very low memory footprint (on the order of a few kilobytes), high energy efficiency, real-time capabilities, communication stacks for both wireless and wired networks, and support for a wide range of low-power hardware.

RIOT provides a microkernel, multiple network stacks, and utilities which include cryptographic libraries, data structures (bloom filters, hash tables, priority queues), a shell and more. RIOT supports a wide range of microcontroller architectures, radio drivers, sensors, and configurations for entire platforms, e.g. Atmel SAM R21 Xplained Pro, Zolertia Z1, STM32 Discovery Boards etc. (see the list of supported hardware. Across all supported hardware (32-bit, 16-bit, and 8-bit platforms). RIOT provides a consistent API and enables ANSI C and C++ application programming, with multithreading, IPC, system timers, mutexes etc.

Contribute to RIOT

RIOT is developed by an open community that anyone is welcome to join:

The quickest start

You can run RIOT on most IoT devices, on open-access testbed hardware (e.g. IoT-lab), and also directly as a process on your Linux/FreeBSD/OSX machine (we call this the native port). Try it right now in your terminal window:

1
2
3
4
5
6
7
8
9
git clone git://github.com/RIOT-OS/RIOT.git # assumption: git is pre-installed
cd RIOT
git checkout <LATEST_RELEASE>
./dist/tools/tapsetup/tapsetup              # create virtual Ethernet
                                            # interfaces to connect multiple
                                            # RIOT instances
cd examples/default/
make all
make term

… and you are in the RIOT shell! Type help to discover available commands. For further information see the README of the default example.

To use RIOT directly on your embedded platform, and for more hands-on details with RIOT, see Getting started.

Before that, skimming through the next section is recommended (but not mandatory).

Structure

This section walks you through RIOT’s structure. Once you understand this structure, you will easily find your way around in RIOT’s code base.

RIOT’s code base is structured into five groups.

  • The kernel (core)
  • Platform specific code (cpu; boards)
  • Device drivers (drivers)
  • Libraries and network code (sys; pkg)
  • Applications for demonstrating features and for testing (examples; tests)

In addition RIOT includes a collection of scripts for various tasks (dist) as well as a predefined environment for generating this documentation (doc).

The structural groups are projected onto the directory structure of RIOT, where each of these groups resides in one or two directories in the main RIOT directory.

The following list gives a more detailed description of each of RIOT’s top-level directories:

Further information