https://github.com/williamyang98/dab-radio
Demodulator and decoder for DAB signals captured using RTL-SDR
https://github.com/williamyang98/dab-radio
dab dab-broadcasting radio rtl-sdr rtlsdr
Last synced: about 1 year ago
JSON representation
Demodulator and decoder for DAB signals captured using RTL-SDR
- Host: GitHub
- URL: https://github.com/williamyang98/dab-radio
- Owner: williamyang98
- License: mit
- Created: 2022-10-02T15:33:39.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2025-02-26T14:41:14.000Z (over 1 year ago)
- Last Synced: 2025-04-01T19:21:23.413Z (about 1 year ago)
- Topics: dab, dab-broadcasting, radio, rtl-sdr, rtlsdr
- Language: C++
- Homepage:
- Size: 10.8 MB
- Stars: 31
- Watchers: 6
- Forks: 6
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Introduction
[](https://github.com/williamyang98/DAB-Radio/actions/workflows/x86-windows.yml)
[](https://github.com/williamyang98/DAB-Radio/actions/workflows/x86-linux.yml)
[](https://github.com/williamyang98/DAB-Radio/actions/workflows/x86-macos.yml)
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](https://www.rtl-sdr.com/about-rtl-sdr/).
[](http://youtu.be/4bb0FQFrgE8 "Decoding DAB radio using SDR")
This repository contains applications that:
1. Demodulate the OFDM (orthogonal frequency division multiplexed) raw IQ signals into a digital frame
2. 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 |
# Gallery


# Download and run (Windows)
1. Download the ZIP archive from the releases page.
2. Setup rtlsdr radio drivers according to [here](https://www.rtl-sdr.com/rtl-sdr-quick-start-guide/)
3. Plug in your RTLSDR Blog v3 dongle
4. Run ```./radio_app.exe```
5. Go to the "Simple View" tab and select a service from the list.
6. Click "Run All" to listen to the channel and receive slideshows.
- Refer to [Wohnort](http://www.wohnort.org/dab/) 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](https://github.com/williamyang98/DAB-Radio/releases/tag/raw-iq-data). 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```
# Compiling programs from source
- Clone the repository: ```git clone https://github.com/williamyang98/DAB-Radio.git --recurse-submodules```.
- Refer to ```toolchains/{platform}/README.md``` to build for your specific platform.
- The continuous integration (CI) scripts are in ```.github/workflows``` if you want to replicate the build on your system.
- **NOTE**: To avoid having to manually setup the GUI when compiling from source you can download it from [imgui_radio.ini](https://github.com/williamyang98/DAB-Radio/releases/download/v1.0/imgui_radio.ini) and paste it into the repository's root directory.
# Similar apps
- The welle.io open source radio has an excellent implementation of DAB radio. Their repository can be found [here](https://github.com/albrechtl/welle.io). [Youtube Link](https://www.youtube.com/watch?v=IJcgdmud-AI).
- There is a large community of rtl-sdr projects which can be found at [rtl-sdr.com](https://www.rtl-sdr.com/tag/dab/). This link points to a webpage showcasing several open source community projects that aim to decode DAB signals.
# Important sources
- [ETSI](https://www.etsi.org/standards) 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](https://github.com/ka9q) for his Reed Solomon and Viterbi decoding algorithms which can be found [here](https://github.com/ka9q/libfec)
- [tcbrindle](https://github.com/tcbrindle) for his C++ single header template library implementation of std::span which can be found [here](https://github.com/tcbrindle/span)
# TODO
- For DAB+ determine how to perform error correction on the firecode CRC16 in the AAC super frame.
- Add TII (transmitter identificaton information) decoding