First licensed open dab transmission
For the first time, the open source encoder, multiplexer, modulator designed by CRC (MMBTools) has been used for a licensed local transmission during Label Suisse festival for a performance done together with MXLabs.
Swiss Administration has granted a 8 channels DAB multiplex to be used on air on channel 10A during the festival between 17th to 19th September 2010 in Lausanne.
The installation consisted of a single PC running Linux and with a 8 channels soundcard and USRP doing the DAB encoding, multiplexing and modulation. This transmission transmitted in DAB the audio of a mosaic of 8 music bands that were video projected for the performance. DAB Radios tuned to all these channels were hanging from the ceiling and people were also able to receive the signal in the station and surroundings.
It is already a long time that people are experimenting DAB transmission using CRC MMBTools and Open Software Defined Radio but it is is the first time it is used for a licensed transmission. This milestone demonstrate that digital radio has become democratized not only for experimentation but also for local or ultra-local transmission.
The installation consist of a recent AMD PC and a USRP Generic Software Radio Platform for the transmission. The software tools ar CRC MMBtools with custom linux scripts and python code.
For more information: Mathias Coinchon (broadcast at opendigitalradio.org) or Stanislas Roehrich (http://www.maxxima.org).
- dualcore AMD PC running (ubuntu) linux
- M audio delta 1010 soundcard
- USRP1 Universal Software Radio Peripheral with WBX RF daugtherboard (50MHz-2.2GHz)
- Mini-circuits bandpass filter
- Linux Ubuntu 10.04
- Gnuradio 3.3
- Jack open Audio connection kit
- arecord (from ALSA utils)
- Toolame open MPEG Layer II encoder
- CRC MMBtools open source DAB multiplexer: CRC-DabMux
- Non blocking buffer: bfr
- CRC MMBtools open source DAM modulator: CRC-DabMod
- Baseband USRP1 VHF player
2 scripts were used in parallel, one for the multiplexer/modulator and the other for getting the sound stream and encode them
Script for stream and encode:
#!/bin/sh arecord -t raw -f S16_LE -c 2 -r 48000 -D jackplug1 |toolame -s 48 -D 4 -b 128 /dev/stdin ./1.ff & arecord -t raw -f S16_LE -c 2 -r 48000 -D jackplug2 |toolame -s 48 -D 4 -b 128 /dev/stdin ./2.ff & arecord -t raw -f S16_LE -c 2 -r 48000 -D jackplug3 |toolame -s 48 -D 4 -b 128 /dev/stdin ./3.ff & arecord -t raw -f S16_LE -c 2 -r 48000 -D jackplug4 |toolame -s 48 -D 4 -b 128 /dev/stdin ./4.ff & arecord -t raw -f S16_LE -c 2 -r 48000 -D jackplug5 |toolame -s 48 -D 4 -b 128 /dev/stdin ./5.ff & arecord -t raw -f S16_LE -c 2 -r 48000 -D jackplug6 |toolame -s 48 -D 4 -b 128 /dev/stdin ./6.ff & arecord -t raw -f S16_LE -c 2 -r 48000 -D jackplug7 |toolame -s 48 -D 4 -b 128 /dev/stdin ./7.ff & arecord -t raw -f S16_LE -c 2 -r 48000 -D jackplug8 |toolame -s 48 -D 4 -b 128 /dev/stdin ./8.ff &
- .ff are FIFO files (names pipes) that were created using "mkfifo" command
- "jackplug" are mapping of jack source to ALSA, defined in .asoundrc file in home directory
Script for multiplexing, encoding, playout:
#!/bin/sh CRC-DabMux -L "LabelSuisse" -A 1.ff -b 128 -i 1 -S -L "Label1" -C \ -A 2.ff -b 128 -i 2 -S -L "Label2" -C \ -A 3.ff -b 128 -i 3 -S -L "Label3" -C \ -A 4.ff -b 128 -i 4 -S -L "Label4" -C \ -A 5.ff -b 128 -i 5 -S -L "Label5" -C \ -A 6.ff -b 128 -i 6 -S -L "Label6" -C \ -A 7.ff -b 128 -i 7 -S -L "Label7" -C \ -A 8.ff -b 128 -i 8 -S -L "Label8" -C \ -O fifo:///dev/stdout |\ CRC-DabMod -f -g1 -r3200000 |\ bfr -p -b 32m -m 8m |\ coinwap_full3.py
(bfr is the buffer, coinwap_full3.py is the baseband player)
Event Pictures and video
Video of the performance:
PC screen capture from the setup:
- MMBtools (for the mux and the mod)
- Dwap Player Band3 (Opendigital radio) to send sample to the USRP
- JackAudio and JackPlug / Arecord (to retrieve the 8 audio inputs from the Delta 1010 audio card and feed the PCM data to TooLame)
- TooLame (for DAB audio encoding)
- A few Buffer to avoid audio glitch
Near full CPU load for the machine (on a dual core 3 GHz)
We could demonstrate that a local DAB multiplex can be made at very little cost using open source technologies.
However we discovered problems that need to be solved. The USRP was regularly freezing requiring the scripts to be relaunched. We have not been able to reproduce this problem in the lab but the origin is certainly a power supply problem in the presence of a dirty AC power distribution (as it is commonly found in festivals). We suspect also high heat in the box to be the cause of these unstabilities. For this reason, we will change the USRP power supply and improve the cooling of USRP (with heatsinks and better fan).
- Improve USRP power supply
- Improve USRP cooling
- Integrate jack input for toolame