Giter Club home page Giter Club logo

soapyfcdpp's Introduction

SoapyFCDPP

Soapy SDR plugin FUNcube Dongle Pro+

https://github.com/pothosware/SoapyFCDPP/wiki

What is this thing?

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!

Dependencies

  • SoapySDR
  • libasound2 (ALSA)
  • libhidapi
  • cmake or meson and ninja for building

Ubuntu / Debian

(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

Build with cmake

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

Build with meson

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

Testing

This driver should now appear in the driver list as fcdpp:

SoapySDRUtil --info

Local use

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!)

Remote use

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)

Permissions

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*.

License

Boost Software License 1.0 (BSL-1.0)

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.