Skip to content

Latest commit

 

History

History
113 lines (76 loc) · 3.86 KB

INSTALL.md

File metadata and controls

113 lines (76 loc) · 3.86 KB

Required dependencies:

  • 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

Simple install procedure:

% 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

Configure options

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

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 -O3 to 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.

Nearly as simple install procedure using repository:

  • 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 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:

  1. SoapySDR itself from https://github.com/pothosware/SoapySDR
  2. The LimeSuite for the LimeSDR from https://github.com/myriadrf/LimeSuite
  3. 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.