ODR-DabMux
(compilation bootstrap.sh) |
Revision as of 12:30, 20 August 2014
ODR-DabMux is a free open source DAB Multiplexer initially developed by Communication Research Center (CRC) from Canada, and subsequently forked by opendigitalradio. It is a command line tool.
The development is done publicly on GitHub with releases available ad interim on http://mpb.li
The main communication channel is the CRC-mmbTools Google Group mailing list
This page describes how to compile and use odr-dabmux.
Contents |
Build information for ODR-DabMux
Prerequisites
Boost
You will need to install Boost at least version 1.42. The one from your distribution is probably fine, and if you have installed GNURadio or UHD, you will already have it.
For example on Debian:
apt-get install libboost-all-dev
ZeroMQ
If you want to use the zeromq inputs or outputs, you need a recent (4.0.4 is best) version of ZeroMQ. It is probably preferred to install it from source:
wget http://download.zeromq.org/zeromq-4.0.4.tar.gz tar -zxvf zeromq-4.0.4.tar.gz cd zeromq-4.0.4 ./configure make sudo make install
This will install it into /usr/local
LibFEC
ODR-DabMux also depends on libfec from Phil Karn. On 64-bit machines, the original libfec doesn't compile (" fec.h:267: Error: bad register name `%dil' "). A patched version that compiles on x86_64 (and even on ARM) is available on GitHub (.zip)
Compilation
Once the prerequisites are installed, download ODR-DabMux from the package or git
git clone https://github.com/Opendigitalradio/ODR-DabMux
then in the ODR-DabMux directory do
./bootstrap.sh ./configure --enable-input-zeromq --enable-output-zeromq make sudo make install
or, if you don't have zeromq:
./configure make sudo make install
then you can execute, as a test
odr-dabmux -h
Each time you update from the git repository (either git checkout or git pull) you should do
./bootstrap.sh
to re-generate the autotools scripts and generate the ./configure script
Usage
There are two ways to use ODR-DabMux: with command line arguments or with a configuration file.
Command line interface
There are quite many arguments and options, and the best is to read the manpage (man odr-dabmux) first, and then to look at some examples (e.g. mux-throttled.sh)
Configuration file
The full configuration can also be specified in a configuration file.
The example configuration file that is included in doc (example.mux) contains an example with a multiplex consisting of two services. The example file is commented, and is a good example to build your own.
To run odr-dabmux with a configuration file, run
odr-dabmux -e my_config.mux
Additional information
More information
Documentation and descriptions on CRC-DabMux can be found on http://mmbtools.crc.ca/content/view/39/65/
The last version published by CRC is version 0.3.0.4, on which the latest developments are based.
Patch to increase page size
Some glitches have been noticed on some machines. They are due to underruns in the FIFO. This patch increases the buffer sizes in the mux. wrning, this patch will also increase the delay. To apply it use, the patch command. (for CRC-DabMux <= 0.3.0.4)
--- src/dabInputFifo.cpp.org 2011-09-27 10:08:35.202323204 -0400 +++ src/dabInputFifo.cpp 2011-09-27 10:13:57.638315966 -0400 @@ -169,11 +169,12 @@ if (data->buffer != NULL) { delete data->buffer; } - if (size == 0) { - size = 1024; - } - data->buffer = new unsigned char[size * 16]; data->maxSize = size * 16; + int minSize = 2*getpagesize(); + while (data->maxSize < minSize) { + data->maxSize += size; + } + data->buffer = new unsigned char[data->maxSize]; #ifdef _WIN32 ReleaseSemaphore(data->semBuffer, 1, NULL); #else
See the manpage for more info:
- CRC-DabMux man page
- or, of course, man odr-dabmux