Skip to content

GPU-accelerated RF spectrum observability platform with real-time DSP, CUDA/RAPIDS processing, and 2D/3D geospatial visualization.

License

Notifications You must be signed in to change notification settings

Pouria-007/RF-Spectrum-Observatory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

4 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

RF-Spectrum-Observatory

GitHub

GPU-accelerated RF spectrum observatory with real-time DSP and geospatial visualization

A high-performance platform for RF spectrum analysis that combines CUDA-accelerated signal processing with geospatial analytics to visualize RF signal strength across geographic tiles in real-time.


๐Ÿ“ธ Screenshots & Demos

Spectral Visualization (Real-Time FFT + Waterfall)

Spectral Visualization

Real-time Power Spectral Density (PSD) with smoothing and noise floor estimation, plus live waterfall/spectrogram showing frequency evolution over time.


3D Geospatial RF Heatmap with Drone Tracking

3D Map

Interactive 3D extruded map showing RF signal strength across geographic tiles. Yellow helicopter marker tracks drone position. Column height represents signal power (dB). Click tiles for detailed metrics.


Live Demos (Animated)

๐ŸŽฌ Auto-playing demos below (click for full-quality video downloads)

๐Ÿ“ก Geospatial Live RF Map (Drone Flight Path)

Geospatial RF Map Demo

Interactive 3D map showing drone flight path with real-time RF signal measurements. Yellow helicopter marker tracks position, tiles show power levels. (Click to download full video)


๐Ÿ“Š Spectral Visualization (Real-Time)

Spectral Visualization Demo

Live spectrum analyzer and waterfall display updating in real-time with synthetic 5G-like signals. (Click to download full video)


๐Ÿ–ฅ๏ธ GPU HPC Monitor (Performance Telemetry)

GPU HPC Monitor

Real-time GPU utilization, memory usage, power draw, and throughput metrics for HPC workload monitoring. (Click to download full video)


๐Ÿ“Š Raw Data Stream (Low-Level Inspection)

Raw Data Monitor

Raw IQ samples, GPS fixes, and DSP features inspection for debugging and validation. (Click to download full video)


๐ŸŽฏ Overview

This platform simulates drone-based RF data collection, processing IQ samples through a GPU-accelerated DSP pipeline and visualizing signal strength on interactive 2D/3D maps. Built for spectrum observability, interference detection, and coverage analysis.

Key Capabilities

  • Real-time GPU DSP: FFT, PSD, and spectral feature extraction using CuPy/cuFFT/cuSignal
  • Geospatial Aggregation: Tile-based RF metrics computed on GPU with RAPIDS cuDF
  • Live Dashboard: Interactive Streamlit UI with spectrum plots, waterfall, and 2D/3D heatmaps
  • Hardware-Agnostic: Synthetic data mode (no SDR required) with extensible hardware interfaces
  • Export Pipeline: Parquet and GeoJSON outputs for offline analysis

๐Ÿ—๏ธ System Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  IQ Source      โ”‚  Synthetic IQ generator (5G-like OFDM + interference)
โ”‚  (Synthetic)    โ”‚  Hardware SDR support (RTL-SDR, USRP) via extensible interface
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ”‚
         โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  GPU DSP        โ”‚  CuPy/cuFFT: Windowing โ†’ FFT โ†’ PSD (dB)
โ”‚  Pipeline       โ”‚  cuSignal: EMA smoothing, noise floor estimation
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  Band features: bandpower, occupancy, anomaly detection
         โ”‚
         โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  GPS Alignment  โ”‚  Synthetic GPS route (configurable speed/path)
โ”‚  & Features     โ”‚  Aligns IQ frames with GPS fixes
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ”‚
         โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Geo            โ”‚  RAPIDS cuDF: GPU-accelerated groupby aggregation
โ”‚  Aggregation    โ”‚  Tile grid: configurable size (e.g., 20m ร— 20m)
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  Metrics: mean/max bandpower, occupancy per tile
         โ”‚
         โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Visualization  โ”‚  Streamlit: Real-time dashboard
โ”‚  & Export       โ”‚  PyDeck: 2D/3D geospatial heatmaps (Deck.gl)
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  Plotly: Spectrum & waterfall plots
                     Export: Parquet (frames/tiles) + GeoJSON (tiles)

Data Flow: IQ samples โ†’ GPU DSP โ†’ Features โ†’ Tile Aggregation โ†’ Visualization


๐Ÿš€ Quick Start

Prerequisites

  • GPU: NVIDIA GPU with CUDA Compute Capability 7.0+ (Volta, Turing, Ampere, Ada, Hopper)
  • CUDA: 12.x or 13.x with matching driver
  • RAM: 16 GB+ recommended
  • OS: Linux (Ubuntu 20.04+) or Windows WSL2
  • Conda: Miniconda or Anaconda

