A lightweight, performant SDR receiver focused on stability and audio quality. This is a ground-up rewrite to address previous performance issues (audio skipping).
- High Performance: Optimized DSP pipeline using FIR filters and polyphase decimation.
- Stable Streaming: Minimal latency and no audio skipping (ring buffer implemented).
- Audio & IQ Recording:
- Record demodulated audio to WAV.
- Capture raw IQ data for offline analysis.
- Scanning:
- Frequency Scanning: Sweep a range of frequencies (Start/End/Step) to find active signals.
- Memory Scanning: Cycle through saved bookmarks.
- Demodulation:
- WBFM: Wideband FM (Broadcast Radio).
- NBFM: Narrowband FM (Walkie Talkies, Emergency Services).
- AM: Amplitude Modulation (Air Traffic).
- Configuration: User-space configuration via
src/backend/config.json.
src/backend: Python-based SDR interface and DSP pipeline.src/frontend: Web-based visualization (Waterfall/Spectrum).src/shared: Common utilities.tests: Unit and integration tests.docs: Project documentation.scripts: Utility scripts for setup/running.recordings: Directory where Audio/IQ files are saved.
- Phase 1 (Complete): Stable RTL-TCP connection, minimal DSP, basic waterfall/spectrum visualization.
- Phase 2 (Complete): Audio demodulation (WBFM/NBFM), Audio/IQ Recording, and upgraded FIR-based DSP.
- Phase 3 (In Progress): Advanced decoders (ADSB, TV/ATV), Plugin Architecture.
- Python 3.9+
- RTL-SDR dongle (and
rtl_tcprunning or accessible)
- Clone the repository:
git clone https://github.com/google-deepmind/evilSDR.git cd evilSDR - Create a virtual environment (recommended):
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
- Copy the example configuration:
cp src/backend/config.json.example src/backend/config.json
- Edit
src/backend/config.jsonto match your environment (e.g.,rtl_host,rtl_port).
- Start the backend server:
python src/backend/server.py
- Open the frontend in your browser:
http://localhost:5555