Skip to content

A modular SDR (Software Defined Radio) receiver for QO-100, built on a Kubernetes-based microservice architecture with GNU Radio backend and a real-time web interface for spectrogram visualization and audio streaming.

License

Notifications You must be signed in to change notification settings

Biblink02/WebSDR-Transceiver

Repository files navigation

WebSDR-Transceiver

License: MIT Docker Kubernetes GNU Radio

This project provides a complete software suite for a ground station capable of receiving data from the QO-100 geostationary satellite. It includes a backend for signal processing and a web-based frontend that displays demodulated received signals via a waterfall chart (spectrogram) and enables real-time audio listening.

This project was developed as part of the BIP (Blended Intensive Programme) between:

  • University of Padua
  • Télécom Saint-Étienne
  • Technical University of Darmstadt

Overview

The system is built as a distributed microservice architecture running on Kubernetes. It bridges hardware Software Defined Radio (SDR) interfaces with a modern web UI.

Key Features

  • Real-time reception from the QO-100 satellite
  • SSB demodulation performed server-side
  • Web interface with live spectrogram and audio playback
  • Dynamic worker allocation for multiple concurrent listeners
  • Containerized architecture suitable for scaling

Architecture

The application is containerized and orchestrated using Kubernetes (Kind).

  • Frontend: Vue 3 + Vite web UI
  • Backend Controller: Python/FastAPI, manages WebSocket connections, worker orchestration and control logic
  • SDR Server: Interfaces with the PlutoSDR and streams I/Q data via ZeroMQ
  • Graphics Worker: Computes FFT data and produces spectrogram frames
  • Audio Workers: Each worker performs DSP demodulation for a specific requested frequency band

Prerequisites

  • Docker
  • Kind
  • kubectl
  • GNU Radio (required locally for grcc)

Installation & Deployment

Clone the repository:

git clone [https://github.com/Biblink02/WebSDR-Transceiver.git](https://github.com/Biblink02/WebSDR-Transceiver.git)
cd WebSDR-Transceiver

Full Deployment (First Run or Code Changes): If you are running for the first time or have modified the source code (Python, Vue.js, GRC files), run:

./deploy.sh

Fast Configuration Reload: If you only modified config/config.yaml (e.g., tuning frequencies, gains, or ports) and want to apply changes immediately without rebuilding Docker images:

./reload.sh
# Or manually: bash kubernetes/start-cluster.sh

Access the web interface:

http://localhost

Configuration

The entire system behavior is controlled by a single configuration file located at config/config.yaml. This makes the Frontend, Backend, and DSP workers utilize synchronized parameters.

Key Settings to Customize

Before running the cluster, you must update the iio_uri to match your hardware setup, and for deployment make sure to change also the WS_URL.

Development Team (PRI05)

  • Alberto (Biblink02) — University of Padua
  • Alexandre (TheAnacondA57) — University of Télécom Saint-Étienne
  • Clément (clfusero) — University of Télécom Saint-Étienne
  • Fatemah (Pitclair) — University of Padua
  • Lorenzo (Fireentity) — University of Padua
  • Mihir (M1keP1) — Technical University of Darmstadt
  • Vedant (vedant-224) — Technical University of Darmstadt

License

MIT License

About

A modular SDR (Software Defined Radio) receiver for QO-100, built on a Kubernetes-based microservice architecture with GNU Radio backend and a real-time web interface for spectrogram visualization and audio streaming.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •