PLAN :: Position, Location and Navigation


Software-Based GNSS Receiver

GSNRx™ (GNSS Software Navigation Receiver) software suite is a collection of C++ class-based GNSS software receiver programs developed by the Position, Location And Navigation (PLAN) Group in the Department of Geomatics Engineering at the University of Calgary. All versions are capable of processing raw intermediate frequency (IF) data samples either in post-mission or real-time. The software acquires and tracks incoming GNSS signals, computes a navigation solution, and generates measurements for use in other data processing software. Currently, the software is able to acquire and track the following signals:

  • GPS L1 C/A, L1C, L2C and L5
  • GLONASS L1 and L2 civil
  • Galileo E1b/c, E5a and E5b
  • Compass B1I

The input to the software can be real-valued or complex-valued samples obtained at a user definable sampling rate. The software will then perform an acquisition to determine which satellites are visible. Once satellite signals are acquired, they are subsequently tracked and the receiver will try to extract the navigation message and generate code phase, pseudorange, Doppler (phase rate) and/or carrier phase (accumulated Doppler range) measurements at a user definable rate. Carrier phase measurements are corrected for potential half-cycle lock errors and are thus usable for fixed ambiguity carrier phase positioning.

The class-based implementation provides a modular code structure that improves code clarity and facilitates modifications and extensions. For example, different Doppler removal and correlation classes are available (each having different assumptions or simplifications and thus processing speeds) and can be easily substituted for one another, if desired. This approach also allows any available co processors (e.g., FPGA, DSP, GPU, etc.) to be used. Furthermore, the code has been written to allow for maximum flexibility while still providing good efficiency.

The GSNRx™ software suite is not specifically designed to work in any particular environment and can therefore be modified or specialized to meet application demands as best as possible. Different versions (described below) may perform better for different applications.


GSNRx™ provides the basic functionality of typical GNSS receivers. However, given the structure of the code, extension of the receiver to include other signals or more advanced signal processing algorithms, can be accomplished with relative ease. Some of the specific functionality included in the source code (varies with version) includes:

  • Selectable input and output data rates
  • Selectable acquisition strategies (e.g., standard vs. weak signal)
  • Complete user-definable tracking strategies using a library of tracking tools (PLL, FLL, DLL, Kalman filter, fine-search, etc.)
  • Selectable Doppler removal ad correlation algorithms, optimized for either precision or speed
  • Selectable/tunable navigation solution (least squares or Kalman filter


The GSNRx™ software suite contains the following versions/implementations of GNSS receivers including:

  • GSNRx™ - A standard GNSS receiver for tracking primarily strong signals
  • GSNRx-ws™ - A version for tracking weak signals
  • GSNRx-vb™ - A vector-based tracking receiver architecture
  • GSNRx-ut™ - An ultra-tight GNSS/IMU integrated receiver architecture
  • GSNRx-rt™ - A real-time version of the receiver. Capabilities vary with type of processor, number of satellites to track, number of signals to track, sample rate, etc., but all in view signal tracking with GPS L1 C/A code has been demonstrated on a laptop PC.

For more information, click here.

University of Calgary
Department of Geomatics Engineering
Copyright © 2017 PLAN Research Group
Department of Geomatics Engineering
University of Calgary
2500 University Dr NW
Calgary, Alberta
T2N 1N4 Canada