Adding SoapySDRPlay module to Raspberry Pi 2/3 gqrx distribution

1,853 views
Skip to first unread message

Mac Cody

unread,
Feb 4, 2017, 12:50:57 AM2/4/17
to Gqrx SDR
Hello,

I am trying to use my SDRplay RSP2 with gqrx 2.6 on a Raspberry Pi 2 (although this query should also apply to a Raspberry Pi 3).  While the gqrx distribution comes with SoapySDR 0.5.2/0.5.3 support in its lib directory, there are no SoapySDR modules in place.  What I have tried is first remove the SoapySDR 0.5.2/0.5.3 libraries included with the gqrx 2.6 distribution, then recompile SoapySDR 0.5.2 and the SoapSDRPlay module, and then install them in /usr/local/lib.  Then I modified the run_gqrx.sh script to redefine SOAPY_SDR_PLUGIN_PATH=/usr/local/lib/SoapySDR/modules.0.5-2. I have not been able to get this to work.

Part of the problem is I don't know what to expect in the gqrx 'Configure I/O devices' dialog window.  Should there be a listing for SDRplay in the 'Device' list box that I select or should I select 'Other...' and supply content manually to the 'Device string' text box?  If it is the former, I guess I'm still not compiling and/or installing SoapySDR/SoapySDRPlay correctly.  If it is the latter, what should the text be that is entered into the 'Device string' text box?  Will it become apparent what I should set the other fields to in the dialog window?

73,

Mac / AE5PH

Mac Cody

unread,
Feb 4, 2017, 1:01:24 AM2/4/17
to Gqrx SDR
If forgot to mention that SoapySDRUtil --probe does detect the SDRplay and provides device identification and a peripheral summary.

73,

Mac / AE5PH

Alexandru Csete

unread,
Feb 4, 2017, 4:03:05 AM2/4/17
to gq...@googlegroups.com
Hi Mac,

The device string "soapy=0,driver=sdrplay" without the quotes should
work. Sample rates should be listed in the dropdown but you can also
enter your own. Bandwidth you have to enter yourself, otherwise
default will be used and this may or may not be a good value.

It will then probably crash for you because if you replace the
soapysdr library, then you also have rebuild everything that depends
on it. In this case gr-osmosdr, but it also requires that you have a
gnuradio sdk. If you rebuild everything, you will loose the
optimizations in my binaries and it will probably not work well.

Alex
> --
> You received this message because you are subscribed to the Google Groups
> "Gqrx SDR" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to gqrx+uns...@googlegroups.com.
> To post to this group, send email to gq...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/gqrx/d420f597-23ae-4b81-ac12-20f14b334d3d%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

Mac Cody

unread,
Feb 4, 2017, 12:27:44 PM2/4/17
to Gqrx SDR
Hi Alex,

Thanks for the quick response.  I know about the string you mentioned. It does not help.  The problem is that the gqrx distribution for the Raspberry Pi has the SoapySDR libraries, but there are no modules, like SoapySDRPlay with it.  I'm trying to figure out how to add the SoapySDRPlay module, so that gqrx recognizes my SDRplay RSP2.

73,

Mac / AE5PH

Alexandru Csete

unread,
Feb 4, 2017, 1:23:09 PM2/4/17
to gq...@googlegroups.com
Mac,

What exactly do you mean by gqrx not recognizing the sdrplay?

Gqrx does not yet autodetect devices loaded through soapysdr. That's
why you enter the device string manually. If it doesn't work it will
crash and die with an error.

Alex
> https://groups.google.com/d/msgid/gqrx/98ca6a08-6634-4258-8883-50c0a83464fa%40googlegroups.com.

Mac Cody

unread,
Feb 4, 2017, 3:08:00 PM2/4/17
to Gqrx SDR
I see this as more of a SoapySDR configuration issue, rather than a problem with gqrx directly.

