Final Week – Summary of the Project

This blog post delivers a short summary of the work that was done during the GSoC’18 program. If you want a more detailed description of my plans, approaches and individual results during the project, you can:

  • Read the full proposal for this project.
  • Read my weekly posts on this blog.
  • Visit the GitHub repository and see all my commits during the time of GSoC’18 (April 23 – August 14) or just dive right into the code.


The goal of this project was the introduction of a basic Multiple Input Multiple Output (MIMO) capability to the GNU Radio core. For this purpose I planned to implement a set of very popular MIMO algorithms and finally provide an exemplary use case for the algorithms by making the OFDM transceiver of GNU Radio MIMO capable.

To put this plan into action, I achieved the following milestones during GSoC’18:

  • Implement a Diversity Combining block with Selection Combining (SC) and Maximum-ratio combining (MRC) in C++. Add QA tests in python.


  • Implement an Alamouti encoder and decoder block in C++. Add QA tests in python.
    • The code was developed in the separate branch ‘alamouti‘.
    • The code got merged to master based on this pull request.
    • The block was generalized (from scalar to vector items) later in the project. The changes were also merged to master with this pull request.




  • Write an in-tree top-level documentation for the doxygen page of GNU Radio.
    • The documentation includes the following content:
      • Theoretical introduction to the general concept of MIMO.
      • Mathematical explanation of each MIMO algorithm.
      • Tutorial of how to use the MIMO encoder and decoder blocks.
    • The documentation was written in the separate branch ‘MIMO_docu‘.
    • The code got merged to master based on this pull request.


  • Embed the generally written spatial multiplexing blocks into a particular system: The OFDM transceiver of the GNU Radio module gr-digital. The MIMO-OFDM transceiver shall serve as an example for how to use the MIMO capabilities in a real communications system.
    • The MIMO-OFDM milestone includes the following sub-tasks:
    • The code for the MIMO-OFDM system was written in the separate branch ‘mimo_hier_block‘.
    • Due to the unfinished test of the MIMO-OFDM synchronization, the branch is not merged into master, yet.


Summarizing, I completed all milestones for the MIMO algorithms successfully. Regarding the last unfinished milestone, there is still work that needs to be done. The core goal of integrating the introduced MIMO capability into a given communications system was achieved, which is proven by the QA loopback test. However, before the MIMO-OFDM transceiver can be merged into the core of GNU Radio (and may be used by many developers), additional testing of the transceiver, as well over-the-air, needs to be done to validate the functionality of the transceiver in non-simulative environments.

Personally, the Google Summer of Code 2018 was a very exciting and joyful experience for me. I want to thank my mentors Felix Wunsch and Marcus Müller for their mentorship of this project and their excellent support during the summer.

I care very much about the completion of an over-the-air running MIMO-OFDM transceiver. Therefore, I am planning to continue working on this project and with GNU Radio after GSoC!





Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s