- A C++11 capable compiler
- pkg-config
- FFTW 3.x
- autoconf
- Optional UHD for USRP
- Optional LimeSuite for LimeSDR support
- Optional SoapySDR (see below)
- Optional bladerf (see below)
- Optional ZeroMQ http://www.zeromq.org
% tar xjf odr-dabmod-X.Y.Z.tar.bz2 # Unpack the source
% cd odr-dabmod-X.Y.Z # Change to the source directory
% ./configure
# Run the configure script
% make # Build ODR-DabMod
[ as root ]
% make install # Install ODR-DabMod
The configure script can be launched with a variety of options:
Disable ZeroMQ input (to be used with ODR-DabMux), output and remotecontrol: --disable-zeromq
Disable the binding to the UHD driver for USRPs: --disable-output-uhd
Compile using the -ffast-math
option that gives a substantial speedup at the cost of floating point correctness: --enable-fast-math
On some ARM systems you might need --with-boost-libdir=/usr/lib/arm-linux-gnueabihf
so that boost gets found.
Do not pass -march=native
to the compiler: --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
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
-O3
to compiler flags - Disable assertions with
-DNDEBUG
Applying all together:
% ./configure CFLAGS="-O3 -DNDEBUG" CXXFLAGS="-O3 -DNDEBUG" --enable-fast-math
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.
-
Download and install dependencies as above
-
Clone the git repository
-
Bootstrap autotools:
% ./bootstrap.sh
In case this fails, try:
% aclocal && automake --gnu --add-missing && autoconf
-
Then use
./configure
as above
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
In order to use --enable-bladerf
, you need to install the libbladerf2
including the -dev package.