GNSS-SDR, an open-source software-defined GNSS receiver
GNSS-SDR, an open-source software-defined GNSS receiver
Welcome to GNSS-SDR!
This program is a software-defined receiver which is able to process (that is, to perform detection, synchronization, demodulation and decoding of the navigation message, computation of observables, and, finally, computation of position fixes) the following Global Navigation Satellite System's signals:
In the L1 band:
In the E6 band:
In the L2 band:
In the L5 band:
GNSS-SDR provides interfaces for a wide range of radio frequency front-ends and raw sample file formats, generates processing outputs in standard formats, allows for the full inspection of the whole signal processing chain, and offers a framework for the development of new features. Please visit https://gnss-sdr.org for more information about this open-source, software-defined GNSS receiver.
:sparkles: See what's new in the changelog.
This section describes how to set up the compilation environment in GNU/Linux or macOS / Mac OS X, and to build GNSS-SDR. See also our build and install page.
Older distribution releases might work as well, but you will need GCC 4.7 or newer.
Before building GNSS-SDR, you need to install all the required dependencies. There are two alternatives here: through software packages or building them from the source code. It is in general not a good idea to mix both approaches.
If you want to start building and running GNSS-SDR as quickly and easily as possible, the best option is to install all the required dependencies as binary packages.
On Debian 14 (Forky) / Ubuntu 26.04 (Resolute) or newer, install the required dependencies with:
$ sudo apt install build-essential cmake git gnuradio-dev gr-limesdr gr-osmosdr \
libabsl-dev libad9361-dev libarmadillo-dev libblas-dev \
libboost-chrono-dev libboost-date-time-dev libboost-dev \
libboost-filesystem-dev libboost-serialization-dev libboost-thread-dev \
libcpu-features-dev libgtest-dev libiio-dev liblapack-dev libmatio-dev \
libpcap-dev libprotobuf-dev libpugixml-dev libssl-dev libuhd-dev \
pkgconf protobuf-compiler python3-makoOn older versions:
$ sudo apt install build-essential cmake git gnuradio-dev gr-limesdr gr-osmosdr \
libad9361-dev libarmadillo-dev libblas-dev \
libboost-chrono-dev libboost-date-time-dev libboost-dev \
libboost-filesystem-dev libboost-serialization-dev libboost-system-dev \
libboost-thread-dev \
libcpu-features-dev libgflags-dev libgoogle-glog-dev libgtest-dev libiio-dev \
liblapack-dev liblog4cpp5-dev libmatio-dev libpcap-dev libprotobuf-dev \
libpugixml-dev libssl-dev libuhd-dev \
pkg-config protobuf-compiler python3-makoPlease note that the required files from libgtest-dev were named googletest
in Debian 9 "stretch" and Ubuntu 18.04 "bionic", and renamed to libgtest-dev
in Debian 10 "buster" and above.
In distributions older than Ubuntu 21.04 Hirsute / Debian 11, the package
libcpu-features-dev is not required.
In distributions older than Ubuntu 22.04 Jammy / Debian 12, the package
libssl-dev must be replaced by libgnutls-openssl-dev.
In distributions older than Ubuntu 16.04 or Debian 9, python3-mako must be
replaced by python-mako. For Ubuntu 14.04, you will need to add the package
python-six to the list of dependencies.
Starting from Debian 13 / Ubuntu 25.10, libabsl-dev can replace
libgflags-dev and libgoogle-glog-dev.
Once you have installed these packages, you can jump directly to download the source code and build GNSS-SDR.
If you are using AlmaLinux:
# dnf update -y
# dnf install -y 'dnf-command(config-manager)'
# dnf config-manager --set-enabled powertools
# dnf install -y epel-release
# dnf install -y armadillo-devel blas-devel boost-chrono \
boost-date-time boost-devel boost-serialization boost-system boost-thread \
cmake gcc gcc-c++ git glog-devel gnuradio-devel gmp-devel kernel-devel \
lapack-devel libarchive libpcap-devel log4cpp-devel matio-devel \
openssl-devel protobuf-devel pugixml-devel python3-mako uhd-devel makeOnce you have installed these packages, you can jump directly to download the source code and build GNSS-SDR.
If you are using Arch Linux:
$ pacman -S blas boost boost-libs cmake gcc git gnuradio gtest \
hdf5 lapack libmatio libpcap libvolk make openssl pkgconf \
protobuf pugixml python-makoOnce you have installed these packages, you can jump directly to download the source code and build GNSS-SDR.
If you are using Fedora 26 or above, the required software dependencies can be installed by doing:
$ sudo yum install armadillo-devel automake blas-devel boost-chrono \
boost-date-time boost-devel boost-filesystem boost-serialization \
boost-system boost-thread cmake gcc gcc-c++ git gflags-devel \
glog-devel gnuradio-devel gr-osmosdr-devel kernel-devel lapack-devel \
libpcap-devel log4cpp-devel matio-devel openssl-devel protobuf-compiler \
protobuf-devel pugixml-devel python3-mako makeIn Fedora 33 and above, you will need to add gmp-devel to the package list.
Optionally, you can add uhd-devel starting from Fedora 32.
In Fedora 36 and above, packages spdlog-devel and fmt-devel are also
required.
If you are using openSUSE Leap:
$ zypper install armadillo-devel automake boost-devel cmake gcc-c++ git \
gnuradio-devel hdf5-devel libboost_atomic-devel libboost_chrono-devel \
libboost_filesystem-devel libboost_serialization-devel libboost_system-devel \
libboost_thread-devel libmatio-devel libpcap-devel libtool log4cpp-devel \
openssl-devel pugixml-devel python3-MakoIf you are using openSUSE Tumbleweed:
$ zypper install armadillo-devel automake boost-devel cmake fmt-devel gcc-c++ git \
gnuradio-devel gtest hdf5-devel libboost_atomic-devel libboost_chrono-devel \
libboost_date_time-devel libboost_filesystem-devel libboost_serialization-devel \
libboost_system-devel libboost_thread-devel libopenssl-devel libpcap-devel \
libtool protobuf-devel pugixml-devel python3-Mako spdlog-develOnce you have
No open issues yet, or sync has not completed.