Digital Radio Broadcasting Using LimeSDR and ODR Tools — PART 3

Godfrey L
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 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.