Giter Site home page Giter Site logo

tomneda / dabstar Goto Github PK

View Code? Open in Web Editor NEW
13.0 2.0 1.0 10.76 MB

A DAB receiver with a technical focus forked from Qt-DAB

License: GNU General Public License v2.0

CMake 1.20% C++ 62.67% C 35.31% HTML 0.70% QMake 0.03% Shell 0.10%
airspy dab dab-decoder dabplus hackrf hackrf-one radio receiver rtl-sdr sdr

dabstar's Introduction

DABstar


screenshot.png (Picture from V2.2.0)

Table of Content

Introduction

Latest versions see Release Page.

Beside many small things under the hood I did major changes in the Look & Feel and mainly in the service selection. So I decide to make a major step to version 2 in the version numbering.

DABstar was originally forked from Jan van Katwijk's great work of Qt-DAB from commit (tree) from 2023-05-30. Some fixes afterwards to Qt-DAB are included.

As there are huge changes and additions (but also reductions) made from my side and there will be bigger changes in the future, I decided to give it the new name DABstar.

I saw that with starting of Qt-DAB 6.x, it uses also new code parts and ideas from here. I am very appreciated about this 😃. This is of course very acknowledged that my work can give something back.

I will try to maintain always a working state on main branch. Only when I change the MAJOR (1st digit) and/or MINOR (2nd digit) part of the version number (see https://semver.org/ for nomenclature) I will describe the changes here. If I only raise the PATCH version number (3rd digit) when I provide (urgent) intermediate patches.

For at least each new version change in the MAJOR and/or MINOR part I will provide a version tag for easy referencing. Please use the tags page on Github: https://github.com/tomneda/DABstar/tags.

Meanwhile, I provide AppImages but still no Windows build. See Link.

As this README got meanwhile quite long, I cut off the description regarding versions until 1.7.1, but you can still read it here: README.md of V1.7.1

Version 2.3.0 and above

Please look to the Release Page for a more detailed description of the changes.

What is new in 2.2.0

  • A bigger fix replaying files regarding my new service list. There is still the small issue that the channel name does not (necessarily) fit to the file content.
  • There is only one file-reading dialog now. The file type selection happens in the file dialog field. It is selectable whether the QT or native file dialog should be shown.
  • Improve error checking for file handling.
  • Refine the setting management. This causes that the setting file (in ~/.config/dabstar/) got a new filename. So, the settings has to be put-in new.
    Same happens to the service-list database file, so possibly already made favorites got lost. Sorry for that circumstance.
  • Small UI refinements.
  • Many small refinements under the hood.

What is new in 2.1.0

  • Some minor fixes and refinings made.
  • Add status information to the main Widget, see below the MOT picture:
    • Show the ACC decoder input bit rate.
    • Show whether Stereo mode is active.
    • Show whether EPG (Electronic Program Guide) data are available
    • Show whether SBR (Spectrum Band Replication) mode is active
    • Show whether PS (Parameter Stereo) mode is active
    • Show whether an announcement is currently made.

(move over the status elements like SBR or PS to get tooltip information)

What is new in 2.0.0

Buttons are icons now

I replaced all buttons on the main window to quadratic ones with icons on it. Some have animations or change colors or the icon itself after clicking. See the tooltips for further information what each button does.

Service List

The major new thing is the complete new written service selector on the left side of the main window:

The list is stored as a SQlite database in the folder ~/.config/dabstar. The list will be filled when selecting a new channel (with eg. the combobox on the right bottom corner in the picture) or click the "Scan" button to scan all typical DAB channels. While the scan is running the button is animated.

The current selected service is shown with an orange background. With the brown colored entries, you will find other services from the same channel (here 11C). When you click on such services the switching time is quite short.

The services with a gray background are from another channel. Selecting this will take a bit longer time (about 3 seconds) till audio comes up. Note: Not each service entry has audio, especially that with SPI and EPG in its name.

Favorites

You can select a current running service as a favorite by clicking . Click the same button again to deselect the favorite state. On the left side of the service list you will see an active favorite state. The favorites are stored separately with the service list, so a re-scan would not delete them.

Sorting

When you click on the header description you can change the sorting of the columns. Selecting the "Fav" column behaves that way that the favorites always located on the top but the service column will be sorted (ascending oder descending).

Channel Buttons

With the up/down-buttons you can step one service up or down in the list (with wrap-around). Change the sorting of the list if you only want mainly to step within the favorites or within the same channel.

Target Button

If you "lose" the orange current service selection you can click this button . The current service will be shown in the list center (if possible).

Some help for scanning

For a successful reception a good leveling of the device is necessary. Click to open the device widget (it differs for the different devices). The best feedback regarding signal quality can be seen on the Spectrum Scope with . There, many explanations would be necessary for the details. Look at the tool tips for further help there.

For a faster signal check you would see the yellow bar

below the picture on the main window. This bar must reach 100% if the signal is good enough.

Also, the clock on the top of the service list can be used as indicator. Its time is only shown (and the background light up) if the DAB time information can be received.

How to apply TII info

That the location, distance and direction to the transmitter can be shown, do following:

  1. Provide your home coordinates with button Coordinates on the "Configuraton and Control" windows.
  2. Copy libtii-lib.so from project sub folder /tii-library to /usr/local/lib/ (you will need sudo rights).
  3. Click one time Load Table on the "Configuraton and Control" window.
  4. If 3) should fail you can unzip the content of /tii-library/tiiFile.zip to your home folder. Restart DABstar. Here you will maybe not have the newest in 3) downloaded version of the data base.

