{"id":33609364,"url":"https://github.com/biblink02/websdr-transceiver","last_synced_at":"2026-03-09T04:02:30.948Z","repository":{"id":319865314,"uuid":"1079805069","full_name":"Biblink02/WebSDR-Transceiver","owner":"Biblink02","description":"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.","archived":false,"fork":false,"pushed_at":"2026-01-19T11:19:46.000Z","size":11980,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-19T18:19:07.637Z","etag":null,"topics":["gnuradio","kind","kubernetes","nginx-proxy-manager","socket-io","vue"],"latest_commit_sha":null,"homepage":"https://websdr.fbi.h-da.de/","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Biblink02.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-20T12:16:16.000Z","updated_at":"2026-01-19T11:19:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"d55e7b19-4366-4281-a6b6-3a518d08e3be","html_url":"https://github.com/Biblink02/WebSDR-Transceiver","commit_stats":null,"previous_names":["biblink02/websdr-transceiver"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Biblink02/WebSDR-Transceiver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Biblink02%2FWebSDR-Transceiver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Biblink02%2FWebSDR-Transceiver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Biblink02%2FWebSDR-Transceiver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Biblink02%2FWebSDR-Transceiver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Biblink02","download_url":"https://codeload.github.com/Biblink02/WebSDR-Transceiver/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Biblink02%2FWebSDR-Transceiver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30282541,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T02:57:19.223Z","status":"ssl_error","status_checked_at":"2026-03-09T02:56:26.373Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gnuradio","kind","kubernetes","nginx-proxy-manager","socket-io","vue"],"created_at":"2025-11-30T19:02:36.310Z","updated_at":"2026-03-09T04:02:30.940Z","avatar_url":"https://github.com/Biblink02.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WebSDR-Transceiver\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![Docker](https://img.shields.io/badge/Docker-ready-blue.svg)]()\n[![Kubernetes](https://img.shields.io/badge/Kubernetes-ready-blue.svg)]()\n[![GNU Radio](https://img.shields.io/badge/GNU%20Radio-3.11-orange.svg)]()\n\nThis 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.\n\nThis project was developed as part of the BIP (Blended Intensive Programme) between:\n- University of Padua\n- Télécom Saint-Étienne\n- Technical University of Darmstadt\n\n## Overview\n\nThe system is built as a distributed microservice architecture running on Kubernetes. It bridges hardware Software Defined Radio (SDR) interfaces with a modern web UI.\n\n### Key Features\n- Real-time reception from the QO-100 satellite\n- SSB demodulation performed server-side\n- Web interface with live spectrogram and audio playback\n- Dynamic worker allocation for multiple concurrent listeners\n- Containerized architecture suitable for scaling\n\n## Architecture\n\nThe application is containerized and orchestrated using Kubernetes (Kind).\n\n- **Frontend:** Vue 3 + Vite web UI\n- **Backend Controller:** Python/FastAPI, manages WebSocket connections, worker orchestration and control logic\n- **SDR Server:** Interfaces with the PlutoSDR and streams I/Q data via ZeroMQ\n- **Graphics Worker:** Computes FFT data and produces spectrogram frames\n- **Audio Workers:** Each worker performs DSP demodulation for a specific requested frequency band\n\n## Prerequisites\n\n- Docker\n- Kind\n- kubectl\n- GNU Radio (required locally for grcc)\n\n## Installation \u0026 Deployment\n\nClone the repository:\n```bash\ngit clone [https://github.com/Biblink02/WebSDR-Transceiver.git](https://github.com/Biblink02/WebSDR-Transceiver.git)\ncd WebSDR-Transceiver\n```\n\n**Full Deployment (First Run or Code Changes):**\nIf you are running for the first time or have modified the source code (Python, Vue.js, GRC files), run:\n```bash\n./deploy.sh\n```\n\n**Fast Configuration Reload:**\nIf you only modified `config/config.yaml` (e.g., tuning frequencies, gains, or ports) and want to apply changes immediately without rebuilding Docker images:\n```bash\n./reload.sh\n# Or manually: bash kubernetes/start-cluster.sh\n```\n\nAccess the web interface:\n```\nhttp://localhost\n```\n\n## Configuration\n\nThe 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.\n\n### Key Settings to Customize\n\nBefore 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`.\n\n## Development Team (PRI05)\n\n- Alberto (Biblink02) — University of Padua\n- Alexandre (TheAnacondA57) — University of Télécom Saint-Étienne\n- Clément (clfusero) — University of Télécom Saint-Étienne\n- Fatemah (Pitclair) — University of Padua\n- Lorenzo (Fireentity) — University of Padua\n- Mihir (M1keP1) — Technical University of Darmstadt\n- Vedant (vedant-224) — Technical University of Darmstadt\n\n## License\nMIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbiblink02%2Fwebsdr-transceiver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbiblink02%2Fwebsdr-transceiver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbiblink02%2Fwebsdr-transceiver/lists"}