Coder Social home page Coder Social logo

nraecher / dab_plus_streamer Goto Github PK

View Code? Open in Web Editor NEW
3.0 2.0 1.0 16.62 MB

Streaming Server for DAB+ Radio

License: Other

CMake 0.33% C++ 23.06% C 66.85% Makefile 0.42% Assembly 8.70% Shell 0.01% Roff 0.05% HTML 0.06% JavaScript 0.42% Python 0.10%

dab_plus_streamer's Introduction

DAB Plus Streamer

This repository contains the implementation of an SDR DAB/DAB+ streaming server based on welle.io/welle-cli (https://www.welle.io).

Table of contents

Supported Hardware

The following SDR devices are supported

SoapySDR Notes

LimeSDR

Connect the antenna to the RX1_W port and configured SoapySDR antenna option to LNAW. SoapySDRUtil --probe=driver=lime may show other possible options.

USRP

Configured SoapySDR driver arguments option to driver=uhd. Configure also antenna and clock source option. To list possible values for antenna and clock source use the command SoapySDRUtil --probe=driver=uhd.

Building

General Information

The following libraries and their development files are needed:

  • FFTW3f
  • libfaad
  • librtlsdr
  • libusb

Debian / Ubuntu Linux

This section shows how to compile DAB Plus Streamer on Debian or Ubuntu (tested with Ubuntu 22.04).

  1. Install the essential packages for building software
sudo apt install git build-essential
  1. Install the following packages
sudo apt install cmake libfaad-dev libmpg123-dev libfftw3-dev librtlsdr-dev libusb-1.0-0-dev mesa-common-dev libglu1-mesa-dev libpulse-dev libsoapysdr-dev libairspy-dev libmp3lame-dev
  1. Clone DAB Plus Streamer
git clone https://github.com/nRaecheR/dab_plus_streamer
  1. Create a build directory inside the repository and change into it
cd dab_plus_streamer
mkdir build
cd build
  1. Run CMake. To enable support for RTL-SDR add the flag -DRTLSDR=1 (requires librtlsdr) and for SoapySDR add -DSOAPYSDR=1 (requires SoapySDR compiled with support for each desired hardware, e.g. UHD for Ettus USRP, LimeSDR, Airspy or HackRF).
cmake ..

or to enable support for both RTL-SDR and Soapy-SDR:

cmake .. -DRTLSDR=1 -DSOAPYSDR=1

If you wish to use KISS FFT instead of FFTW (e.g. to compare performance), use -DKISS_FFT=ON.

  1. Run make (or use the created project file depending on the selected generator)
make
  1. Install it (as super-user)
make install

Usage

Receive using RTLSDR, and tune to programme:

dab_plus_streamer -c channel -p programme

Use -D to dump FIC and all programmes to files:

dab_plus_streamer -c channel -D 

Use -w to enable webserver, decode a programme on demand:

dab_plus_streamer -c channel -w port -U URL

Use -Dw to enable webserver, decode all programmes:

dab_plus_streamer -c channel -Dw port -U URL

Example: dab_plus_streamer -c 12A -w 7979 -U http://localhost:7979 enables the webserver on channel 12A, please then go to http://localhost:7979/ where you can observe all necessary details for every service ID in the ensemble, see the slideshows, stream the audio by downloading a M3U playlist and start an external application, check spectrum, constellation, TII information and CIR peak diagramme.

Backend options

-u disable coarse corrector, for receivers who have a low frequency offset.

Driver options

By default, dab_plus_streamer tries all enabled drivers in turn and uses the first device it can successfully open.

Use -F [driver][,driver_args] to select a specific driver and optionally pass arguments to the driver. This allows to select the rtl_tcp driver (which is not autodetected) and pass the hostname or IP address and port of the rtl_tcp server to it:

dab_plus_streamer -c 10B -p GRRIF -F rtl_tcp,192.168.12.34:1234
dab_plus_streamer -c 10B -P GRRIF -F rtl_tcp,my.rtl-tcp.local:9876

The rtl_sdr driver allows the selection of the RTL-SDR USB device by specifying a serial number:

dab_plus_streamer -c 10B -p GRRIF -F rtl_sdr,12345

where 12345 is the serial number of the USB device. This allows the selection of a specific USB in the case multiple devices are connected to the computer.

Examples:

dab_plus_streamer -c 10B -p GRRIF

Profiling

If you build with cmake and add -DPROFILING=ON, welle-io will generate a few .csv files and a graphviz .dot file that can be used to analyse and understand which parts of the backend use CPU resources. Use dot -Tpdf profiling.dot > profiling.pdf to generate a graph visualisation. Search source code for the PROFILE() macro to see where the profiling marks are placed.

dab_plus_streamer's People

Contributors

albrechtl avatar mpbraendli avatar tenzap avatar jvankatwijk avatar orryverducci avatar andimik avatar probonopd avatar fartherout avatar russel avatar waitsnake avatar viktorgino avatar muellermartin avatar beta-tester avatar zvpunry avatar mattes-bru avatar rabarar avatar nraecher avatar seife avatar basicmaster avatar herrhotzenplotz avatar meeuw avatar annejan avatar alexmyczko avatar brychlik avatar dforsi avatar gvanem avatar sheimers avatar athoik avatar karevivan avatar mitchblank avatar

Stargazers

 avatar RSAP avatar Guillaume Seznec avatar

Watchers

 avatar  avatar

Forkers

dabodr

dab_plus_streamer's Issues

wrong filename in CMakeLists

INSTALL (FILES src/server/doc/man/dab-plus-streamer.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1/)

At the end of sudo make install I get the following error:

[100%] Built target dab_plus_streamer
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/bin/dab_plus_streamer
-- Set runtime path of "/usr/local/bin/dab_plus_streamer" to ""
CMake Error at cmake_install.cmake:66 (file):
  file INSTALL cannot find
  "/home/andreas/apps/dab_plus_streamer/src/server/doc/man/dab-plus-streamer.1":
  No such file or directory.

But the file is called dab_plus_streamer.1 indeed.

Poor performance compared to welle-cli

I have both tools on my Laptop: welle-cli and dab_plus_streamer.

Although welle-cli is working without any problems using the following command

./welle-cli -c 6A -Dw 7979 -F rtl_tcp

Bildschirmfoto von 2022-03-14 20-14-44

dab_plus_streamer is not working properly using the same connection and

./dab_plus_streamer -c 6A -Dw 7979 -F rtl_tcp

Bildschirmfoto von 2022-03-14 20-16-35

Any chance to contribute to (well known) welle-cli instead of maintain a (nearly unknown) fork?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.