Installing on Linux

This is what I needed to install DABstar on a fresh Ubuntu 20.04 / 22.04:

sudo apt-get update
sudo apt-get install git
sudo apt-get install cmake
sudo apt-get install build-essential
sudo apt-get install g++
sudo apt-get install libsndfile1-dev
sudo apt-get install libfftw3-dev
sudo apt-get install portaudio19-dev
sudo apt-get install zlib1g-dev
sudo apt-get install libsamplerate0-dev
sudo apt-get install libfaad-dev
sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libqwt-qt5-dev

or same in fewer lines:

sudo apt-get update
sudo apt-get install git cmake build-essential g++ libsndfile1-dev libfftw3-dev portaudio19-dev zlib1g-dev libsamplerate0-dev libfaad-dev libusb-1.0-0-dev

For Qt5 try one of following (Ubuntu 22.04 needs the second one):

sudo apt-get install qt5-default
sudo apt-get install qtbase5-dev

For QWT try this (whis will likely install Qwt 6.1.4):

sudo apt-get install libqwt-qt5-dev

If you have troubles with the last QWT package libqwt-qt5-dev try to build QWT for yourself. See Link.

Then for building DABstar do:

git clone https://github.com/tomneda/DABstar.git
cd DABstar
mkdir build
cd build
cmake .. -DAIRSPY=ON -DSDRPLAY_V2=ON -DSDRPLAY_V3=ON -DHACKRF=ON -DLIMESDR=ON -DRTL_TCP=ON -DPLUTO=ON -DUHD=ON -DRTLSDR_LINUX=ON -DUSE_HBF=OFF -DDATA_STREAMER=OFF -DVITERBI_SSE=ON -DVITERBI_NEON=OFF -DFDK_AAC=OFF
make  

Reduce resp. adapt the cmake command line for the devices/features you need.

E.G.: If you have an RTL-SDR stick and work on a desktop PC (I have only tested this on an Intel-PC), this should be the minimum recommendation:

cmake .. -DRTLSDR_LINUX=ON -DVITERBI_SSE=ON

To speed up compilation you can provide -j<n> as argument with <n> number of threads after the make command. E.G. make -j4. Do not choose a too high number (or at my side only providing a -j) the system can hang due to running out memory and needed swapping!

Finally, in the build folder you can find the program file which you can start with

./dabstar

You could try to install the software within your system with

sudo make install
sudo ldconfig

To uninstall DABstar again, do this:

sudo make uninstall

USRP UHD

Best worked for me was building UHD from the repository of Ettus Research.

sudo add-apt-repository ppa:ettusresearch/uhd
sudo apt-get update
sudo apt-get install libuhd-dev uhd-host

QWT installation / building

Original description

https://qwt.sourceforge.io/qwtinstall.html

QWT short build description

  1. Download QWT 6.2.0: https://sourceforge.net/projects/qwt/files/qwt/6.2.0/qwt-6.2.0.zip/download
  2. Unzip downloaded file and go into unzipped folder
  3. comment out line "QWT_CONFIG += QwtSvg" with a "#" in file qwtconfig.pri if you have problems finding a SVG QT header file
  4. qmake qwt.pro
  5. make (you may provide the argument -jn for n number of used threads)
  6. sudo make install

Licences

Rights of Qt-DAB, Qt, Qwt, FFTW, portaudio, libfaad, libsamplerate and libsndfile gratefully acknowledged.

Rights of developers of RTLSDR library, SDRplay libraries, AIRspy library and others gratefully acknowledged.

Rights of other contributors gratefully acknowledged.

As I use some icons, I get them from FlatIcon. The work of the icon authors is very acknowledged:

dabstar's People

Contributors

tomneda avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

jafo2128

dabstar's Issues

Building on Raspberry fails at 98%

Have compiled hackrf and qwt on my own, but building DABstar stops at 98%:

[ 98%] Building CXX object CMakeFiles/dabstar.dir/src/output/audiosink.cpp.o
In file included from /home/pi/apps/DABstar/src/support/viterbi-spiral/sse2neon.h:65,
                 from /home/pi/apps/DABstar/src/support/viterbi-spiral/spiral-neon.c:28:
