Analog bandwidth, named gain stages and a few UI tweaks

Work towards gqrx 2.3 continues although not as fast as I wish. If you grab a snapshot from the git repository you will notice a few improvements.

Analog bandwidth

Several devices, e.g. hackrf and bladerf, support adjusting the analog bandwidth. Normally you would always want to have the analog bandwidth set to match the sample rate, but there are situations when you may desire a narrower setting. Gqrx now supports setting this parameter in the device configuration dialog.

Named gain stages

Support for named gain stages in gqrx 2.3
Support for named gain stages in gqrx 2.3

Up until now gqrx has used a single “master” gain setting and didn’t take into account that different devices may have different gain stages. The gr-osmosdr source does indeed have an API call to set an unnamed / overall gain and gqrx was using that under the assumption that the driver will distribute the gain in an optimal way.

As it turns out, this only works properly with USRP and rtl-sdr devices – or any other device that only has one gain stage. An analysis even showed that for some devices (e.g. Funcube Dongle Pro+) this led to poor behavior and it had to be fixed. To that end I have replaced the “master” gain slider with a slider for each individual gain stage for the device. The figure shows how this looks like for the Funcube Dongle Pro+.

User interface tweaks

Several users have been complaining about the gqrx main window being too large to fit on small screens such as those on older netbooks. Although users could re-arrange the dock windows to only occupy one column, these settings were forgotten between sessions.

To fix this I added scroll bars to the dock windows so that they can be shrunk to smaller height than their natural size. If you shrink them below the minimum size a scroll bar appears on the right side of the window.

In addition to the above I have also enabled saving and restoring the layout configuration. This includes how the dock windows are arranged and whether they are visible or not. The visibility of the main toolbar is also restored between sessions.

I hope these enhancements will be sufficient to make gqrx usable on low resolution screens.

Those with large monitors can still go nuts with creating all sorts of funky layouts such as the one below.

Different layout

gqrx/snapshots PPA

I have made all these changes available in a new snapshot release available through the gqrx/snapshot PPA. Moreover, the PPA now also contains support for the Nuand bladerf transceiver board. I do not own this board and I could not test it so feedback is welcome. The bladerf driver was originally packaged by Roman Moravčík and I have updated the packages to the latest snapshot from the bladerf git repository.

Author: Alexandru Csete

All-round nerd and space hacker. Known as OZ9AEC on the air.

  • Bratislav Arandjelovic

    Sounds great! Thank you very much for the excellent work. I can´t wait to try the next gqrx (2.3) update for Mac.. :)

  • Diego Esep

    Hello, thank you for this awesome software. I use it with funcube PRO + and it gives me very good results.

    I plan to use it for HAB APRS payload recovery (with potential bad signal/noise ratio for APRS packets), I’ve tried the AFSK1200 decoder based on multimon, it works fine! I have plans to use gqrx with the more powerful direwolf AFSK decoder (can decode a lot of APRS packets not handled by multimon thanks to improved algorithm and error recovery: 990 decoded packets from WA8LMF’s Track 2):
    You can check this comparaison of AFSK decoders for reference:
    So far all my tests were not successful using the sound card monitor ouput with pulseaudio between gqrx and direwolf.However I had success recording audio to .wav from gqrx then using atest (test from .wav file) from direwolf, so I think I need to find a way for the 2 software to communicate better in realtime. One possibility may be to use a socket/pipe between gqrx and direwolf (adding socket/pipe output plugin to gqrx).

    • Hi Diego,

      I found that when the target application – in this case the packet decoder – does not have native pulseaudio support, routing audio from gqrx through pulseaudio will not work well, sometimes not at all. To that end, there is an option to build gqrx using the gr-audio backend, which then can use ALSA directly. If your packet decoder also uses ALSA then you can also perform the routing through the ALSA system and it may work better.

      There is an open task to create a more direct data interface but I have no idea when I will have time to implement it.

      • Diego Esep

        Hello thank you for your quick reply!
        I’m using Funcube PRO+ and it seems that there is a latency issue if not using pulseaudio backend. Currently i’m using pulseaudio backend with latest source of gqrx, everything works fine excepted routing qgrx audio out to another process.
        I plan to add a new audio backend in gqrx using pulseaudio as source and udp socket as sink (sending raw data through udp on localhost or remote decoder server). Then I will try to use netcat and pipe it to the decoder or add a new udp frontend for the decoder too. What do you think about this kind of interface?

        • Diego Esep

          A better approach may be to leave the backend as they are and add a new command close to the record button , that will send the raw data via a udp socket on a given host/port (compared to the record, instead of saving the audio in a wav file, it will send it tjrough the udp socket)

      • Diego Esep

        If have checked that duplicating start/stop_audio_recording() into start/stop_udp_sink() , and replacing wavfile_sink() by a Float To short with 32768 scale, followed by a UDP sink with short datatype is sending data correctly to decoders able to receive raw data (16bits 48KHZ) via udp.

        • Hey, good idea! I’ll see if I can make this available in gqrx for the next release.

          • Diego Esep

            Yes, That will be great if you can include it in next gqrx release!
            I’m currently working with direwolf author to integrate UDP interface directly in its direwolf APRS decoder (I have a working direwolf udp decoder prototype right now). This APRS software decoder looks to be the best in terms of performance for decoding APRS packets, combining qgrx with it will be the best SDR APRS setup :)

          • So, I have just pushed a change set that adds this UDP streaming option (look for the new button right next to the record button). The host and port can be specified in the audio options dialog.

            I would appreciate if you could test it and see if it works for you.

          • Diego Esep

            Hello, thank you very much for having added this feature to gqrx so quickly!

            I can confirm that it runs fine with dev version of direwolf using udp source (and it is the first time that using gqrx I can decode APRS packets that multimon can’t decode)! As soon as this direwolf version will be released (currently dev in progress), I will inform you.
            Thank you very much for this awesome piece of software and QT rulez :)

          • Thanks for the feedback and please do let me know when the new version of direwolf is available. I would also appreciate if you could send me info how start it and I will add it to the new documentation page I created few days ago:

          • Diego Esep

            Hello, ok as soon as direwolf be released I will provide the link to the software and also explain how to use it with gqrx! Thank you very much.

  • tahitibub

    Hi, Is it possible to have Mac OS X binaries of gqrx 2.3 ?


    • Gqrx 2.3 has not been released yet. If you want to try pre-release snapshots you can use macports.

      • tahitibub

        Thank you very much. I’ll wait !

  • Gerald Brown

    I have just started with this and am looking for documentation on how to set up the program to read a 433mhz signal from an Acurite weather station. Any suggestions?


  • Chris_M_Ward

    Working nicely on my mac, but what does the signal meter to the right of the frequency actually do?

    • It shows the signal strength. I thought it was obvious…