GNSS software-defined receiver. A software GNSS receiver is a Global Navigation Satellite System (GNSS) 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 (of the receiver).

GNSS receivers have been traditionally implemented in hardware: a hardware GNSS receiver is conceived as a dedicated chip that has been designed and built (from the very beginning) 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 (and can be shared among multiple applications). For example, the microprocessor of a smartphone can be used to provide GNSS navigation with the only need of including a frontend (instead of a full, more expensive, hardware receiver).

Currently, most of the GNSS receiver market is still hardware. However, there already exist operational solutions based on the software approach able to run on low-cost microprocessors. Software GNSS receivers are expected to increase their market share or even take over in the near future, following the development of the computational capabilities of the microprocessors (Moore's law).

Comparison of GNSS SDR implementations 
This comparison is strictly about GNSS SDR; please do not include general GNSS positioning and mapping software.

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 (Tensilica) - 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 (formerly SX-NSR)
General information:
 Publication: http://gpsworld.com/software-gnss-receiver-an-answer-for-precise-positioning-research
 Development:
 Programming language: C++
 User interface (none, CLI, GUI): CLI, GUI
 Under active development (as-of date): yes (2016-Mar-17)
 Creator/sponsor organization: IfEN GmbH, Germany
 Latest release (version and date): v3.2.1, March 2016
 First release (version and date): v1.0, March 2007
 Hardware support:
 Front-ends: NavPort, NavPort-4, SX3 frontend
 Host computer special hardware supported: SIMD (SSE2, SSSE3), CUDA
 Multicore supported: yes
 GNSS/SBAS signals support:
 GPS: L1CA, L2C, L2P (codeless), L5
 GLONASS: G1, G2
 Galileo: E1, E5a, E5b, E5ab (AltBOC), E6
 BeiDou: B1, B2
 SBAS: EGNOS
 QZSS: L110CAdieyure
 IRNSS: L5, S-Band
 Features:
 Acquisition: yes (several algorithms)
 Tracking: yes (several algorithms)
 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 (GPS L1 C/A channels @20 MHz sample rate, 3 correlators per channel, INTEL Core i7-4970K processor (not over clocked) )
 Application programming interface: yes
 Dual antenna support: yes
 Scintillation monitoring: yes
 Multi-correlator: yes
 Sample data recording: yes
 Multipath mitigation: yes (several algorithms)
 GNSS-SDRLIB
General information:
 Publication:
Software licence: GNU General Public License 2+
 Development:
 Programming language: C
 User interface (none, CLI, GUI): CLI, GUI.
 Number of developers: 1?
 Under active development (as-of date): yes (2013-Sep-25)
 Creator/sponsor organization: Tokyo University of Marine Science and Technology, Japan
 Latest release (version and date):
 First release (version and date): 
 Hardware support:
 Front-ends: NSL STEREO v2 and SiGe GN3S Sampler v3
 Host computer special hardware supported: SIMD (SSE2 and AVX)
 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 (through RTKLIB)
 Maximum number of real-time channels demonstrated: ?
 ARAMIS (formerly iPRx)
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 (as-of date): yes (2014-Nov)
 Creator/sponsor organization: iP-Solutions, Japan, JAXA, Japan
 Latest release (version and date): February 2018
 First release (version and date): 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 (5 correlators per channel)
 Application programming interface: yes
 Dual antenna support: yes, for FEM front end
 Multi-correlator: yes
 Sample data recording: yes
 SoftGNSS v3.0 (also known as SoftGPS)
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 (post-processing) GNSS software receiver
 Development:
 Programming language: MATLAB
 User interface (none, CLI, GUI): CLI and GUI
 Number of developers: 4 (along the project)
 Under active development (as-of date): public version - no, non-public versions - yes (2013-Sep-30)
 Hardware support:
 Front-ends: SiGe GN3S Sampler v1 (in the original SDR and driver release). 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 (separate version for each band of each GNSS):
 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 (none, CLI, GUI): CLI.
 Number of developers: 26 (along the project)
 Under active development (as-of date): yes (2021-Jan-08)
 Creator/sponsor organization: Centre Tecnològic de Telecomunicacions de Catalunya
 Latest release (version and date): 0.0.14 (as Jan 2021)
 First release (version and date):  2011-Mar-11 first svn commit
 Hardware support:
 Front-ends: UHD-compatible (USRP family), OsmoSDR-compatible (RTL2832-based USB dongles, bladeRF, HackRF One), SiGe GN3S Sampler v2, AD-FMCOMMS2-EBZ
 Host computer special hardware supported: SIMD (via VOLK and VOLK_GNSSSDR), 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 (several algorithms)
 Tracking: yes (several algorithms)
 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.
 GRID, Generalized Radionavigation Interfusion Device
General information:
Software licence: Commercial
Publication: Software-Defined GNSS is Ready for Launch
Contact: Radionavigation Laboratory, Locus Lock
 Development:
 Programming language: C++
 Platforms: Linux, Windows, MacOS
 User interface (none, CLI, GUI): CLI.
 Number of developers: 15 (along the project)
 Under active development (as-of date): yes (2023-Apr-28)
 Creator/sponsor organization: University of Texas at Austin
 Latest release (version and date): 2022 annual release
 First release (version and date):  2008-Jul-01
 Hardware support:
 Front-ends: Several and, practically speaking, any.
 Host computer special hardware supported: Intel SIMD (SSE2 through AVX-512), ARM NEON (64-bit and 128-bit)
 Multicore supported?: Yes
 GNSS/SBAS signals support:
 GPS: L1CA, L2C, L5
 Galileo: E1b, E1c, E5a
 QZSS: L1CA
 SBAS: WAAS L1
 Features:
 Acquisition: yes (several algorithms)
 Tracking: yes (several algorithms)
 Generating pseudo-range observable: yes
 Generating carrier-phase observable: yes
 Decoding navigation data: yes
 Position estimation: yes 
 Multiple antennas: yes
 Real-time Kinematic: yes, GRID can function as an RTK-base station or rover with integrated network support, RTK estimation when integrated with PpEngine (available through separate license)
 Differential corrections: yes, CNAV and SBAS
 Maximum number of real-time channels: Hardware-dependent, 30 on a Raspberry Pi 1, >100 on most desktop computers.
 Output formats: RINEX, KML, MATLAB .mat files, CSV, proprietary GBX (GRID binary exchange) format.
 Current applications: experimental FOTON receiver, several GNSS-RO commercial applications, commercial LEO satellite on-board navigation, RTK-based rocket navigation (launch-to-orbit), RTK-based vehicle navigation in urban environments, RTK-based drone, several fixed reference stations, signal abnormality monitoring

References

Further reading

External links 
 Software GPS has many advantages
 A starting point for learning about GPS with Open Source Software 
 Mitigation of ionospheric effects on GNSS positioning

Computing comparisons
Software-defined radio
Navigational equipment
Satellite navigation