GNSS software-defined receiver
A software GNSS receiver is a Global Navigation Satellite System receiver that has been designed and implemented using software-defined radio.
A GNSS receiver, in general, is an electronic device that receives and digitally processes the signals from a navigation satellite constellation in order to provide position, velocity and time.
GNSS receivers have been traditionally implemented in hardware: a hardware GNSS receiver is conceived as a dedicated chip that have been designed and built with the only purpose of being a GNSS receiver.
In a software GNSS receiver, all digital processing is performed by a general purpose microprocessor. In this approach, a small amount of inexpensive hardware is still needed, known as the frontend, that digitizes the signal from the satellites. The microprocessor can then work on this raw digital stream to implement the GNSS functionality.
Hardware vs. software GNSS receivers
When comparing hardware vs software GNSS receivers, a number of pros and cons can be found for each approach:- Hardware GNSS receivers are in general more efficient from the point of view of both computational load and power consumption since they have been designed in a highly specialized way with the only purpose of implementing the GNSS processing.
- Software GNSS receivers allow a huge flexibility: many features of the receiver can be modified just through software. This provides the receiver with adaptive capabilities, depending on the user's needs and working conditions. In addition, the receiver can be easily upgraded via software.
- Under some assumptions, Software GNSS receivers can be more profitable for some applications, as long as sufficient computational power is available. For example, the microprocessor of a smartphone can be used to provide GNSS navigation with the only need of including a frontend.
Comparison of implementations
- Galileo Satellite Navigation LTD.- GSN:
- *Business Model - IP core license + royalties
- *Development
- ** Programming language: C
- **User interface - NMEA
- *Hardware support:
- **Platforms
- ***PC - windows
- ***PC - Linux
- ***CEVA - XC family
- ***CEVA - TL3/4
- ***Cadence - BBE16/32
- **RF FE
- ***MAXIM
- ***NEC
- *GNSS/SBAS signals support:
- **GPS: L1/CA,
- **GLONASS: G1
- **Galileo: E1,
- **BeiDou: B1
- **SBAS
- **QZSS: L1/CA
- *Features:
- **Acquisition: yes
- **Tracking: yes
- **Generating pseudo-range observable: yes
- **Decoding navigation data: yes
- **Position estimation: yes
- **Maximum number of real-time channels demonstrated: 16/system
- **Multi-correlator: yes
- **Sample data recording: yes
- SX3
- *General information:
- ** Publication: http://gpsworld.com/software-gnss-receiver-an-answer-for-precise-positioning-research
- * Development:
- ** Programming language: C++
- ** User interface : CLI, GUI
- ** Under active development : yes
- ** Creator/sponsor organization: IfEN GmbH, Germany
- ** Latest release : v3.2.1, March 2016
- ** First release : v1.0, March 2007
- * Hardware support:
- ** Front-ends: NavPort, NavPort-4, SX3 frontend
- ** Host computer special hardware supported: SIMD, CUDA
- ** Multicore supported: yes
- * GNSS/SBAS signals support:
- ** GPS: L1CA, L2C, L2P, L5
- ** GLONASS: G1, G2
- ** Galileo: E1, E5a, E5b, E5ab, E6
- ** BeiDou: B1, B2
- ** SBAS: EGNOS
- ** QZSS: L110CAdieyure
- ** IRNSS: L5, S-Band
- * Features:
- ** Acquisition: yes
- ** Tracking: yes
- ** Generating pseudo-range observable: yes
- ** Generating carrier-phase observable: yes
- ** Decoding navigation data: yes
- ** Spectrum analyzer: yes
- ** Position estimation: yes
- ** Maximum number of real-time channels demonstrated: 490
- ** Application programming interface: yes
- ** Dual antenna support: yes
- ** Scintillation monitoring: yes
- ** Multi-correlator: yes
- ** Sample data recording: yes
- ** Multipath mitigation: yes
- GNSS-SDRLIB
- *General information:
- ** Publication:
- **Software licence: GNU General Public License 2+
- * Development:
- ** Programming language: C
- ** User interface : CLI, GUI.
- ** Number of developers: 1?
- ** Under active development : yes
- ** Creator/sponsor organization: Tokyo University of Marine Science and Technology, Japan
- ** Latest release :
- ** First release :
- * Hardware support:
- ** Front-ends: NSL STEREO v2 and SiGe GN3S Sampler v3
- ** Host computer special hardware supported: SIMD
- ** Multicore supported?:
- * GNSS/SBAS signals support:
- ** GPS: L1CA, L1C, L2C, L5
- ** GLONASS: G1, G2
- ** Galileo: E1, E5a, E5b
- ** BeiDou: B1
- ** QZSS: LEX
- * Features:
- ** Acquisition: yes
- ** Tracking: yes
- ** Generating pseudo-range: yes
- ** Decoding navigation data: yes
- ** Spectrum analysis: yes
- ** Position estimation: yes
- ** Maximum number of real-time channels demonstrated: ?
- ARAMIS
- *Versions:
- ** Free academic version
- ** Ionospheric Scintillation Monitor receiver
- ** R&D version
- * General information:
- ** Publication: http://www.cambridge.org/us/academic/subjects/engineering/communications-and-signal-processing/digital-satellite-navigation-and-geophysics-practical-guide-gnss-signal-simulator-and-receiver-laboratory
- * Development:
- ** Programming language: C++
- ** User interface : GUI
- ** Under active development : yes
- ** Creator/sponsor organization: iP-Solutions, Japan, JAXA, Japan
- ** Latest release : February 2018
- ** First release : April 2008
- * Hardware support:
- ** Front-ends: Eagle, FEM, Simceiver
- ** Multicore supported: yes
- * GNSS/SBAS signals support:
- ** GPS: L1CA, L2C
- ** BeiDou B1, B2
- ** GLONASS: G1, G2, G3
- ** Galileo: E1
- ** IRNSS: L5, S
- ** QZSS: L1CA
- ** SBAS
- * Features:
- ** Acquisition: yes
- ** Tracking: yes
- ** Generating pseudo-range observable: yes
- ** Generating carrier-phase observable: yes
- ** Decoding navigation data: yes
- ** Position estimation: yes
- ** Maximum number of real-time channels : 60
- ** Application programming interface: yes
- ** Dual antenna support: yes, for FEM front end
- ** Multi-correlator: yes
- ** Sample data recording: yes
- SoftGNSS v3.0
- *General information:
- ** Publication: https://www.springer.com/birkhauser/engineering/book/978-0-8176-4390-4
- ** Source code: included with the book
- **Software licence: GPL v2
- ** Non real-time GNSS software receiver
- * Development:
- ** Programming language: MATLAB
- ** User interface : CLI and GUI
- ** Number of developers: 4
- ** Under active development : public version - no, non-public versions - yes
- * Hardware support:
- ** Front-ends: SiGe GN3S Sampler v1. Signal records originating from other Sampler versions or other front-ends require configuration changes and in some cases also minor code changes.
- ** Host computer special hardware supported: no
- ** Multicore supported?: no
- * GNSS/SBAS signals support :
- ** GPS: L1CA
- * Features:
- ** Acquisition: yes
- ** Tracking: yes
- ** Generating pseudo-range observable: yes
- ** Generating carrier-phase observable: no
- ** Decoding navigation data: yes
- ** Position estimation: yes
- GNSS-SDR, An open source GNSS Software Defined Receiver
- *General information:
- **Software licence: GPL v3
- * Development:
- ** Programming language: C++
- ** User interface : CLI.
- ** Number of developers: 26
- ** Under active development : yes
- ** Creator/sponsor organization: Centre Tecnològic de Telecomunicacions de Catalunya
- ** Latest release : 0.0.12
- ** First release : 2011-Mar-11 first svn commit
- * Hardware support:
- ** Front-ends: UHD-compatible, OsmoSDR-compatible, SiGe GN3S Sampler v2, AD-FMCOMMS2-EBZ
- ** Host computer special hardware supported: SIMD, CUDA
- ** Multicore supported?: Yes
- * GNSS/SBAS signals support:
- ** GPS: L1CA, L2C, L5
- ** GLONASS: L1SP, L2SP
- ** Galileo: E1b, E1c, E5a
- ** BeiDou: B1I, B3I
- ** SBAS: EGNOS
- * Features:
- ** Acquisition: yes
- ** Tracking: yes
- ** Generating pseudo-range observable: yes
- ** Generating carrier-phase observable: yes
- ** Decoding navigation data: yes
- ** Position estimation: yes
- ** Maximum number of real-time channels demonstrated: > 100
- ** Output formats: RINEX, KML, GPX, GeoJSON, NMEA, RTCM, intermediate results stored in binary.mat files readable from MATLAB and Octave, and from Python via h5py.