Digital Radio Broadcasting Using LimeSDR and ODR Tools — PART 2

This is the second part of the series on Digital Radio Transmission using LimeSDR and ODR Tools.

Lets recap, on previous story, i discussed on how i got the idea on transmission of Digital Radio Transmission using LimeSDR and Open Digital Radio tools. In this article i will explain on the tools themselves which will be used for the actual Digital Radio Transmission.

In order to be able to transmit the signals, we require the following things:

  1. A Computer with at least 1 GB of RAM
  2. ODR-mmbTools installed into the computer and working
  3. LimeSDR USB Radio
  4. Power Amplifier
  5. Antennas
  6. RTL-SDR Device (Optional)
  7. Software Defined Radio (Optional)
Highlight of All Hardware Required

The following diagram highlights how we are going to interconnect all the tools together:


The computer should have a Linux operating system installed. Any Linux Operating system will work but for this series i will be using Manjaro Linux which is a based Arch Linux Distro.

In this computer it is where all the ODR-mmbTools ( Opendigitalradio Mobile Multimedia Broadcasting Tools) will be installed and also it will act as a source for all station data that we will be transmitting.

You can use any operating system you want but it must have a decent processing power and RAM depending on the application and number of Radio Streams since all processing will be done on the computer. So more performance is better.

ODR-MMBTOOLS (OpenDigitalRadio Mobile Multimedia Broadcasting tools)

These are set of tools which can be used to accomplish the transimission of the digital radio.

The ODR-mmbTools originated from CRC-mmbTools which where the original tools and now are no longer supported.

Opendigitalradio through its community of developers, improved the tools and make it accessible easily.

To get more information on the tools please visit their website at

ODR-mmbTools is a set of the following tools:

  1. ODR-DABMod — Used for modulation of the DAB/DAB+ signal
  2. ODR-DABMux — Used for multiplexing various Audio Streams
  3. ODR-AudioEnc — Used for encoding the Audio Streams to mp2 or aac formats which are essential for DAB and DAB+ transmission respectively.
  4. ODR-PadEnc — Used to encode multimedia information of images before transmission.

The following is the layout on how the tools are going to be interconnected:

The diagram above shows transmission of 3 stations but more stations can be included with the stream depending on the bandwidth requirement of the transmission system.


This software is used to generate Program Associated Data(PAD) which are then to be injected into ODR-AudioEnc.

It is not important for every Audio Stream to include ODR-PadEnc information. Hence you can ignore ODR-PadEnc if you not going to transmit any program information in DAB+ transmission.

The output of ODR-PadEnc is sent ODR-AudioEnc to be included to the appropriate station through a FIFO pipe. At the time of writing this, only FIFO pipes are supported for the communication.


This is the Audio Encoding library which is used to encode DAB and DAB+ signals. It includes a MPEG encoder to produce mp2(MPEG-1 Layer II) stream for DAB transmission or fdk-aac library to produce dabp (DAB+) streams. fdk-aac is provided as an external dependency to the encoder.

Input from ODR-PadEnc can also be added to through the ODR-AudioEnc which can be used for DAB+ transmission.

The ODR-AudioEnc output whether for DAB or DAB+ transimission is then sent to ODR-DABMux software for multiplexing with other stations.

For our application will be using ZeroMQ for communication between ODR-AudioEnc and ODR-DABMux, but other methods of communication are also available.


This impliments a DAB multiplexer that combine all Audio and Data inputs and output them to ODR-DABMod software.

It supports a number of output formats including ETI, FIFO, UDP or ZeroMQ depending on the way you want to transmit the signal to ODR-DABMod software.

The input can be a couple of Audio and Data streams from ODR-AudioEnc. One for each station you want to transmit and multiplex them together to form a single output stream read for modulation and transmission.

It support both real time and offline data multiplexing.

In our example, we will use ZeroMQ stream as output since we are going to use it with LimSDR hardware in real time.


The ODR-DABMod is the DAB modulator which receives the streams generated by ODR-DABMux and modulates the data into I/Q Signals ready for transmission.

The I/Q Data are modulated into complex floats which can be sent to a file or pipe or sent to a device for transmission.

It supports output to devices which uses UHD (USRP Hardware Driver) or devices which uses SoapySDR library for transmission.

For our application, we are going to use the SoapySDR library as this library can be used with our LimeSDR USB hardware.

I have not included etisnoop software as it is not used in the broadcasting chain but instead used to inspect the correctness of broadcasted data by reading the ETI data produced by ODR-DABMod.


This is the hardware we are going to use. As explained from previous section has the following specifications:

  1. It can receive and transmitting anything with frequency between 100 kHz — 3.8 GHz.
  2. It has 61.44 MHz Bandwidth
  3. It has 10 U.FL connectors (6 RX, 4 TX)
  4. Features 2×2 MIMO multiplexed output
  5. Powered through USB or a 12V external power supply

Since DAB signals are designated to be transmitted on BAND III, then this devices will be perfect for our application.

For demonstration purposes we will not connect the LimeSDR hardware to any Power Amplifier as we are not doing the actual broadcasting since we do not have appropriate license to actually transmit DAB+ signals.

Instead we will use a small Whip Antenna connected to the BAND1 transmission port of the LimeSDR hardware.

To this point we are now ready to do the actual installation of the tools and to do the actual transmission of our marvelous DAB+ radio since we now know exactly what we require to accomplish it and how the tools are interconnected together.

Join me on the next part where we will compile all the tools and do our first DAB+ Radio transmission in real time.