According to its web site, SoapySDR uses plug-in modules to add support for various SDR devices.
These are the modules that are referenced in the run_gqrx.sh shell script by the shell variable
SOAPY_SDR_PLUGIN_PATH. Unfortunately, there are no plug-in modules provided with the gqrx
distribution for the Raspberry Pi 2/3. Actually, there isn't even a SoapySDR directory within the lib
directory in the distribution.  What I'm trying to do, add the SoapySDRplay plug-in module to the Raspberry Pi
gqrx distribution, so that it is recognized by SoapySDR and, in turn, recognized by gqrx.

CubicSDR uses SoapySDR exclusively, so all SDR devices have SoapySDR plug-in modules. Gqrx
used several SDR device interfaces, including SoapySDR.  I have been able to get SoapySDR and
SoapySDRPlay working with CubicSDR on linux.  I have also been able to get SoapySDR and
SoapySDRPlay working on the Raspberry Pi, but only in that SoapySDRUtil recognizes that the
SDRplay device is there.  This is independent of gqrx.

I hope this explains things better to you.

73,

Mac / AE5PH

Alexandru Csete

unread,
Feb 4, 2017, 4:08:29 PM2/4/17
to gq...@googlegroups.com
Ok Mac, thanks for the explanation but I already know all these things
since I'm the developer and packager of gqrx :o)

What I still don't know is what you experience when you run gqrx and
trying to configure it with the sdrplay??? In other words:

1. Start gqrx
2. Enter "soapy=0,driver=sdrplay" without the quotes as device string
3. Select a sample rate
4. Press OK

What's happening? Does it crash? Does it explode? Does it do nothing?
Or what is it that makes you say the sdrplay is not recognized by gqrx?

Anyway, the generic answer to adding a plugin to the Gqrx RPI package
is to compile the plugin using the gqrx runtime directory as prefix,
i.e. add -DCMAKE_INSTALL_PREFIX=/home/pi/gqrx-2.6-rpi2-1 to the cmake
command

Alex
> https://groups.google.com/d/msgid/gqrx/fd7820ba-8995-430d-b7f9-1bc31602697c%40googlegroups.com.

Mac Cody

unread,
Feb 4, 2017, 4:49:22 PM2/4/17
to Gqrx SDR
Alex

At the end of this message is the console output I get for the following setup.
I/Q input
  Device 'Other...'
  Device string: 'soapy=0,driver=sdrplay
  Input rate: 240000
  Decimation: 'None'
  Bandwidth: '0.100000 MHz'
  LNB LO: 0.000000 MHz
Audo output
  Device: 'C-Media USB Audio Device - (hw:1.0)
  Sample rate: '48 kHz'

The main point is that I get the message 'FATAL: SoapySDR::Device::make() no match'
The SoapySDR driver has no modules according to the following test:

pi@raspberrypi:~/SDR/gqrx/gqrx-2.6-rpi2-1 $ source gqrx_runtime.env
pi@raspberrypi:~/SDR/gqrx/gqrx-2.6-rpi2-1 $ which SoapySDRUtil
/home/pi/SDR/gqrx/gqrx-2.6-rpi2-1/bin/SoapySDRUtil
pi@raspberrypi:~/SDR/gqrx/gqrx-2.6-rpi2-1 $ SoapySDRUtil --probe
######################################################
## Soapy SDR -- the SDR abstraction library
######################################################

Probe device

----------------------------------------------------
-- Device identification
----------------------------------------------------
  driver=null
  hardware=null

----------------------------------------------------
-- Peripheral summary
----------------------------------------------------
  Channels: 0 Rx, 0 Tx
  Timestamps: NO

73,

Mac / AE5PH

******************************************* Start of initial console output *************************************************

