GSoC/GCI Archive
Google Summer of Code 2015


License: GNU General Public License version 3.0 (GPLv3)

Web Page:

Mailing List:

GNSS-SDR is an open source Global Navigation Satellite Systems software receiver, written in C++, that is able to work either from raw signal samples stored in a file, or in real-time with a radio-frequency front-end as signal source, and performs all the signal processing until the observable computation and Position-Velocity-Time solution.  Its modularity allows users to populate the framework with their own algorithms, allowing to put the focus on the signal processing implementation without worrying about how to embed that algorithm in a whole GNSS receiver. It also makes possible fair performance benchmarks using real GNSS signals, and its open source license allows free downloading, use and code inspection.

The proposed software receiver targets multi-constellation/multi-frequency architectures, pursuing the goals of efficiency, modularity, interoperability, and flexibility demanded by user domains that require non-standard features, such as earth observers or geodesists, and allowing applications such as the observation of the ionosphere, GNSS reflectometry, signal quality monitoring, space weather, and high-accuracy positioning based on carrier-phase navigation techniques. In this project, we focus on signal processing, understood as the process between the ADC and the computation of code and phase observables, including the demodulation of the navigation message. We purposely omit data processing, understood as the computation of the navigation solution from the observables and the navigation message, since there are a number of well-established libraries and applications for that (also in the open source side, such as GPSTk or RTKLIB).


  • BeiDou signal generation and acquisition Currently, the open source GNSS-SDR is completely operational with GPS L1-C/A, Galileo E1 and E5a signals. To go towards an effective multi-constellation software defined receiver, GNSS-SDR extension to the Chinese Navigation Satellite System (BeiDou) is proposed. Hence, the aim of this project is to review and extend the functionality of the signal generator and signal acquisition of GNSS-SDR, implemented in C++ for the GPS and Galileo Signals, for BeiDou open service signals (B1l).
  • Development of a Low Cost Multi-Constellation GNSS Sampler The design of a custom hardware interface for GNSS-SDR started with Google Summer of Code - 2014 and this is a continuation of the previous year effort to build a customized hardware platform for GNSS-SDR. A fully integrated software defined radio receiver that can tune to multiple GNSS constellations and can provide samples to the GNSS-SDR software suite for processing is the vision behind this project.
  • Embedding GNSS-SDR in a System on Chip. This project aims at embedding GNSS-SDR in a system-on-chip consisting on ARM processors and FPGA devices (such as Zynq) in order to reach real-time. The Zedboard kit is suggested as the development platform.
  • GNSSSDR Metadata Standard Implementation-Automatic Receiver Configuration Over the last decade,there has been a rapid evolution in the GNSS technology.The main challenge today lies in establishment of standards to convey GNSS-SDR metadata.ION-SDR Metadata standard aims for interoperability between GNSS-SDR data collection systems and processors.Main problem with recent proposed models is that they do not promote interoperability and data/resource sharing and re-use.To resolve the issues Metadata Standardization Technique is proposed.
  • Run-time partitioning of functions at an embedded SDR framework The main goal of this project will be implementing an embedded Linux application in order to make a flexible use of the software and hardware parts of the FPGA-based System-On-Chip (SoC) architecture to develop function splitting in run time. The first function to be implemented will be the FFT as it is used widely in a different range of algorithms. In order to ease the process, current libraries that contain FFT implementations will be used.
  • Run-time partitioning of SDR functions featuring hardware accelerators The project is about approach that allows to accelerate digital signal processing passing part of the work to reconfigurable hardware, namely FPGA, to use benefits of parallelization. I would like to improve usage of FPGA by writing proposed linux kernel module, which makes run-time decisions whether to use hw-abilities to accelerate some signal processing.