SkillAgentSearch skills...

AbracaDABra

Abraca DAB radio: DAB/DAB+ Software Defined Radio (SDR)

Install / Use

/learn @KejPi/AbracaDABra

README

AbracaDABra

Abraca DAB radio is a DAB and DAB+ Software Defined Radio (SDR) application. It works with cheap RTL-SDR (RTL2832U) USB sticks, but also with Airspy devices, SDRplay devices and with devices supported by <a href="https://github.com/pothosware/SoapySDR/wiki">SoapySDR</a>.

The application is based on the Qt6 cross-platform software development framework and can run on any platform supported by Qt6 (Qt version 6.7 or higher is required). Prebuilt binaries are released for Windows, macOS (both Intel and Apple Silicon), Android (API 30, ARM64) and Linux x86-64 and AARCH64 (AppImage). The AARCH64 AppImage is built to run on Raspberry Pi 4/5 with a 64 bit OS. Arch Linux users can install AbracaDABra from the <a href="https://aur.archlinux.org/packages/abracadabra">AUR</a>.

<p align="center" width="100%"> <img width="1023" height="740" alt="AbracaDABra" src="https://github.com/user-attachments/assets/42682583-54a5-4fe4-899c-27c2667a3100" /> </p>

Features

  • The following input devices are supported:
  • Band scan with automatic service list creation
  • Service list management
  • DAB (MP2) and DAB+ (AAC) audio decoding
  • Announcements (all types supported, including alarm tests)
  • Dynamic label (DL) and Dynamic label plus (DL+)
  • MOT slideshow (SLS) and categorized slideshow (CatSLS) from PAD or from a secondary data service
  • SPI (Service and Programme information)
  • RadioDNS
  • TII decoding and continuous scanning (DX)
  • Reconfiguration of audio and data services
  • Dynamic programme type (PTy)
  • Ensemble structure view with all technical details, upload to FMLIST
  • Raw file dumping (optionally with XML header)
  • Audio recording
  • DAB input signal spectrum visualization
  • RF level estimation on supported devices
  • Only band III and DAB mode 1 are supported
  • Modern responsive user interface
  • Multi-platform (Windows, macOS, Linux and Android)
  • Dark theme is supported on all platforms
  • Localization to German, Czech and Polish (not complete)

The AbracaDABra desktop application is available for free and will remain so in the future. However, if you like it, you can buy me a beer 🍺

Application interface

Application provides an easy-to-use user interface that is focused on radio listening. Just run automatic band scan to search for available services, select your favorite service from the service list and enjoy the music with slideshow and DL(+). Services can be easily added to the favorites list by clicking "star" icon. Most of the elements in UI have a tool tip with more information.

<p align="center" width="100%"> <img width="787" height="740" alt="AbracaDABra" src="https://github.com/user-attachments/assets/ac18592b-4cdb-4a20-ad5d-0a6dca38f9d9" /> </p>

There are also many features for advanced users, like the structure of services in an ensemble tree as well as additional details about the currently tuned service. Additionally, application supports dedicated DX functionality like TII decoding and monitoring, continuous scanning of the band, data dumping, logging and many more.

Input devices

AbracaDABra supports multiple input devices, some of them are optional. Device specific settings are described in this section.

RTL-SDR

RTL-SDR is the default input device. It is highly recommended to use the RTL-SDR driver by old-dab when compiling the application from source code. Prebuilt binaries use this driver.

It is possible to select a particular device when more than one device is connected. You can choose the device to use in settings (see screenshot below). When the option "Use any available RTL-SDR device if selected one fails" is enabled, the application tries to connect to the first functional RTL-SDR device if the selected device is not available, does not work or is already in use. Please note that RTL-SDR devices typically have the serial number 00000001, but you can modify it using the rtl_eeprom tool to be able to distinguish your devices. Follow this video guide to do it.

RTL-SDR devices support 3 to 4 gain control modes, depending on the driver the application is compiled with:

  • Software (default) - gain is controlled by the application
  • Driver - available only for the RTL-SDR driver by old-dab. Gain is controlled by the driver.
  • Hardware - uses the internal RTL-SDR HW gain control. RF level estimation is not available in this mode
  • Manual - manual control of the gain

