Digital Radio Broadcasting Using LimeSDR and ODR Tools — PART 3

Godfrey L
May 3 · 5 min read

In the previous article you explored on the tools and devices that you are going to use to transmit the DAB/DAB+ signal.

On this part, you will do the actual installation of the ODR-mmbTools in your computer and do some test transmission.

You will compile each tool from ODR-mmbTools one by one. The tools to be installed are the following:

  1. ODR-AudioEnc
  2. ODR-DABMux
  3. ODR-DABMod
  4. ODR-PadEnc

First, create a working folder where you will compile and install all the tools, using the following commands in your favorite terminal:

$ cd ~ 
$ mkdir ODR
$ cd ODR

Then, we can begin to install one tool after the other.

ODR-AUDIOENC

ODR-AudioEnc requires a couple of dependencies which are the following:

  • A C++11 compiler
  • FDK-AAC with the DAB+ patches
  • ZeroMQ 4.0.4 or more recent
  • JACK audio connection kit (optional)
  • The alsa libraries (libasound2, optional)
  • libvlc and vlc for the plugins (optional)

I will not go in detail on how to install the above requirements except the FDK-AAC, since the procedure for installation of the above tools will vary from system to system. One thing to note though, all the tools should be installed as development packages.

Since FDK-ACC library with DAB+ patches is among the repositories in Open Digital Radio repositories, then you must download the version provided by Open digital which contain the DAB+ patches.

Use the following commands to download it:

$ git clone https://github.com/Opendigitalradio/fdk-aac.git
$ cd fdk-aac

You will have to generate two library files libfdk-aac.so.1 and libfdk-aac.so.2 by switching between the git branch dabplus and dabplus2 respectively as follows:

$ git checkout dabplus
$ ./bootstrap
$ ./configure
$ make
$ sudo make install
$ sudo ldconfig

Then checkout to dabplus2 to build the second library as follows:

$ git checkout daplus2
$ ./bootstrap
$ ./configure
$ make
$ sudo make install
$ sudo ldconfig

Once FDK-AAC with DAB+ patch have been installed, we can now compile and install ODR-AudioEnc as follows:

$ cd ~/ODR
$ git clone https://github.com/Opendigitalradio/ODR-AudioEnc.git
$ cd ODR-AudioEnc
$ git checkout next

In the above commands you will have cloned the ODR-AudioEnc repository and switch to the next branch which is the latest development branch.

Now you can compile and install it as follows:

$ ./bootstrap
$ ./configure --enable-alsa --enable-jack --enable-vlc
$ make
$ sudo make install
$ sudo ldconfig

When you run the ./configure command, then look if all the features enabled are correct as below:

ODR-AudioEnc Configure Command Showing Enabled Features

Note that above i have run ./configure --enable-alsa --enable-jack --enable-vlc which enables ALSA, JACK and VLC support. These will add support for ALSA and JACK which can be used for live streaming through attached microphone or Soundcards; and VLC streaming support which will be used in case you want to stream radio stations directly from the internet or from a local file.

If you do not want to enable these, then simply run ./configurewithout any other options.

If all the commands have run successfully, the installation of ODR-AudioEnc will have been completed.

Test it by running:

$ odr-audioenc -h

ODR-DABMUX

Installation of ODR-DabMux is fairy simpler than ODR-AudioEnc. Download the ODR-DabMux git repository as follows:

$ cd ~/ODR
$ git clone https://github.com/Opendigitalradio/ODR-DabMux.git
$ cd ODR-DabMux
$ git checkout next

The above command will install and switch to the branch of ODR-DabMux. Now we can start compilation and installation as follows:

$ ./bootstrap
$ ./configure
$ make
$ sudo make install
$ sudo ldconfig

When you run the ./configure command, then look if all the outputs enabled are correct as below:

ODR-DabMux Configure Command Showing Enabled Outputs

If all things went well, then ODR-DabMux should have been installed successfully to your system. Test it by running the following:

$ odr-dabmux -h

ODR-DABMOD

There requirement for installation of ODR-DabMod are as follows:

  • A C++11 compiler
  • FFTW 3.x
  • SoapySDR library for LimeSDR Device Support
  • ZeroMQ libraries

Again, installation of the above tools will vary from distribution to distribution. Hence i will not provide specific instruction for them here.

Installation of ODR-DabMod is pretty similar like ODR-DabMux. Do the following to download and switch to the next branch.

$ cd ~/ODR
$ git clone https://github.com/Opendigitalradio/ODR-DabMod.git
$ cd ODR-DabMod
$ git checkout next

Next you can do the compilation and installation as follows:

$ ./bootstrap
$ ./configure
$ make
$ sudo make install
$ sudo ldconfig

When you run the ./configure command, then look if all the features enabled are correct as below:

ODR-DabMod Configure Command SAhowing Enabled Features

If all commands run smoothly, you will have installed ODR-DabMod into your system

Test it by running the following command:

$ odr-dabmod -h

ODR-PADENC

ODR-PadEnc depends on the following packages which needs to be installed:

  • a C++11 compiler
  • ImageMagick MagickWand (optional, for MOT Slideshow), version 6 (legacy) or 7

Again, the installation of ImageMagick MagickWand will vary on distribution to distribution hence i will not show them here.

After installation of the above tools, you can proceed to download the ODR-PadEnc repository:

$ cd ~/ODR
$ git clone https://github.com/Opendigitalradio/ODR-PadEnc.git
$ cd ODR-PadEnc
$ git checkout next

Next, we can start the installation as follows:

$ ./bootstrap
$ ./configure
$ make
$ sudo make install
$ sudo ldconfig

When you run the ./configure command, then look if all the features enabled are correct as below:

ODR-PadEnc Configure Command Showing Enabled Features

Provided everything went well above, run the following command to test its installation:

$ odr-padenc -h

In this part of the series of getting LimeSDR working with ODR-mmbTools, you should have installed all the tools to your system successfully.

Read the next part, to get all the tools working together and actually broadcast something.


1