/gr-iqtlabs

gnuradio blocks

Primary LanguageC++Apache License 2.0Apache-2.0

gr-iqtlabs

Overview

This repo contains gnuradio OOT blocks, used by IQTLabs projects (including gamutRF).

Produce a spectrogram like image for inference pipelines (typically Torchserve based) to infer the presence of signals in FFT output.

Correlate samples and power for inference pipelines (typically Torchserve based) to infer the presence of signals raw in I/Q samples.

Send samples to inference pipelines (typically Torchserve based) to infer the presence of signals in raw I/Q samples.

Command a source block with PMT tuning messages to sweep over a set of frequency ranges, retuning after a configurable nunber of FFT points are received over a configurable threshold.

Command a source block with PMT tuning messages to sweep over a set of frequency ranges, retuning after a configurable nunber of FFT points are received over a configurable threshold (while validating power values are in a valid range).

Accepts PMT tuning requests and produces samples related to the requested frequency (typically used in test flowgraphs that require the source to be dynamically tuned and annotated with rx_time and rx_freq tags).

Rolls a vector by one half of its length (useful for, among other things, adding after an FFTW compatible FFT computation to move the DC component to the center - reproduces using fft_shift = True in the core gnuradio FFT block).

Translates a vector to JSON format, which could be output to a file or zmq.

Uses VkFFT to offload FFT computation to a Vulkan compatible GPU (results in FFTW compatible format, DC component first).

Write samples to disk as zstandard compressed files, automatically opening new files when new PMT rx_freq tags are received.

Building

On Ubuntu 22.04:

bin/apt_get.sh && bin/build_test.sh

Compability notes

  • tested with gnuradio 3.9 and 3.10, and python 3.8, 3.9 and 3.10 (for gnuradio 3.9, log messages will be incomplete though the blocks still function).
  • for SoapySDR sources, requires gnuradio 3.10.6.0 or later (or a gr-soapy patch)