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.
- 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
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/
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
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:
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.
Inside the QrssPiG directory:
$ mkdir build $ cd build $ cmake .. $ make $ sudo make install
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.
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