General Information

The Internet of Things (IoT) aims to seamlessly integrate billions of so-called Smart Objects into traditional Internet infrastructures. From the hardware perspective, Smart Objects typically consist of a tiny, cheap computer, combining energy efficient micro-controllers, low-power radio transceivers, and sensors as well as actuators interacting with the physical world, often powered by batteries. Many of these low-end IoT devices operate in so called low-power and lossy networks (LLNs) and are sometimes referred to as constrained node networks (CNNs).

Most of the theses proposals on this page deal with the development of software or the evaluation of systems and network protocols for Smart Objects and CNNs. In most cases, the IoT operating system RIOT serves as a foundation for the thesis.

Hence, if you would like to apply for a thesis under my supervision, you should have a good understanding of computer networks and the TCP/IP suite as well as you should feel confident in programming in ANSI C. Experience with embedded systems and/or IoT systems is beneficial.

If you think that this is the case please do the following:

  1. Write an email to oliver.hahm@fb2.fra-uas.de and request a username and password.
  2. Use these credentials with an MQTT client to publish your request to the following address: mqtts://:@mqtt.dahahm.de:8883/theses/request/
  3. Please use the retain option.


Below you find some topic proposal but other topics are possible.

Proposed Theses

RPC in the IoT

Read the topic description

Remote Procedure Calls (RPCs) are an efficient concept for implementing distributed applications and facilitates the development of distributed systems. The concept has widely been adopted in all kind of Internet services, but yet is not commonly used for (low-end) IoT applications.

The goal of this project is to survey potential candidates for an RPC system for low-end IoT devices, such as mbed RPC, and port the best suiting candidate to RIOT.

SMTP for Constrained-Node Networks

Read the topic description

E-Mail is an old, yet still highly important and relevant method of exchanging messages. Besides the world wide web it is probably the most popular and most used service of today’s Internet. Nevertheless, since the main protocols for email, especially SMTP, are based on TCP it has not been adopted in the low-end IoT domain. TCP has been considered as too heavy-weight and complex for small IoT devices and not well-suited for low-power and lossy networks. However, recently researchers from Berkeley have figured how to tune TCP to be used for these networks.

As a consequence of these findings, SMTP and email suddenly might be a much better fit for IoT scenarios than previously assumed. In this project, the goal is to port the SMTP library s/qmail to RIOT.

IoT Instant Messaging

Read the topic description

Today, instant messaging (IM) services like WhatsApp or Signal are installed on a vast majority of smartphones. Creating a direct way to communicate with smart objects would eliminate the need for proprietary or vendor specific apps.

The goal of this project is to implement a way to communicate with a low-end (RIOT-powered) IoT device using an established instant messenger smartphone app like WhatsApp, Telegram, or Signal. For instance, Signal provides an open source implementation on GitHub. Either such a library can be used directly on RIOT or a gateway needs to be set up to translate between the IM protocol and a protocol like MQTT or CoAP that is already implemented on RIOT.

Build and configuration systems for IoT operating systems

Read the topic description

RIOT aims for developer friendly experience and to lower the bar for newcomers to the development of low-end IoT devices. One crucial part, which is still lacking, is the availability of an easy to use build and configuration management.

The first part of this topic would be to survey existing build and configuration systems for established IoT OS like Zephyr or mbed OS. For instance, Zephyr provides a tool called west that helps configuring and building your application. mbed OS provides its own IDE.

The second part, would be to check what is missing for RIOT to ease the development of IoT applications and create a toolset that allows to guide an IoT developer through the process of configuring and deploying applications on top of RIOT for low-end IoT devices.

Comparison of socket abstractions in IoT systems

Read the topic description

In the traditional Internet world POSIX sockets have been used as the default abstraction layer for applications to implement network communication over the last decades. On constrained devices however, POSIX sockets are often too heavy-weight and not an ideal choice because of their memory requirements.

That eventually lead to the development of socket APIs for CCNs like RIOT’s Sock API or Rusts Embedded Network Abstraction Layer. In this topic you should implement wrappers for Rust embedded-nal on top of a network stack like GNRC and evaluate the performance and runtime costs for either abstraction.

Transport Layer Protocols for the IoT

Read the topic description

In the traditional Internet TCP and UDP have been the most commonly used transport layer protocols for decades. Since emergence of QUIC this new (UDP-based) transport layer protocol has become a third option. In contrast, for CCNs TCP has for long been considered too heavyweight and not well suited for LLNs and QUIC has not yet been widely used for these networks. This leaves UDP as the most commonly used transport layer protocol for CCNs.

However, recent studies have indicated that TCP may actually not that ill-suited for CCNs. At the same time people started evaluating QUIC for these networks. In this topic you should evaluate and compare these different transport layer protocols for constrained IoT networks. Besides TCP, UDP, and QUIC you can also consider protocols like SCTP or DCCP for evaluation.

IPv6 Privacy Extensions for the GNRC Network Stack

Clock Synchronization for low-power IoT Devices

OTA flashing of PineWatch

Multicore-Support for RIOT

Support of BLE on ESP32 in RIOT