Soapy SDR plugin FUNcube Dongle Pro+
https://github.com/pothosware/SoapyFCDPP/wiki
This is a SoapySDR driver for the FUNcube dongle pro+. It has been tested it on Raspberry Pi 3 & Orange Pi Zero LTS, typically used for streaming IQ data to GQRX.
Unlike the gr-osmosdr it's doesn't depend on the gr-fcdproplus block but is standalone depending on libhidapi and ALSA. I believe this makes it a bit more approachable for hacking.
If you intend to use this as a remote front-end, remember to build on your target system, not your local machine!
- SoapySDR
- libasound2 (ALSA)
- libhidapi
- cmake or meson and ninja for building
(if you don't already have SoapySDR installed from source)
sudo apt-get install libsoapysdr-dev soapysdr-tools
(other dependencies)
sudo apt-get install libhidapi-dev libasound2-dev
Tested on Debian 10 with out-of-the-box SoapySDR and other dependencies.
# build
git clone https://github.com/pothosware/SoapyFCDPP.git
cd SoapyFCDPP
mkdir build; cd build
cmake ../
make && sudo make install
# Will put the driver in /usr/local/lib/SoapySDR/module0.6
Only tested with the latest SoapySDR / SoapyRemote from source.
# build
git clone https://github.com/pothosware/SoapyFCDPP.git
cd SoapyFCDPP/SoapyFCDPP
meson build && cd build
ninja install
# Will put the driver in /usr/local/lib/SoapySDR/modules0.7
This driver should now appear in the driver list as fcdpp
:
SoapySDRUtil --info
You can access the driver directly from a SoapySDR client, a typical device string is:
driver=fcdpp,period=19200
where period
is optional but specifies the sample count per ALSA period (defaults to sample rate / 4 => 250msec latency).
Adjust if you want lower latency at the cost of higher context switch rates (eg: an RPi3 can tolerate down to 2048 samples,
however an OrangePi Zero LTS may kernel panic / become unstable below 9600, hence the default!)
You can also use SoapyRemote (or another SoapySDR remoting solution) to operate this driver as a headless front-end.
On the remote system:
SoapySDRServer --bind="0.0.0.0:1234"
On the local system (eg: GQRX SoapySDR client):
- Device string in GQRX:
soapy=0,remote=hostname.local:1234,remote:driver=fcdpp
- Input rate: 192000 (if you have FCD Pro+, otherwise 96000)
- All other settings default (no decimation, zero bandwidth, LO frequency)
To access an FCD USB device for tuning/gain control etc. without being root you need this:
# Udev rules for the Funcube Dongle Pro (0xfb56) & Pro+ (0xfb31)
# Put this in:
# /etc/udev/rules.d/81-funcube.rules
# Udev rule for the Funcube Dongle to be used with libusb (NB: SYMLINK is not necessary but convenient)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="fb56", GROUP="audio", MODE="0666", SYMLINK+="usbfcd1"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="fb31", GROUP="audio", MODE="0666", SYMLINK+="usbfcd2"
NB: If you have GNU radio support for Funcube Dongles installed you may have what you need in /lib/udev/rules.d/60-gr-fcdproplus.rules
or /lib/udev/rules.d/60-libgnuradio-fcd*
.
Boost Software License 1.0 (BSL-1.0)