pi@raspberrypi:~/SDR/gqrx/gqrx-2.6-rpi2-1 $ ./run_gqrx.sh
Starting gqrx...
libEGL warning: DRI3: Screen seems not DRI3 capable
libEGL warning: DRI2: could not open /dev/dri/card1 (No such file or directory)
Controlport disabled
ALSA lib confmisc.c:1286:(snd_func_refer) Unable to find definition 'cards.bcm2835.pcm.front.0:CARD=0'
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM front
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib confmisc.c:1286:(snd_func_refer) Unable to find definition 'cards.bcm2835.pcm.surround51.0:CARD=0'
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM surround21
ALSA lib confmisc.c:1286:(snd_func_refer) Unable to find definition 'cards.bcm2835.pcm.surround51.0:CARD=0'
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM surround21
ALSA lib confmisc.c:1286:(snd_func_refer) Unable to find definition 'cards.bcm2835.pcm.surround40.0:CARD=0'
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM surround40
ALSA lib confmisc.c:1286:(snd_func_refer) Unable to find definition 'cards.bcm2835.pcm.surround51.0:CARD=0'
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM surround41
ALSA lib confmisc.c:1286:(snd_func_refer) Unable to find definition 'cards.bcm2835.pcm.surround51.0:CARD=0'
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM surround50
ALSA lib confmisc.c:1286:(snd_func_refer) Unable to find definition 'cards.bcm2835.pcm.surround51.0:CARD=0'
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM surround51
ALSA lib confmisc.c:1286:(snd_func_refer) Unable to find definition 'cards.bcm2835.pcm.surround71.0:CARD=0'
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM surround71
ALSA lib confmisc.c:1286:(snd_func_refer) Unable to find definition 'cards.bcm2835.pcm.iec958.0:CARD=0,AES0=4,AES1=130,AES2=0,AES3=2'
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM iec958
ALSA lib confmisc.c:1286:(snd_func_refer) Unable to find definition 'cards.bcm2835.pcm.iec958.0:CARD=0,AES0=4,AES1=130,AES2=0,AES3=2'
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM spdif
ALSA lib confmisc.c:1286:(snd_func_refer) Unable to find definition 'cards.bcm2835.pcm.iec958.0:CARD=0,AES0=4,AES1=130,AES2=0,AES3=2'
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM spdif
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused

ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused

Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
No user supplied config file. Using "default.conf"
gr-osmosdr cdd20e18 (0.1.5git) gnuradio 3.7.10.1
built-in source types: file fcd rtl rtl_tcp hackrf rfspace airspy soapy redpitaya
FM demod gain: 1.52789
IQ DCR alpha: 1.04166e-05
PortAudio V19-devel (built Feb 21 2014 06:46:01) (version 1899)
Number of audio devices: 6
  0:  bcm2835 ALSA: - (hw:0,0)  I:0  O:2
  1:  bcm2835 ALSA: IEC958/HDMI (hw:0,1)  I:0  O:2
  2:  C-Media USB Audio Device: - (hw:1,0)  I:1  O:2
  3:  sysdefault  I:0  O:128
  4:  dmix  I:0  O:2
  5:  default  I:0  O:2
Using default audio device
Using audio backend: N/A
BookmarksFile is /home/pi/.config/gqrx/bookmarks.csv
getDeviceList : Available input devices:
    0 : "RFSPACE SDR-IQ Receiver"
    1 : "RFSPACE SDR-IP Receiver"
    2 : "RFSPACE NetSDR Receiver"
    3 : "RFSPACE Cloud-IQ Receiver"
    4 : "RTL-SDR Spectrum Server"
    5 : "Red Pitaya Transceiver Server"
    6 : "Complex Sampled (IQ) File"
Loading configuration from: "default.conf"
Configuration file: "/home/pi/.config/gqrx/default.conf"
gr-osmosdr cdd20e18 (0.1.5git) gnuradio 3.7.10.1
built-in source types: file fcd rtl rtl_tcp hackrf rfspace airspy soapy redpitaya

FATAL: SoapySDR::Device::make() no match

Trying to fill up 1 missing channel(s) with null source(s).
This is being done to prevent the application from crashing
due to gnuradio bug #528.

********************
********************
New audio output device:
   old:
   new: C-Media USB Audio Device: - (hw:1,0)