/home/pi/apps/DABstar/src/support/viterbi-spiral/sse2neon.h: In function ‘_mm_setzero_si128’:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:16143:1: error: inlining failed in call to always_inline ‘vreinterpretq_s64_s32’: target specific option mismatch
 vreinterpretq_s64_s32 (int32x4_t __a)
 ^~~~~~~~~~~~~~~~~~~~~
In file included from /home/pi/apps/DABstar/src/support/viterbi-spiral/spiral-neon.c:28:
/home/pi/apps/DABstar/src/support/viterbi-spiral/sse2neon.h:146:36: note: called from here
 #define vreinterpretq_m128i_s32(x) vreinterpretq_s64_s32(x)
                                    ^~~~~~~~~~~~~~~~~~~~~~~~
/home/pi/apps/DABstar/src/support/viterbi-spiral/sse2neon.h:350:12: note: in expansion of macro ‘vreinterpretq_m128i_s32’
     return vreinterpretq_m128i_s32(vdupq_n_s32(0));
            ^~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/pi/apps/DABstar/src/support/viterbi-spiral/sse2neon.h:65,
                 from /home/pi/apps/DABstar/src/support/viterbi-spiral/spiral-neon.c:28:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:6733:1: error: inlining failed in call to always_inline ‘vdupq_n_s32’: target specific option mismatch
 vdupq_n_s32 (int32_t __a)
 ^~~~~~~~~~~
In file included from /home/pi/apps/DABstar/src/support/viterbi-spiral/spiral-neon.c:28:
/home/pi/apps/DABstar/src/support/viterbi-spiral/sse2neon.h:146:36: note: called from here
 #define vreinterpretq_m128i_s32(x) vreinterpretq_s64_s32(x)
                                    ^~~~~~~~~~~~~~~~~~~~~~~~
/home/pi/apps/DABstar/src/support/viterbi-spiral/sse2neon.h:350:12: note: in expansion of macro ‘vreinterpretq_m128i_s32’
     return vreinterpretq_m128i_s32(vdupq_n_s32(0));
            ^~~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [CMakeFiles/dabstar.dir/build.make:1168: CMakeFiles/dabstar.dir/src/support/viterbi-spiral/spiral-neon.c.o] Fehler 1
make[2]: *** Es wird auf noch nicht beendete Prozesse gewartet....
make[1]: *** [CMakeFiles/Makefile2:150: CMakeFiles/dabstar.dir/all] Fehler 2
make: *** [Makefile:130: all] Fehler 2

Any ideas?

This is my cmake:

 AIRSPY                           ON                                                                                                         
 CMAKE_BUILD_TYPE                                                                                                                            
 CMAKE_INSTALL_PREFIX             /usr/local/bin                                                                                             
 CONV_IN_FILES                    ON                                                                                                         
 DATA_STREAMER                    OFF                                                                                                        
 FDK_AAC                          OFF                                                                                                        
 HACKRF                           OFF                                                                                                        
 LIMESDR                          OFF                                                                                                        
 LSB_RELEASE                      /usr/bin/lsb_release                                                                                       
 PLUTO                            OFF                                                                                                        
 PTHREADS                         /usr/lib/arm-linux-gnueabihf/libpthread.so                                                                 
 Qt5Core_DIR                      /usr/lib/arm-linux-gnueabihf/cmake/Qt5Core                                                                 
 Qt5Gui_DIR                       /usr/lib/arm-linux-gnueabihf/cmake/Qt5Gui                                                                  
 Qt5Network_DIR                   /usr/lib/arm-linux-gnueabihf/cmake/Qt5Network                                                              
 Qt5Sql_DIR                       /usr/lib/arm-linux-gnueabihf/cmake/Qt5Sql                                                                  
 Qt5Widgets_DIR                   /usr/lib/arm-linux-gnueabihf/cmake/Qt5Widgets                                                              
 Qt5Xml_DIR                       /usr/lib/arm-linux-gnueabihf/cmake/Qt5Xml                                                                  
 RTLSDR_LINUX                     ON                                                                                                         
 RTLSDR_WIN                       OFF                                                                                                        
 RTL_TCP                          ON                                                                                                         
 SDRPLAY_V2                       OFF                                                                                                        
 SDRPLAY_V3                       OFF                                                                                                        
 UHD                              OFF                                                                                                        
 USE_FFT                          FFTW3                                                                                                      
 USE_HBF                          OFF                                                                                                        
 USE_LTO                          OFF                                                                                                        
 VITERBI_NEON                     ON                                                                                                         
 VITERBI_SSE                      OFF                                                                                                        

This is my CPU:

