GithubHelp home page GithubHelp logo

qrsspig's Introduction

QrssPiG

License: GPL v3 Build Status

QrssPiG is short for QRSS (Raspberry)Pi Grabber.

Haven't found a headless standalone grabber for my Pi. So I try to create my own.

Functionality

  • Headless QRSS grabber
  • Process I/Q stream from an rtl-sdr or HackRF device
  • Process I/Q stream from a stereo audio input or an audio stream from a mono audio input. Currently only 16 bit audio supported
  • Generate pretty horizontal or vertical waterfall graphs
  • Upload them via scp or ftp, or just save locally. Or any combination of uploads and local saves

Sample Output

Installation

Install from repository

There is a repository with binaries for amd64 and armhf (Raspberry) for several Debian, Ubuntu and Linux Mint versions.

To add the repository, create a file /etc/apt/sources.list.d/hb9fxx.list containing the following two lines. You must replace the 'stretch' keyword with your distribution. Supported distributions are 'jessie' (Debian 8), 'stretch' (Debian 9), 'buster' (upcoming Debian 10), 'trusty' (Ubuntu 14.04, Linux Mint 17), 'xenial' (Ubuntu 16.04, Linux Mint 18), 'artful' (Ubuntu 17.10) and 'bionic' (upcoming Ubuntu 18.04, Linux Mint 19). Don't forget the trailing '/'.

deb https://debian.hb9fxx.ch/debian/ stretch/
deb-src https://debian.hb9fxx.ch/debian/ stretch/

and run

sudo aptitude install apt-transport-https
wget https://debian.hb9fxx.ch/debian/key.asc -O - | sudo apt-key add -
sudo aptitude update
sudo aptitude install qrsspig

Install from SuSE repository

Thanks to Martin Hauke there are SuSE binaries available. For this you'll need to add the hardware:sdr repository. e.g. for openSUSE Leap 42.3:

$ sudo zypper addrepo -f
https://download.opensuse.org/repositories/hardware:/sdr/openSUSE_Leap_42.3/hardware:sdr.repo
$ sudo zypper install QrssPiG

Build from source

Dependencies

To build QrssPiG you need cmake and a c++ compiler (g++ or clang++) with support for c++11.

To build the core of QrssPiG you need the following mandatory dev libs:

  • libboost-program-options-dev
  • libyaml-cpp-dev
  • libfftw3-dev
  • libgd-dev

Without any additional libs QrssPiG is limited to read data from its standard input and save the output to the local filesystem.

Additional functionalities are available through following libs:

  • librtlsdr-dev: Read stream from rtlsdr device
  • libhackrf-dev: Read stream from hackrf device
  • libasound2-dev: Read stream from alsa audio device
  • libssh-dev: SCP upload of grabs to a server
  • libcurl4-openssl-dev: FTP upload of grabs to a server
  • libliquid-dev: Downsampling of input signal samplerate before processing
  • librtfilter-dev: Alternative for libliquid-dev

Get the sources

Clone the git repository from https://github.com/MartinHerren/QrssPiG.git

or download the latest snapshot from https://github.com/MartinHerren/QrssPiG/archive/master.zip To have access to the latest developments you can use the dev branch instead of the master.

Build:

Inside the QrssPiG directory:

$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install

Running QrssPiG

To get a short help about QrssPiG's usage, type

$ qrsspig -h

To get the list of input/upload modules QrssPiG has been compiled with, type

$ qrsspig -m

To list found input devices, type

$ qrsspig -l

You can combine the options -m and -l:

$ qrsspig -ml

To run QrssPiG, type:

$ qrsspig -c configfile.yaml

alternatively you can omit the '-c' and just give only the config file

$ qrsspig configfile.yaml

A simple template for a config file is contained in the git repository: qrsspig.yaml.template, some simple example are given in the next section. For a complete documentation of all options in the config file, refer to the wiki.

Example configs

Simple acquisition from a mono soundcard:

This is a typical config for a RaspberryPi with a cheap external mono USB sound dongle (almost all the cheap ones only feature a mono input and a stereo output, sold as 7.1 output). This kind of config is even able to run on the simple first generation RaspberryPi 1 with a single core running at 700MHz and only 256MB of RAM. It can also run on a ReapberryPi Zero(W).

input:
  type: alsa
  device: hw:1
  channel: mono
  samplerate: 48000
  basefreq: 10138500
processing:
  fft: 65536
  fftoverlap: 1
output:
  orientation: horizontal
  minutesperframe: 10
  freqmin: 1000
  freqmax: 2000
  dBmin: -50
  dBmax: -20
upload:
  type: local
  dir: /tmp

Simple acquisition from an rtlsdr dongle

This is a typical config for a RaspberryPi with a cheap rtl-sdr dongle. This config is able to run on RaspberryPi 2/3.

input:
  type: rtlsdr
  samplerate: 240000
  basefreq: 27999300
  gain: 24
processing:
  fft: 262144
  fftoverlap: 1
output:
  orientation: horizontal
  minutesperframe: 10
  freqmin: 1000
  freqmax: 2000
  dBmin: -50
  dBmax: -20
upload:
  type: local
  dir: /tmp

Simple acquisition from an HackRF

This config involves downsampling from 8MS/s to 8kS/s so it is CPU intensive and needs a PC to run.

input:
  type: hackrf
  samplerate: 8000000
  basefreq: 27999300
  amplifier: on
  lnagain: 24
  vgagain: 32
processing:
  samplerate: 8000
  fft: 8192
  fftoverlap: 1
output:
  orientation: horizontal
  minutesperframe: 10
  freqmin: 1000
  freqmax: 2000
  dBmin: -50
  dBmax: -20
upload:
  type: local
  dir: /tmp

qrsspig's People

Contributors

martinherren avatar swharden avatar

Watchers

Magnus Jonsson avatar

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.