PortAudio V19-devel (built Feb 21 2014 06:46:01) (version 1899)
Number of audio devices: 6
  0:  bcm2835 ALSA: - (hw:0,0)  I:0  O:2
  1:  bcm2835 ALSA: IEC958/HDMI (hw:0,1)  I:0  O:2
  2:  C-Media USB Audio Device: - (hw:1,0)  I:1  O:2
  3:  sysdefault  I:0  O:128
  4:  dmix  I:0  O:2
  5:  default  I:0  O:2
Audio device 'C-Media USB Audio Device: - (hw:1,0)' has index 2

Failed to set RX input rate to 240000
Your device may not be working properly.

IQ DCR samp_rate: 240000
IQ DCR alpha: 4.16665e-06
Changing NB_RX quad rate: 96000 -> 240000
Requested sample rate: 240000
Actual sample rate   : "240000.000000"
New FFT rate: 25 Hz
Requested bandwidth: 100000 Hz
Actual bandwidth   : 0 Hz
setFreqCorr : 0 ppm
New LNB LO: 0 Hz
updateHWFrequencyRange failed fetching new hardware frequency range
New mode index: 3
/home/pi/sdr/src/gqrx.git/src/qtgui/dockrxopt.cpp currentMaxdev FIXME
Filter preset for mode 3 LO: -5000 HI: 5000
Genrating taps for new filter   LO:-5000   HI:5000 TW:2000   Taps: 57
setFftRate to "25 fps"
New FFT rate: 25 Hz
New FFT rate: 25 Hz
setFftSize to "8192"
New FFT rate: 25 Hz
Configure I/O devices.
PortAudio V19-devel (built Feb 21 2014 06:46:01) (version 1899)
Number of audio devices: 6
  0:  bcm2835 ALSA: - (hw:0,0)  I:0  O:2
  1:  bcm2835 ALSA: IEC958/HDMI (hw:0,1)  I:0  O:2
  2:  C-Media USB Audio Device: - (hw:1,0)  I:1  O:2
  3:  sysdefault  I:0  O:128
  4:  dmix  I:0  O:2
  5:  default  I:0  O:2
Configure I/O devices.
PortAudio V19-devel (built Feb 21 2014 06:46:01) (version 1899)
Number of audio devices: 6
  0:  bcm2835 ALSA: - (hw:0,0)  I:0  O:2
  1:  bcm2835 ALSA: IEC958/HDMI (hw:0,1)  I:0  O:2
  2:  C-Media USB Audio Device: - (hw:1,0)  I:1  O:2
  3:  sysdefault  I:0  O:128
  4:  dmix  I:0  O:2
  5:  default  I:0  O:2

******************************************* End of initial console output *************************************************

*************************** Start of console output when DSP started *************************************************
ew FFT rate: 25 Hz
New FFT rate: 25 Hz
No audio FFT data.
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
No audio FFT data.
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
No audio FFT data.
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed
portaudio_sink::work(): Error writing to audio device: Output underflowed

*************************** End of console output when DSP started *************************************************

Mac Cody

unread,
Feb 4, 2017, 5:05:42 PM2/4/17
to Gqrx SDR
Alex,

With SoapySDR installed and the SoapySDRPlay plug-in module installed, the SDRplay device is properly detected, as
listed below.  This is on the same Raspberry Pi 2, where SoapySDR 0.6 and SoapySDRPlay are installed in /usr/local/lib.
The Raspberry Pi 2/3 distribution of gqrx is using a self-contained bin and lib directory structure which does not use the
SoapySDR installation in /usr/local/lib.

73,

Mac / AE5PH

pi@raspberrypi:~ $ which SoapySDRUtil
/usr/local/bin/SoapySDRUtil
pi@raspberrypi:~ $ SoapySDRUtil --probe

######################################################
## Soapy SDR -- the SDR abstraction library
######################################################