Installation

  1. Clone the repository

    git clone https://github.com/yourusername/RF_Intelligence.git
    cd RF_Intelligence
  2. Create conda environment

    bash conda/create_env.sh
    # This creates a 'rapids' environment with CUDA 12 or 13 (auto-detected)
  3. Activate environment

    conda activate rapids
  4. Verify installation

    ./verify.sh
    # Runs comprehensive checks: environment, modules, synthetic data, DSP, export

Running the Dashboard

conda activate rapids
streamlit run src/๐Ÿ“ก_RF_Observatory.py

OR (backward compatible):

streamlit run src/streamlit_app.py

Open your browser to http://localhost:8501


๐Ÿ“Š Dashboard Features

The platform includes three interactive pages, each optimized for specific use cases:


๐Ÿ“ก Page 1: RF Observatory (Main Dashboard)

The primary interface for real-time RF spectrum analysis and geospatial visualization.

1. RF Spectrum (2D)

  • Real-time PSD plot with current, smoothed, and noise floor traces
  • Configurable frequency bands (e.g., CBRS Band 48, 5G n77)
  • Live bandpower and occupancy metrics

2. Waterfall / Spectrogram (2D)

  • Time-frequency heatmap showing spectral evolution
  • Configurable colormap and history depth
  • Frequency axis aligned with center frequency

3. Geospatial RF Map (2D/3D)

  • 2D Heatmap: Color-coded tiles showing RF signal strength
  • 3D Extruded Map: Column height represents signal power
  • Drone Marker: Yellow helicopter marker shows current GPS position
  • Interactive: Click tiles for detailed metrics (lat/lon, power, frame count)

4. DSP Processing Summary

  • Real-time throughput metrics (frames/sec, windows/sec, samples/sec)
  • FFT parameters (size, window type, overlap)
  • PSD computation pipeline breakdown
  • Throughput relationships (theoretical vs. measured)

5. System Status

  • GPU detection and memory usage
  • RAPIDS RMM pool statistics
  • Pipeline health monitor (IQ, GPS, DSP, Geo, UI)

๐Ÿ–ฅ๏ธ Page 2: GPU / HPC Monitor (Performance Telemetry)

Purpose: Real-time GPU and system performance monitoring for HPC/CUDA workloads.

Why This Matters: Understanding GPU utilization is critical for optimizing RF signal processing pipelines. This page provides live telemetry to help you:

  • Identify bottlenecks: Is the GPU idle? Overloaded? Memory-bound?
  • Optimize batch sizes: Larger batches = better GPU utilization
  • Monitor thermal/power: Ensure sustained performance without throttling
  • Validate CUDA acceleration: Prove that GPU processing is actually happening

Key Metrics Explained (for non-GPU experts):

GPU Utilization (%)

  • What it is: Percentage of time the GPU cores are actively computing
  • Good values: 30-80% for real-time applications
  • Low (<10%): GPU is idle most of the time โ†’ increase batch size or FFT size
  • High (>90%): GPU is saturated โ†’ may cause UI lag

VRAM (Video RAM)

  • What it is: GPU memory used for storing data (IQ samples, FFT results, etc.)
  • Why it matters: Running out of VRAM causes crashes or slowdowns
  • Pressure gauge: Shows how close you are to the limit (green = safe, red = danger)

Power Draw (W)

  • What it is: Electrical power consumed by the GPU
  • Why it matters: Higher power = more heat โ†’ potential thermal throttling
  • Typical values: 50-300W depending on GPU model and workload

Frames/sec & Windows/sec

  • Frames/sec: How many IQ data frames are processed per second
  • Windows/sec: How many FFT windows are computed per second
  • Why it matters: Higher = better throughput, but must balance with UI responsiveness

Batch Size

  • What it is: Number of frames processed before updating the UI
  • Trade-off: Larger batches = better GPU utilization but slower UI updates
  • Default: 5 frames (balanced for responsiveness)

CPU Usage & Thread Count

  • What it is: Python process CPU usage and number of threads
  • Why it matters: High CPU usage may indicate Python overhead (not GPU-bound)
  • Concurrency: More threads = better parallelism (but diminishing returns)

Features:

  • Live GPU Utilization Timeline: GPU%, VRAM, Power over time
  • Memory Breakdown: Donut chart + pressure gauge
  • Throughput Gauges: FPS, WPS, Batch size
  • Concurrency Metrics: CPU%, thread count over time
  • Temperature Timeline: GPU thermal monitoring

