Porting the Matter standard to RIOT OS (Bachelor Thesis)

Hey everyone,

I’m a student of “Computer Science for Technical Systems” at HAW Hamburg and I want to write my Bachelor Thesis about porting the Matter Standard to RIOT OS. I would like to share my progress here and I’m also happy to receive some feedback. Maybe someone already put some thoughts on this idea? :slight_smile:

I haven’t started yet with the thesis and at the moment I’m doing some research about how to achieve this to get some idea of how much work would need to be done.

Here are the main tasks I would have to do:

  1. Create a new package and module in RIOT OS
  2. Inside the new Matter package: Add a layer between Matter (Application Layer) and RIOT OS to integrate with the RIOT network stack and already existing modules (this needs to be done as a patch to the code from the official Matter Repo - more info here)
  3. When including the package in an application, the source code from the Matter repo will be fetched, the patch will be applied and the Matter static library (called libCHIP) will be built and included
  4. Inside the new Matter module: Add wrapper functions in C to call the functions (in C++) from the included Matter library, which are needed to create applications.
  5. Develop a Demo application (e. g. a light switch with on-off functionality), using the created module
  6. Demonstrate the successful implementation by interacting with the developed “Smart-Home” device (commissioning and controlling) - in the Matter repo there are CLI tools which can be built to do this

I’m excited to receive some feedback about my idea and considerations. :slight_smile: Of course I will keep you updated about my progress and important design decisions.

Cheers, Maik

It’s a good list. You will need to decide what onboarding mechanism you are going to use. (MATTER has a few of them) That might require blinking LEDs or showing QRcodes or having a QRcode on the outside. What platform will you use?

You likely also have to include an IDevID into the device, which is something I’ve been trying to standardize.

My main task will be to make matter available as a module, so application developers can build their applications with it. Sharing the onboarding payload with the commissioner should be possible via simply printing it to the shell or encode it in a QR code. It should be up to the application developer how he will display the “commissioning mode” to the user, dependent on the available hardware (e.g. blinking LED). :slight_smile:

I haven’t looked into the “storing the IDevID” topic. How do you try to standardize that? This also sounds like something, which may be dependent on the used board/hardware.

Maik via RIOT notifications@riot-os.org wrote: > My main task will be to make matter available as a module, so > application developers can build their applications with it. Sharing > the onboarding payload with the commissioner should be possible via > simply printing it to the shell or encode it in a QR code. It should be

You’ll have to do a reference implementation of some kind to demonstrate it works. Even if it just toggles a LED.

> up to the application developer how he will display the "commissioning
> mode" to the user, dependent on the available hardware (e.g. blinking
> LED). :slight_smile:

> I haven't looked into the "storing the IDevID" topic. How do you try to standardize that?
> This also sounds like something, which may be dependent on the used board/hardware.

Standardizing how we do this is the task I’m trying to get ahold of. While the exact method of storing the keypair is hardware specific, the API to that should be RIOT-OS standard.