An implementation of a DAB (digital audio broadcasting) radio using software defined radio.
For a description of what software defined radio is refer to this link.
This repository contains applications that:
- Demodulate the OFDM (orthogonal frequency division multiplexed) raw IQ signals into a digital frame
- Decode DAB digital OFDM frames for use into a radio application
For those who are interested only in parts of the implementation refer to the following directories:
Directory | Description |
---|---|
src/ofdm | OFDM demodulation code |
src/dab | DAB digital decoding core algorithms |
src/basic_radio | Combines all of the DAB core algorithms into a cohesive example app |
src/basic_scraper | Listens to basic_radio instance to save audio/slideshow/MOT data to disk |
examples/*.cpp | All our sample applications |
- Download the ZIP archive from the releases page.
- Setup rtlsdr radio drivers according to here
- Plug in your RTLSDR Blog v3 dongle
- Run
./radio_app.exe
- Go to the "Simple View" tab and select a service from the list.
- Click "Run All" to listen to the channel and receive slideshows.
- Refer to Wohnort for DAB ensembles in your region.
- Read
examples/README.md
to use other applications.
If you can't find any DAB ensembles in your area, then you can download binary files from the Releases page here. These contain raw IQ values as well as pre-demodulated OFDM digital frames. You can read in these files with the applications described in examples/README.md
- Refer to
toolchains/*/README.md
to build for your platform. - The continuous integration (CI) scripts are in
.github/workflows
if you want to replicate the build on your system. - SIMD instructions are used for x86 and ARM cpus to speed up math heavy code paths. Modify
CMakePresets.json
to use correct compiler flags.
- The welle.io open source radio has an excellent implementation of DAB radio. Their repository can be found here. Youtube Link.
- There is a large community of rtl-sdr projects which can be found at rtl-sdr.com. This link points to a webpage showcasing several open source community projects that aim to decode DAB signals.
- ETSI the non-for-profit standardisation organisation for making all of the standards free to access and view. Without their detailed documentation and specifications it would not be possible to build a rtl-sdr DAB radio.
- Phil Karn for his Reed Solomon and Viterbi decoding algorithms which can be found here
- tcbrindle for his C++ single header template library implementation of std::span which can be found here
- For DAB+ determine how to perform error correction on the firecode CRC16 in the AAC super frame.
- Add TII (transmitter identificaton information) decoding