Performance Control:

  • Opt-in monitoring: Disabled by default to minimize overhead
  • Adjustable refresh rate: 0.5-5 Hz (default 2 Hz)
  • History length: 30-300 seconds of telemetry data

๐Ÿ’ก Tip: Enable this page only when you need to diagnose performance issues or demonstrate GPU acceleration.


๐Ÿ“Š Page 3: Raw Data Stream (Low-Level Inspection)

Purpose: Real-time inspection of raw IQ samples, GPS fixes, and DSP features for debugging and validation.

Why This Matters: Sometimes you need to see the "raw" data to:

  • Debug signal issues: Are IQ samples valid? Is GPS working?
  • Validate DSP pipeline: Are FFT results correct? Is noise floor reasonable?
  • Understand data flow: What does each processing stage produce?

What You'll See:

๐ŸŒŠ IQ Samples (Raw RF Data)

  • What it is: Complex numbers (I + jQ) representing the RF signal
  • I (In-phase): Real component of the signal
  • Q (Quadrature): Imaginary component of the signal
  • Why complex?: Captures both amplitude and phase information
  • Display: First/last 10 samples + statistics (min, max, mean, std)

๐Ÿ›ฐ๏ธ GPS Fix

  • What it is: Position data from GPS source (synthetic or real)
  • Fields: Latitude, longitude, altitude, heading, speed
  • Why it matters: Links RF measurements to geographic locations

๐Ÿ”ฌ DSP Features

  • What it is: Processed RF metrics from the DSP pipeline
  • Frequency bins: FFT output frequencies (Hz)
  • PSD values: Power spectral density (dB) for each frequency
  • Noise floor: Estimated background noise level
  • Bandpower: Total power in specific frequency bands
  • Occupancy: Percentage of band above noise threshold

Performance Control:

  • Opt-in streaming: Disabled by default to minimize overhead
  • Adjustable update rate: 1-20 Hz
  • Sample limit: Display up to 2000 IQ samples (configurable)

๐Ÿ’ก Tip: Enable this page only when you need to inspect raw data. Keeping it disabled improves main dashboard performance.


๐ŸŽฏ Optimal Workflow

Normal Operation:

  • RF Observatory: Always active (main dashboard)
  • GPU HPC Monitor: Disabled (enable when optimizing performance)
  • Raw Data Stream: Disabled (enable when debugging)

Performance Tuning:

  1. Enable GPU HPC Monitor
  2. Observe GPU utilization and batch size
  3. Adjust frames_per_refresh and fft_size in config
  4. Disable monitor when done

Debugging:

  1. Enable Raw Data Stream
  2. Inspect IQ samples and DSP features
  3. Verify GPS alignment
  4. Disable stream when done

โš™๏ธ Configuration

Edit config/default.yaml to customize:

RF Parameters

rf:
  center_freq_hz: 3_550_000_000  # 3.55 GHz (CBRS mid-band)
  sample_rate_sps: 30_720_000    # 30.72 MS/s (5G bandwidth)
  fft_size: 4096                 # FFT size (frequency resolution)

DSP Settings

dsp:
  window_type: "hann"            # Window function
  smoothing_factor: 0.2          # EMA alpha
  noise_floor_percentile: 10     # Noise floor estimation
  overlap_fraction: 0.0          # FFT overlap (0.0 = no overlap)

Geospatial Settings

geo:
  map_center_lat: 37.7946        # San Francisco (example)
  map_center_lon: -122.3999
  tile_size_meters: 20.0         # 20m ร— 20m tiles
  grid_extent_meters: 2500.0     # 2.5km ร— 2.5km coverage
  aggregate_window_frames: 5     # Frames per tile aggregation

Performance

performance:
  update_rate_hz: 10.0           # UI refresh rate
  max_frames_buffer: 1000        # Frame history limit
  rmm_pool_size_gb: null         # RMM pool (null = disabled)

๐Ÿงช Synthetic Data Mode

The platform includes a synthetic data generator that simulates realistic RF environments without requiring hardware:

  • IQ Signal: 5G-like OFDM carriers + configurable interference (burst jammer, swept tone)
  • GPS Route: Configurable speed (default 50 m/s), grid-walk pattern across city
  • Deterministic: Reproducible results with seed control

Use Cases:

  • Development and testing without SDR hardware
  • Demonstrations and training
  • Algorithm validation with known ground truth

๐Ÿ› ๏ธ Technology Stack

Component Technology
GPU Computing CuPy, cuFFT, cuSignal (RAPIDS)
Data Processing RAPIDS cuDF (GPU DataFrames)
Memory Management RAPIDS RMM (optional)
UI Framework Streamlit
Visualization PyDeck (Deck.gl), Plotly
Geospatial Shapely, GeoJSON
Configuration PyYAML
Language Python 3.11

