Opinions / experiences RIOT vs

Hi RIOT users!

My team is looking into the possibility to transition from a bare-metal application to an OS for our embedded controllers. We develop IoT and wireless sensors solutions, for which we have also developed our own controller and platform. A lot of in-house development and maintenance!

Would some of you be willing to answer some questions about why RIOT OS would be a good choice for us? (The main comparison right now is between RIOT-OS, Zephyr Project and ThreadX)

To give a summary of the reasons for even looking into a more advanced architecture: there are a few features common in embedded (IoT) OS’ that would be very convenient for future development of the controller. Things like hardware abstraction and task scheduling are very welcome. In general we want to make it easier to maintain the code (pre- and post release) and decrease time-to-market for new controller versions (with new/upgraded hardware modules). A common requirement that also applies to us are the resource constraints and the ultra low power features (we need to be able to use the low power modes for the STM32L151CC, but that can be added in the port). Real-time isn’t a priority for us at all, although the priority (pre-emptive)-based scheduling would be very useful.

The controller is part of the in-house developed IoT system, which currently is mostly used for Smart Waste and Smart Silo products (detecting fill rates in both).

A few questions that popped up during my own research on this (mostly about RIOT vs Zephyr):

  1. Are there advantages / disadvantages to the different kinds of groups supporting and contributing to RIOT vs Zephyr (Europe/US, academic/industry, ?/?)

  2. Are there advantages / disadvantages I should be aware of for using the OS commercially (compared to Zephyr)

  3. Are there advantages / disadvantages to the hardware abstraction method RIOT uses (vs DTS in Zephyr)

  4. What is the goal of the development of the OS (use by industry, academic, educational use, hobby)?

  5. Any technical limitations I should be aware of?

  6. Any technical advantages (over Zephyr)?

Any help is really appreciated!

All the best,

Noelle

Hello Noëlle,

for answering your questions (even though I have little comparison to other OSs to offer), it would help a lot if you could tell a little about the network technologies you intend to use. Which radio protocols do you plan to use, which application protocols (CoAP? If so, which features?), and which security layers.

This should help especially on the technical limitations and advantages questions.

Best regards Christian

Also, it would be helpful to know if you intend to leverage any of the onboarding or configuration systems that Thread, Zephyr, etc. offer.

Will you want to be homekit or NEST or Zigbee CHIP enabled?

RIOT-OS likely will have to wait for the CHIP spec to become public before we could merge, as the code would otherwise violate someone's NDA. I imagine the same would apply to Zephyr (being GPL) as well.

  1. Are there advantages / disadvantages to the different kinds of groups supporting and contributing to RIOT vs Zephyr (Europe/US, academic/industry, ?/?)

The most contributions are coming from academic people, I would say. A lot of people are located in Germany, France and the Netherlands. 2 years ago we had our RIOT OS Summit in Amsterdam. But there are also some industries involved in the project. If you want to have more data on it, you should probably analyze the Github projects.

Are there advantages / disadvantages I should be aware of for using the OS commercially (compared to Zephyr)

Yes, the license. Zephyr is less restrictive, but this comes also with a big disadvantage, I think. You can use all of your changes in a private environment with the Apache 2.0 license. While with the LGPLv2.1 license in RIOT, you have to distribute all changed in the RIOT OS core. It looks more restrictive at first glance, but I think this is one of the biggest advantages of RIOT. You don’t need to publish your app business code, only the RIOT core code. Due to the structure and build process of RIOT OS, this is also not complicated to maintain. Just something you have to be aware of.

Are there advantages / disadvantages to the hardware abstraction method RIOT uses (vs DTS in Zephyr)

I am not that familiar with Zephyr OS. But this is probably more of a question of taste. Miri wrote a blog post about porting to a new board. It is not that complicated to port to a new board. I have done it a couple of times for some development reasons.

  1. What is the goal of the development of the OS (use by industry, academic, educational use, hobby)?

https://github.com/RIOT-OS/RIOT/wiki/RIOT-Vision What I personally like about RIOT OS and keeps me in this project, is the openness. There are always people who get their hands dirty with the current IETF/IEEE proposals/standards. Some of them are even involved in defining them. If there is a standard which is really interesting for you, you will definitely find somebody else interested in it as well. In my case this was IPv6 over BLE (RFC7668). To get an IPv6 stack running on legacy hardware. CoAP, CBOR, 6LoWPAN with RPL, you name it, it’s there. And, of course, everybody is happy to see more F(L)OSS standards in RIOT OS.

Any technical limitations I should be aware of?

Not that I am aware of. There might just be an advantage developing on Unix system such as Linux or Mac. But there are also ways to work under Windows. One thing could be better tbh. There is still a lack of documentation for beginners. But, if you are just a little bit familiar with Linux, it is not that complicated to understand RIOT. It can be even be a benefit in the mid/long run, to understand the structure. Especially if you want to port your driver into the core.

RIOT-OS likely will have to wait for the CHIP spec to become public before we could merge, as the code would otherwise violate someone’s NDA. I imagine the same would apply to Zephyr (being GPL) as well.

Zephyr is Apache 2.0

Hi Noelle,

here are some quick answers, from my point of view (caveat: I do not have serious hands-on experience with Zephyr).

  1. Are there advantages / disadvantages to the different kinds of groups supporting and contributing to RIOT vs Zephyr (Europe/US, academic/industry, ?/?)

Coarsely: RIOT is more grassroots and mainly of European origin,

while Zephyr is more corporate and of mainly of American origin (it stems from an Intel product).

In practice, the RIOT community also collaborates/overlaps quite a bit with the IETF community,

which could be a plus for communication protocols aspects.

  1. Are there advantages / disadvantages I should be aware of for using the OS commercially (compared to Zephyr)

Both RIOT and Zephyr are used in various commercial products, as far as I know. For experience with RIOT commercial use, you could consider asking Continental about their experience (they actively contribute and maintain code). They sell a RIOT-powered telematics module for car-sharing, see for instance https://summit.riot-os.org/2019/blog/speakers/vincent-dupont/

  1. Are there advantages / disadvantages to the hardware abstraction method RIOT uses (vs DTS in Zephyr)

I do not know enough about Zephyr’s abstraction model to answer this question. That said: RIOT’s abstraction provides portability of your code to ~150 different types of boards and to a large variety of microcontrollers architectures.

  1. What is the goal of the development of the OS (use by industry, academic, educational use, hobby)?

RIOT developers combines industry contributors (large companies, and SMEs), makers/tinkerers and academics. The goal is to develop and maintain a community-driven, general-purpose OS

for IoT microcontroller-based devices which cannot use Linux-class operating systems due to on-board resource constraints.

Best,

Emmanuel