Option 'RF level estimation' is available only for the RTL-SDR driver by old-dab. It disables estimation of RF level that causes problems on some cheap Android devices.

Note: The SW AGC level threshold value can be adjusted to control the maximum level threshold for automatic gain control. This control is more intended for debugging, the default value is well tuned so it does typically not need to be altered. Please do not report any issues if you have changed the value.

<p align="center" width="100%"> <img width="752" height="856" alt="RTL-SDR Settings" src="https://github.com/user-attachments/assets/12b9a7de-431f-4262-bfd4-ac81f51ebd73" /> </p>

RTL-TCP

RTL-TCP is a simple server that provides an IQ signal stream. The application can connect to a server running on localhost (127.0.0.1) as well as on a remote server. The server implementation by old-dab also supports the so-called control port. Connection to this port is optional, but when it is connected, the application can estimate the RF level in dBm.

RTL-TCP devices support 3 gain control modes:

  • Software (default) - gain is controlled by the application
  • Hardware - internal HW gain control by the RTL-SDR device the server is connected to. RF level estimation is not available in this mode.
  • Manual - manual control of the gain

Note: The SW AGC level threshold value can be adjusted to control the maximum level threshold for automatic gain control. This control is more intended for debugging, the default value is well tuned so it does typically not need to be altered. Please do not report any issues if you have changed the value.

<p align="center" width="100%"> <img width="752" height="746" alt="RTL_TCP Settings" src="https://github.com/user-attachments/assets/09432a8e-7d6e-4f5a-be66-0441ed85346d" /> </p>

Airspy

Airspy is an optional device when you build the application from the source code. It is available in prebuilt binaries. Only the Airspy Mini and R2 are supported, other devices do not have sufficient bandwidth for DAB reception. If you have problems with Airspy devices, please check the firmware version. A firmware update may be required for correct functionality.

It is possible to select a particular device when more than one device is connected. You can choose the device to use in settings (see screenshot below). When the option "Use any available Airspy device if selected one fails" is enabled, the application tries to connect to the first functional Airspy device if the selected device is not available, does not work or is already in use.

Airspy devices support 4 gain control modes:

  • Software (default) - gain is controlled by the application. So-called sensitivity gain is used.
  • Hybrid - the application controls IF gain but the other two gains are controlled by driver.
  • Sensitivity - manual control of sensitivity gain. Physical gain controls in the device are set by the driver according to the sensitivity gain index.
  • Manual - full manual control of all the available gains. It is possible to enable AGC for specific gain controls in this mode.

Option 'Prefer 4096kHz' is to switch between input stream running on 4096kHz (on, default) or 3072kHz (off). While 4096kHz rate needs more USB bandwidth, 3072kHz rate on the other hand uses more CPU for processing. This option was introduced mostly for Android, try to change these settings if you face problems with signal drops using Airspy device. Option can be changed when Airspy device is not connected.

Note: RF level estimation is not available for Airspy devices.

<p align="center" width="100%"> <img width="752" height="786" alt="Airspy Settings" src="https://github.com/user-attachments/assets/9bc2c4b1-91e2-4ec8-ab7a-3997ad472cee" /> </p>

SDRplay

SDRplay is an optional device. It is based on SoapySDR and requires the SoapySDR SDRplay3 plugin to be in located in SOAPY_SDR_PLUGIN_PATH. Prebuilt binaries are distributed with the necessary libraries and configured to find the required plugin in the installation location. Nevertheless, in order to make SDRplay devices functional you also need to install SDRplay API 3.15, with the background service that is required to access SDRplay devices.

It is possible to select a particular device when more than one device is connected. You can choose the device to use in settings (see screenshot below). When the option "Use any available SDRplay device if selected one fails" is enabled, the application tries to connect to the first functional SDRplay device if the selected device is not available, does not work or is already in use.

SDRplay devices have 2 independent gain controls, the application calls them RF and IF. RF gain controls LNA gain reduction and IF gain controls IF gain reduction. You can find more details about SDRplay devices in the documentation avai

View on GitHub
GitHub Stars139
CategoryDevelopment
Updated1d ago
Forks19

Languages

C++

Security Score

100/100

Audited on Apr 7, 2026

No findings