Giter Club home page Giter Club logo

wfm-rpi's Introduction

#wfm-rpi

A simple FM receiver


wfm-rpi

WFM-rpi is software for the decoding of an FM signal. The software allows selecting a frequency through a small - separate - keypath, and it provides the possibility of saving a selected frequency, together with a user-selected name in a station list. One can add a station to the station list by selecting the frequency and pushing the "FS" button. Selecting a station (with the associated frequency) is by clicking ONCE the line in the station list. One can remove a line from the station list by clicking TWICE on the line. The software - obviously - supports decoding of rds.


The software has - just to experiment with - implemented 5 different algorithms for FM demodulation, user selectable.


The software can be configured for use with an AIRSPY, SDRplay and/or a DABstick.

The 1.0 version differs from the 0.998 version in two ways

  • it allows configuration for more than one device, it will use
    the device attached.
  • for the SDRplay, it now has an improved gain reduction setting, and
    it depends on library 2.13. In case an RSPduo is used, tuner 1 will we selected by default.

This version of the FM software was designed such that it runs on a Raspberry PI 2. The - high - input samplerate is filtered and decimated to a rate around 192000. Note that the load of processing FM at a rate of 192000 or higher is heavy. It turns out that by selecting the lto option for the compiler (gcc), the load is manageable and restricted to app 50-60 percent on all 4 cores of the RPI 2.


An option is to control the WFM-rpi software through an ssh connection from another computer (I use that since my Raspberry is not near my chair). To enable listening, a similar option as with the Qt-DAB software is implemented: the sound output can be send to an IP port.

Define STREAMER in CMake or undefine CONFIG+=streamer in the ".pro" file for installing a (simple) streamer that outputs the audio on port 20040 allowing you to listen from another computer. A simple "listener" is available as client, use qmake to build the listener, which is the same as for the Qt-DAB


For creating an executable: install the required libraries and use either qmake or CMake

The configuration file allows selection and incorporation of support of one of the mentioned devices. Note that selecting more than one of these devices in the configuration file lead to unexpected results.

The CMakeLists.txt file is written such that Qt5 is used. The "wfm-rpi.pro" file is less specific, both qmake-qt4 (for Qt4) and qmake-qt5 (for Qt5) gave good results.


The software compiles on the RPI 2, tested with Arch Linux and Jessie.

There might be an issue with sound on the RPI. Sound might be a little stuttering when the wrong buffersizes are selected.

Select buffersizes with "latency=X" in the "ini" file ($HOME/.wfm-rpi.ini) My favorite setting is 4.

After a first run, there will be an "ini" file with settings, just add a line latency=4 to test and adapt the value when there is stuttering


Note on DABSTICks

There has been quite some developments on the code for supporting dabsticks. This software assumes that there is a library "rtlsdr.." available. The easiest is to take the library from the osmocom site, however, there are other versions as well. You might want to try the version from Leif Albrink http://www.sm5bsz.com/linuxdsp/hware/rtlsdr/rtlsdr.htm

A good alternative (for me) was the one from http://www.rtl-sdr.com/new-experimental-r820t-rtl-sdr-driver-tunes-13-mhz-lower/

Selecting in the ".pro" file is by commenting or uncommenting lines

CONFIG+=dabstick

Similarly, comment or uncomment the definition lines in the top of the CMakeLists.txt file if you use cmake.


Note on SDRplay

The software is compiled against the 2.13 version of the SDRplay library, note that there is an incompatibility between 2.13 and its predecessors

wfm-rpi's People

Contributors

jvankatwijk avatar

Stargazers

fxtiger avatar Elliot Leung avatar vehar avatar  avatar Gerad Munsch avatar Abishek Muthian avatar Luke Alex Reeve avatar Andres Ramírez avatar  avatar WodoWiesel avatar Judah Holanda Correia Lima avatar  avatar Athanasios Oikonomou avatar Gowrav L avatar somename123 avatar

Watchers

somename123 avatar Gerad Munsch avatar James Cloos avatar  avatar  avatar Andres Ramírez avatar

wfm-rpi's Issues

Compile on raspberry with jessie

I got the following errors:
Makefile:490: recipe for target 'audiosink.o' failed
make: *** [audiosink.o] Error 1

if i use cmake i got this:
[ 30%] Building CXX object CMakeFiles/wfm-rpi-dabstick-0.996.dir/src/main.cpp.o In file included from /home/pi/wfm-rpi/./includes/gui.h:34:0, from /home/pi/wfm-rpi/src/main.cpp:33: /home/pi/wfm-rpi/ui_sdrgui.h:12:42: fatal error: Qt3Support/Q3MimeSourceFactory: Datei oder Verzeichnis nicht gefunden #include <Qt3Support/Q3MimeSourceFactory> ^ compilation terminated. CMakeFiles/wfm-rpi-dabstick-0.996.dir/build.make:130: recipe for target 'CMakeFiles/wfm-rpi-dabstick-0.996.dir/src/main.cpp.o' failed make[2]: *** [CMakeFiles/wfm-rpi-dabstick-0.996.dir/src/main.cpp.o] Error 1 CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/wfm-rpi-dabstick-0.996.dir/all' failed make[1]: *** [CMakeFiles/wfm-rpi-dabstick-0.996.dir/all] Error 2 Makefile:127: recipe for target 'all' failed make: *** [all] Error 2

Modifying decimation and filtering

Hi,

Have built and can run wfm-rpi but I'd like to run it on a faster system so would like to know how I can modify the code which decimates the input sampling to work on the pi. With the default setup stereo listening is pretty poor.

Thanks

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.