https://github.com/biblink02/websdr-transceiver
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.
https://github.com/biblink02/websdr-transceiver
gnuradio kind kubernetes nginx-proxy-manager socket-io vue
Last synced: 4 months ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/biblink02/websdr-transceiver
- Owner: Biblink02
- License: other
- Created: 2025-10-20T12:16:16.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2026-01-19T11:19:46.000Z (5 months ago)
- Last Synced: 2026-01-19T18:19:07.637Z (5 months ago)
- Topics: gnuradio, kind, kubernetes, nginx-proxy-manager, socket-io, vue
- Language: Vue
- Homepage: https://websdr.fbi.h-da.de/
- Size: 11.4 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# WebSDR-Transceiver
[](LICENSE)
[]()
[]()
[]()
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:
```bash
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:
```bash
./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:
```bash
./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