๐Ÿ“ Project Structure

RF_Intelligence/
โ”œโ”€โ”€ conda/                    # Environment setup scripts
โ”‚   โ”œโ”€โ”€ create_env.sh         # Auto-detects CUDA version
โ”‚   โ”œโ”€โ”€ environment_cuda12.yml
โ”‚   โ””โ”€โ”€ environment_cuda13.yml
โ”œโ”€โ”€ config/
โ”‚   โ””โ”€โ”€ default.yaml          # Central configuration
โ”œโ”€โ”€ assets/                   # Auto-generated synthetic data
โ”‚   โ”œโ”€โ”€ maps/                 # GeoJSON base maps
โ”‚   โ””โ”€โ”€ routes/               # GPS routes (CSV)
โ”œโ”€โ”€ outputs/                  # Exported data (Parquet, GeoJSON)
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ streamlit_app.py      # Main UI entry point
โ”‚   โ”œโ”€โ”€ common/               # Types, config, timebase, system status
โ”‚   โ”œโ”€โ”€ ingest/               # IQ/GPS sources (synthetic + hardware stubs)
โ”‚   โ”œโ”€โ”€ dsp/                  # GPU DSP pipeline (FFT, PSD, features)
โ”‚   โ”œโ”€โ”€ geo/                  # Tiling, aggregation, geometry, export
โ”‚   โ”œโ”€โ”€ ui/                   # Streamlit components (spectrum, map, controls)
โ”‚   โ””โ”€โ”€ perf/                 # RMM, benchmarks, profiling
โ”œโ”€โ”€ docs/                     # Architecture and guides
โ”‚   โ”œโ”€โ”€ ARCHITECTURE.md
โ”‚   โ”œโ”€โ”€ HARDWARE_INTEGRATION.md
โ”‚   โ”œโ”€โ”€ INTERFACES.md
โ”‚   โ”œโ”€โ”€ PERFORMANCE.md
โ”‚   โ””โ”€โ”€ UI_GUIDE.md
โ”œโ”€โ”€ tests/                    # Unit and integration tests
โ”œโ”€โ”€ verify.sh                 # Comprehensive verification script
โ””โ”€โ”€ README.md

๐ŸŽ“ Use Cases

  1. Spectrum Observability: Monitor RF activity patterns over time and geography
  2. Interference Detection: Identify anomalous signals (jammers, unintended emissions)
  3. Coverage Analysis: Map signal strength for network planning
  4. 5G Research: Study sub-6 GHz band dynamics (CBRS, n77, n78)
  5. Education: Teach DSP, GPU computing, and geospatial analytics

๐Ÿ”ฎ Future Enhancements

  • Real-time Hardware Integration: RTL-SDR, USRP, LimeSDR via SoapySDR/UHD
  • Background Worker: Decouple data ingestion from UI for sustained high-rate processing
  • Advanced DSP: Welch's method, STFT, modulation classification
  • Multi-Drone Support: Fleet visualization with independent GPS paths
  • Cloud Deployment: Scalable processing with GPU clusters
  • ML Integration: Anomaly detection, signal classification

๐Ÿ“š Documentation


โš ๏ธ Limitations & Disclaimers

This platform does NOT:

  • Decode user data or demodulate encrypted traffic
  • Transmit RF signals (receive-only)
  • Track individuals or violate privacy
  • Implement SDR firmware or low-level hardware drivers

Intended Use: Research, education, spectrum monitoring, and network analysis in compliance with local regulations.


๐Ÿค Contributing

Contributions are welcome! Areas of interest:

  • Hardware source implementations (RTL-SDR, USRP, HackRF)
  • Additional DSP algorithms (Welch, MUSIC, cyclostationary analysis)
  • Performance optimizations (kernel fusion, multi-GPU)
  • UI enhancements (custom colormaps, animation controls)

๐Ÿ“„ License

MIT License - See LICENSE for details


๐Ÿ™ Acknowledgments

  • RAPIDS AI: GPU-accelerated data science ecosystem (cuDF, cuSignal, CuPy, RMM)
  • Streamlit: Rapid web app development framework
  • Deck.gl / PyDeck: High-performance geospatial visualization
  • Plotly: Interactive plotting library
  • NVIDIA: CUDA toolkit and GPU computing platform

๐Ÿ“ง Contact

For questions, issues, or collaboration opportunities, please open an issue on GitHub.


Built with โค๏ธ for the RF and GPU computing communities

About

GPU-accelerated RF spectrum observability platform with real-time DSP, CUDA/RAPIDS processing, and 2D/3D geospatial visualization.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published