Probe device
mir_sdr_usb_GetDevices Dev0:vid=1df7 pid=3010 rev=0207 serno=1605031600 bus=001 port=002 devAvail=1
mir_sdr_usb_SetDeviceIdx idx=0 numDevices=1
Opened device with idVendor = 0x1df7 idProduct = 0x3010 fwVersion = 0x0207 busNum = 001 portNum = 002


----------------------------------------------------
-- Device identification
----------------------------------------------------
  driver=SDRplay
  hardware=2 1605031600
  mir_sdr_api_version=2.090000
  mir_sdr_hw_version=2


----------------------------------------------------
-- Peripheral summary
----------------------------------------------------
  Channels: 1 Rx, 0 Tx
  Timestamps: NO
  Other Settings:
     * RF Gain Select - RF Gain Select
       [key=rfgain_sel, default=4, type=string, options=(0, 1, 2, 3, 4, 5, 6, 7, 8)]
     * IF Mode - IF frequency in kHz
       [key=if_mode, default=Zero-IF, type=string, options=(Zero-IF, 450kHz, 1620kHz, 2048kHz)]
     * IQ Correction - IQ Correction Control
       [key=iqcorr_ctrl, default=true, type=bool]
     * AGC Setpoint - AGC Setpoint (dBfs)
       [key=agc_setpoint, default=-30, type=int, range=[-60, 0]]
     * Antenna Select - Antenna Select
       [key=ant_sel, default=Antenna A, type=string, options=(Antenna A, Antenna B)]
     * AMport Select - AM Port Select
       [key=amport_ctrl, default=AntA//AntB, type=string, options=(AntA/AntB, Hi-Z)]
     * ExtRef Enable - External Reference Control
       [key=extref_ctrl, default=true, type=bool]
     * BiasT Enable - BiasT Control
       [key=biasT_ctrl, default=true, type=bool]
     * RfNotch Enable - RF Notch Filter Control
       [key=rfnotch_ctrl, default=true, type=bool]

----------------------------------------------------
-- RX Channel 0
----------------------------------------------------
  Full-duplex: YES
  Supports AGC: YES
  Stream formats: CS16, CF32
  Native format: CS16 [full-scale=32767]
  Antennas: RX
  Corrections: DC removal
  Full gain range: [0, 39] dB
    IFGR gain range: [20, 59] dB
  Full freq range: [0.01, 2000] MHz
    RF freq range: [0.01, 2000] MHz
    CORR freq range:  MHz
  Sample rates: [0.25, 10] MHz
  Filter bandwidths: [0.2, 8] MHz

mir_sdr_usb_ReleaseDeviceIdx 0

pi@raspberrypi:~ $


Mac Cody

unread,
Feb 5, 2017, 12:15:22 AM2/5/17
to Gqrx SDR


Alex,

It appears that the version of SoapySDRPlay that I need that supports the current SDRplay drivers requires the current version of SoapySDR (0.6). The version of SoapySDR that comes with the binary distributions for Raspberry Pi 2/3 is 0.5.3.  Attempts to get the current version of SoapySDRPlay to compile with SoapySDR 0.5.3 failed due to a number of undefined references.  Therefore, I'm at a bit of an impasse unless I compile gqrx from the sources, along with GNU radio, et. al.

73,

Mac

Alexandru Csete

unread,
Feb 5, 2017, 8:11:34 AM2/5/17
to gq...@googlegroups.com
That's what I was trying to say in my first email :-)

Anyway, I have updated the RPI2 binary package to include the latest
git HEAD of soapysdr and also included soapy-sdrplay and soapy.-remote
plugins: https://github.com/csete/gqrx/releases/download/v2.6/gqrx-2.6-rpi2-2.tar.xz

RPI3 package will follow later today.

I hope it works because this is all I can do for now.

Alex
Message has been deleted

Mac Cody

unread,
Feb 5, 2017, 6:37:07 PM2/5/17
to Gqrx SDR
Alex,

Thanks for creating the new distribution so quickly! It works on my Raspberry Pi 2 with an average of about 180% CPU utilization
according to the 'top' utility.  Sound starts out a little 'crackly' and maybe an occasional dropped audio frame (not sure about that).
There appears to be about a two second latency is the audio heard compared to an analog radio receiving the same signal.  That
is to be expected.  Perhaps a Raspberry Pi 3 might help in that regard.

Thanks for all the hard work you have done on gqrx and gpredict, for that matter! I apologize if my messages seemed to be condescending or
presumptive. I was just trying to get directly to what I perceived to be the heart of the problem.  Guess I should have been more descriptive
of what the behavior qqrx was before attempting to prescribe a solution.

73,

Mac / AE5PH

Alexandru Csete

unread,
Feb 5, 2017, 7:10:42 PM2/5/17
to gq...@googlegroups.com
Thanks for the update, Mac. I'm glad to hear it's working \o/

Regarding the latency,I think some of it comes from the device and/or
its driver, but probably not all of it. It may also depend on the
sample rate with higher rates giving lower latency.

Alex


On Mon, Feb 6, 2017 at 12:35 AM, Mac Cody <mac....@gmail.com> wrote:
> Alex,
>
> Thanks for creating the new distribution so quickly! It works on my
> Raspberry Pi 2 with an average of about 180% CPU utilization
> according to the 'top' utility. Sound starts out a little 'crackly' and
> maybe an occasional dropped audio frame (not sure about that).
> There appears to be about a two second latency is the audio heard compared
> to an analog radio receiving the same signal. That
> is to be expected. Perhaps a Raspberry Pi 3 might help in that regard.
>
> Thanks for all the hard work you have done on gqrx and gpredict, for that
> matter! If my messages seemed to be condescending or
> presumptive. I was just trying to get directly to what I perceived to be the
> heart of the problem. Guess I should have been more descriptive
> of what the behavior qqrx was before attempting to prescribe a solution.
>
> 73,
>
> Mac / AE5PH
> --
> You received this message because you are subscribed to the Google Groups
> "Gqrx SDR" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to gqrx+uns...@googlegroups.com.
> To post to this group, send email to gq...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/gqrx/831386f6-983f-4653-906f-91708e34946d%40googlegroups.com.

Mac Cody

unread,
Feb 5, 2017, 11:52:01 PM2/5/17
to Gqrx SDR
Alex,

Interesting that you said that higher sampling rates giving lower latency.  Is that because there is a fixed block
size that gqrx processes from the sampled I/Q data?  If the Raspberry Pi can keep up with the high sampling
rate, I can see that happening. Of course if it doesn't then there would be buffer overflow, which is not a good thing.

I'll try some different sample rates and decimation factors to see what occurs.  SDRplay is an different device,
as the USB interface uses isochronous data transfers to move the sampled data to the host.  Not sure what
the other devices, like the RTLSDR devices use.  I read that the Airspy uses USB bulk mode.

73,

Mac / AE5PH

Alexandru Csete

unread,
Feb 6, 2017, 2:26:07 AM2/6/17
to gq...@googlegroups.com
On Mon, Feb 6, 2017 at 5:52 AM, Mac Cody <mac....@gmail.com> wrote:
>
> Interesting that you said that higher sampling rates giving lower latency.
> Is that because there is a fixed block
> size that gqrx processes from the sampled I/Q data?

Yes, but the block size is determined by the driver, not gqrx. I think
the latency in gqrx is always < 100 ms, though I haven't measured and
compare it to analog radios.

Alex

Mac Cody

unread,
Feb 6, 2017, 11:14:43 PM2/6/17
to Gqrx SDR
Alex,

I fixed the latency problem by reducing the FFT size from the default 8192 points to 2048 points.  The latency is now under 250 ms, estimated by my listening to a radio and the gqrx output.  Its a beautiful thing! :)

73,

Mac / AE5PH
Reply all
Reply to author
Forward
0 new messages