Installation
You have 2 ways to install odr-dabmod on your host:
Installing binary packages on some linux distributions
Notice: this package does not include the web-based GUI and Digital Predistortion Computation engine
Compiling manually
Unlike the previous option, this one allows you to compile odr-dabmod with the features you really need.
Dependencies
Debian Bullseye-based OS
# Required packages
## C++11 compiler
sudo apt-get install --yes build-essential automake libtool
## FFTW 3.x
sudo apt-get install --yes libfftw3-dev
# optional packages
## ZeroMQ http://www.zeromq.org
sudo apt-get install --yes libzmq3-dev
## UHD for USRP
sudo apt-get install --yes libuhd-dev
## LimeSuite for LimeSDR support
sudo apt-get install --yes liblimesuite-dev
## SoapySDR (see below)
sudo apt-get install --yes libsoapysdr-dev
## bladerf (see below)
sudo apt-get install --yes libbladerf-dev
Compilation
- Clone this repository:
```sh # stable version: git clone https://github.com/Opendigitalradio/ODR-DabMod.git
# or development version (at your own risk): git clone https://github.com/Opendigitalradio/ODR-DabMod.git -b next ```
- Configure the project
sh
cd ODR-DabMod
./bootstrap.sh
./configure
- Compile and install:
sh
make
sudo make install
Configure options
The configure script can be launched with a variety of options:
- Disable ZeroMQ input (to be used with ODR-DabMod), output and remotecontrol:
--disable-zeromq - Disable the binding to the UHD driver for USRPs:
--disable-output-uhd - Compile using the
-ffast-mathoption that gives a substantial speedup at the cost of floating point correctness:--enable-fast-math - Do not pass
-march=nativeto the compiler by using the argument:--disable-native
Remark: Do not compile ODR-DabMod with -march=native compiler option. This is meant for distribution package maintainers who want to use their own march option, and for people running into compilation issues due to -march=native. (e.g. GCC bug 70132 on ARM systems)
Debugging options: You should not enable any debug option if you need good performance.
Create debugging files for each DSP block for data analysis: --enable-trace
For more information, call:
./configure --help
Performance optimisation
While the performance of modern systems is good enough in most cases to run ODR-DabMod, it is sometimes necessary to increase the compilation optimisation if all features are used or on slow systems.
Tricks for best performance:
- Do not use
--disable-native - Use
--enable-fast-math - Add
-O3to compiler flags - Disable assertions with
-DNDEBUG
Applying all together:
./configure CFLAGS="-O3 -DNDEBUG" CXXFLAGS="-O3 -DNDEBUG" --enable-fast-math
Checking for memory usage issues
If your compiler supports it, you can enable the address sanitizer to check for memory issues:
./configure CFLAGS="-fsanitize=address -g -O2" CXXFLAGS="-fsanitize=address -g -O2"
The resulting binary will be instrumented with additional memory checks, which have a measurable overhead. Please report if you get warnings or errors when using the sanitizer.
SoapySDR support and required dependencies
SoapySDR is a vendor-neutral library to drive SDR devices. It can be used to drive the HackRF and the LimeSDR among others.
Required dependencies that need to be installed are, in order:
- SoapySDR itself from https://github.com/pothosware/SoapySDR
- The LimeSuite for the LimeSDR from https://github.com/myriadrf/LimeSuite
- HackRF support for SoapySDR from https://github.com/pothosware/SoapyHackRF
ODR-DabMod will automatically recognise if the SoapySDR library is installed on
your system, and will print at the end of ./configure if support is enabled or
not.
A configuration example is available in doc/example.ini
BladeRF support
In order to use --enable-bladerf, you need to install the libbladerf2 including the -dev package.