$ lscpu
Architecture:        armv7l
Byte Order:          Little Endian
CPU(s):              4
On-line CPU(s) list: 0-3
Thread(s) per core:  1
Core(s) per socket:  4
Socket(s):           1
Vendor ID:           ARM
Model:               4
Model name:          Cortex-A53
Stepping:            r0p4
CPU max MHz:         1300,0000
CPU min MHz:         1300,0000
BogoMIPS:            38.40
Flags:               half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32

On Archlinux

Hi Thomas,
I'm a French electronic teacher and I'm very interested with DABstar.
I work on Archlinux.
I succeeded with "cmake, make and make install".
When I run dabstar the GUI opens with 2 windows but I get the following messages :

[cderory@archlinux build]$ dabstar
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: too many profiles
spectrumViewer gezet op 100 100, staat op 100 100
libtii-lib.so: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou dossier de ce type
/usr/local/lib/tii-lib.so: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou dossier de ce type
Library not loaded
init_tii_L not loaded
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: too many profiles
ALSA lib pcm_dsnoop.c:566:(snd_pcm_dsnoop_open) unable to open slave
ALSA lib pcm_dmix.c:999:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm_dmix.c:999:(snd_pcm_dmix_open) unable to open slave
Suggested size for outputbuffer = 0
stream opened
stream started
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: too many profiles
Erreur de segmentation (core dumped)

The last line "Erreur de segmentation (core dumped)" is when I close the application in the normal way.

Regards

Cyrille DERORY
Email : [email protected]

cannot build under Ubuntu 22.04 LTS

For many years, I have been building latest software packages from Jan (and contribute regularly, for example Qt-DAB) and have found your repository recently, so I tried to build DABstar under Ubuntu 22.04 LTS, but I couldn't.

I even have installed qwt 6.2.0 as mentioned in your readme.

[ 21%] Built target dabstar_autogen
[ 21%] Automatic RCC for resources.qrc
[ 22%] Building CXX object CMakeFiles/dabstar.dir/dabstar_autogen/mocs_compilation.cpp.o
In file included from /home/andreas/apps/DABstar/src/spectrum-viewer/spectrum-viewer.h:54,
                 from /home/andreas/apps/DABstar/build/dabstar_autogen/LEASYKLKX4/../../../src/main/radio.h:62,
                 from /home/andreas/apps/DABstar/build/dabstar_autogen/LEASYKLKX4/moc_radio.cpp:10,
                 from /home/andreas/apps/DABstar/build/dabstar_autogen/mocs_compilation.cpp:13:
/usr/include/qwt/qwt_plot_layout.h:84:51: warning: ‘constexpr QFlags<T>::QFlags(QFlags<T>::Zero) [with Enum = QwtPlotLayout::Option; QFlags<T>::Zero = int QFlags<QwtPlotLayout::Option>::Private::*]’ is deprecated: Use default constructor instead [-Wdeprecated-declarations]
   84 |         const QRectF &plotRect, Options options = 0x00 );
      |                                                   ^~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:1299,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qnamespace.h:43,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs.h:48,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:46,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
                 from /home/andreas/apps/DABstar/build/dabstar_autogen/2QFTGA3UNE/../../../src/backend/audio/faad-decoder.h:33,
                 from /home/andreas/apps/DABstar/build/dabstar_autogen/2QFTGA3UNE/moc_faad-decoder.cpp:10,
                 from /home/andreas/apps/DABstar/build/dabstar_autogen/mocs_compilation.cpp:2:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qflags.h:123:80: note: declared here
  123 | ("Use default constructor instead") Q_DECL_CONSTEXPR inline QFlags(Zero) noexcept : i(0) {}
      |                                                             ^~~~~~

In file included from /home/andreas/apps/DABstar/build/dabstar_autogen/6MVTDBG76O/../../../src/spectrum-viewer/waterfall-scope.h:38,
                 from /home/andreas/apps/DABstar/build/dabstar_autogen/6MVTDBG76O/moc_waterfall-scope.cpp:10,
                 from /home/andreas/apps/DABstar/build/dabstar_autogen/mocs_compilation.cpp:27:
/home/andreas/apps/DABstar/src/scopes-qwt6/spectrogramdata.h:59:29: error: ‘QwtInterval SpectrogramData::interval(Qt::Axis) const’ marked ‘override’, but does not override
   59 |   [[nodiscard]] QwtInterval interval(Qt::Axis x) const override;
      |                             ^~~~~~~~
make[2]: *** [CMakeFiles/dabstar.dir/build.make:102: CMakeFiles/dabstar.dir/dabstar_autogen/mocs_compilation.cpp.o] Fehler 1
make[1]: *** [CMakeFiles/Makefile2:124: CMakeFiles/dabstar.dir/all] Fehler 2
make: *** [Makefile:136: all] Fehler 2

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.