diff options
authorMatthias P. Braendli <matthias.braendli@mpb.li>2014-05-02 15:31:11 +0200
committerMatthias P. Braendli <matthias.braendli@mpb.li>2014-05-02 15:31:11 +0200
commit1fe1be7de91b011e24be0f773f7003adc54078d9 (patch)
parentbab05a6977a4f07971355f43307b1450a7272a0e (diff)
Introduction and Origins
-rw-r--r--figures/crc-mmbtools.pngbin0 -> 9934 bytes
8 files changed, 109 insertions, 15 deletions
diff --git a/.gitignore b/.gitignore
index 6442a47..b12513a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,4 +4,7 @@
diff --git a/Makefile b/Makefile
index 36310c0..7ac8895 100644
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,12 @@
latexfile = mmbtools
+includes = introduction.tex \
+ interfaces.tex \
+ scenarios.tex \
+ appendix.tex
all: $(latexfile).pdf
-$(latexfile).pdf : $(latexfile).tex vc.tex
+$(latexfile).pdf : $(latexfile).tex vc.tex $(includes)
while (pdflatex $(latexfile) ; \
grep -q "Rerun to get cross" $(latexfile).log ) do true ; \
diff --git a/appendix.tex b/appendix.tex
index e366e7f..fd2169e 100644
--- a/appendix.tex
+++ b/appendix.tex
@@ -1,14 +1,14 @@
-\section{CRC-DABMUX ETI file formats}
+\section{ODR-DabMux ETI file formats}
-CRC-DABMUX supports three output formats for the ETI stream, that have been described on the mmbTools forum
+ODR-DabMux supports three output formats for the ETI stream, that have been described on the mmbTools forum
The three formats are called \emph{framed}, \emph{streamed} and \emph{raw}.
The \emph{framed} format is used for saving a finite ETI stream into a file. Each frame does not contain any padding, and the
format can be described as follows:
uint32_t nbFrames
// for each frame
uint16_t frameSize
@@ -17,7 +17,7 @@ uint32_t nbFrames
When streaming data, in which case the number of frames is not known in advance, the \emph{streamed} format can be used.
This format is identical to the first one except for the missing \texttt{nbFrames}.
// for each frame
uint16_t frameSize
uint8_t data[frameSize]
@@ -25,7 +25,7 @@ This format is identical to the first one except for the missing \texttt{nbFrame
The \emph{raw} format corresponds to ETI(NI), where each frame has a constant size of 6144 Bytes. The padding in this
case is necessary.
// for each frame
uint8_t data[6144]
diff --git a/figures/crc-mmbtools.png b/figures/crc-mmbtools.png
new file mode 100644
index 0000000..15f2852
--- /dev/null
+++ b/figures/crc-mmbtools.png
Binary files differ
diff --git a/interfaces.tex b/interfaces.tex
new file mode 100644
index 0000000..80fbd87
--- /dev/null
+++ b/interfaces.tex
@@ -0,0 +1,4 @@
+\section{Interfacing the Tools}
+\subsection{Files and Pipes}
+\subsection{Over the Network}
+\subsubsection{Authentication Support}
diff --git a/introduction.tex b/introduction.tex
index 216bb96..8db20cd 100644
--- a/introduction.tex
+++ b/introduction.tex
@@ -1,7 +1,12 @@
+This is the official documentation for the \mmbtools. These tools can be used to
+experiment, learn and setup a DAB and \dabplus transmitter.
The different programs that are part of the \mmbtools each have their own
documentation regarding command-line options and configuration settings, and the
-opendigitalradio.org wiki contains many explanations and pointers, but there is
+opendigitalradio.org wiki\footnoteurl{http://opendigitalradio.org}
+contains many explanations and pointers, but there is
no single source of documentation available for the whole tool-set.
This document aims to solve this, by first outlining general concepts,
@@ -9,6 +14,64 @@ presenting different usage scenarios and detailing a complete transmission
With this document in hand, you should be able to understand all elements
-composing a \mmbtools transmission chain.
+composing a \mmbtools transmission chain, and how to set one up.
+\section{Presentation of the Tools}
+In 2002, Communications Research Centre Canada\footnoteurl{http://crc.ca}
+started developing a DAB multiplexer. This effort evolved through the years, and
+was published later\sidenote{when?} as \mbox{CRC-DabMux} under the GPL
+open-source licence.
+CRC also developed a DAB modulator, called \mbox{CRC-DABMOD}, which could create
+baseband I/Q samples from an ETI file. This I/Q data could then be set to
+a hardware device using another tool. For the Ettus USRPs, a ``wave player''
+script was necessary to interface to GNURadio. Only DAB Transmission Mode 2 was
+supported. \mbox{CRC-DABMOD} was also released under the GPL\sidenote{when?}.
+As encoders, toolame could be used for DAB, and CRC developed a closed-source
+\mbox{CRC-DABPLUS} \dabplus encoder.
+These three CRC-~tools, and some additional services available on the now
+unreachable website\footnote{There are some snapshots of the website available
+ on \url{http://archive.org}.} \url{http://mmbtools.crc.ca} were
+part of the \mbox{CRC-mmbTools}. These tools made it possible to set up the
+first DAB transmission experiments.
+In 2012, these tools received experimental support for single-frequency
+networks, a functionality that has been developed by Matthias P. Braendli during
+his Master's thesis\footnote{The corresponding report is available at
+ \url{http://mpb.li/report.pdf}}.
+Because SFNs only make sense in TM 1, CRC subsequently released a patch to
+\mbox{CRC-DABMOD} that enabled all four transmission modes.
+At that point, involvement from CRC started to decline. The SFN patch was
+finally never included in the \mbox{CRC-mmbTools}, and as time passed by, the
+de-facto fork on \url{http://mpb.li} was receiving more and more features.
+Having two different programs with the same name made things complicated, and
+the tools were officially forked with the approval of CRC in Feb 2014, and given
+the new name \mbox{ODR-mmbTools}. They are now developed by the Opendigitalradio
+In April 2014, the official \mbox{CRC-mmbTools} website went offline, and it has
+become very difficult, if not impossible to acquire licences for the
+\mbox{CRC-DABPLUS} encoder. Luckily there is an open-source replacement
+available, which was part of Google's Android sources. This encoder has been
+extended with the necessary \dabplus{}-specific requirements (960-transform,
+error correction, framing, etc.), and now exists under the name
+\subsection{Included Tools}
+The \mmbtools contain the tools \mbox{ODR-DabMux}, \mbox{ODR-DabMod},
+\mbox{toolame-dab}, \mbox{fdk-aac-dabplus}, and other scripts, bits and pieces
+that are useful for the setup of a transmission chain.
% vim: spl=en spell tw=80 et
diff --git a/mmbtools.tex b/mmbtools.tex
index bb0f53e..37c7e6b 100644
--- a/mmbtools.tex
+++ b/mmbtools.tex
@@ -42,7 +42,7 @@
-\fancyfoot[L]{Base revision~\GITAbrHash, \GITAuthorDate, \GITAuthorName.}
+\fancyfoot[L]{\tiny{rev~\GITAbrHash, \GITAuthorDate, \GITAuthorName.}}
@@ -60,12 +60,13 @@
\hypersetup{colorlinks, citecolor=black, filecolor=black, linkcolor=black, urlcolor=black}
\newcommand{\weblink}[2]{\href{#1}{\url{#1}: \textsc{#2}}}
% index stuff
\usepackage{tocbibind} % Index in TOC
@@ -77,8 +78,8 @@
% ---------------------------------------------------------
-\newcommand{\titleinfo}{Documentation for the ODR-mmbTools
-Open-Source Software-Defined \DABplus Tools}
+\newcommand{\titleinfo}{ODR-mmbTools \\
+Open-Source Software-Defined \dabplus Tools}
\author{Matthias P. Brändli}
\date{2 May 2014}
@@ -141,18 +142,21 @@ clock_config_t},
- \textsc{Opendigitalradio\\\href{http://opendigitalradio.org}{http://opendigitalradio.org}\\2014}
+ \textsc{Matthias P. Braendli, for Opendigitalradio\\\href{http://opendigitalradio.org}{http://opendigitalradio.org}\\2014}
- \parbox{1.2in}{\includegraphics[width=10em]{figures/dab-pour-chats.jpg}}
+ \parbox{2.2in}{\includegraphics[width=16em]{figures/dab-pour-chats.jpg}}
+ This work is licensed under a
+ \url{http://creativecommons.org/licenses/by-sa/4.0/}
+ Creative Commons Attribution-ShareAlike 4.0 International License.
@@ -187,6 +191,8 @@ clock_config_t},
diff --git a/scenarios.tex b/scenarios.tex
new file mode 100644
index 0000000..108d5a0
--- /dev/null
+++ b/scenarios.tex
@@ -0,0 +1,14 @@
+\section{Usage Scenarios}
+\subsubsection{Creation of Non-Realtime Multiplex}
+\subsubsection{Modulation of ETI for Offline Processing}
+\subsection{Interfacing Hardware Devices}
+\subsubsection{Ettus USRP}
+\subsubsection{Other Hardware}
+\subsection{Audio sources}
+\subsubsection{Using Existing Web-Streams}
+\subsubsection{Encoders at Programme Originator Studios}
+\subsection{Single-Frequency Networks}