A real-time spectrum analyzer and signal detection tool leveraging RTL-SDR hardware for RF monitoring and jamming detection.
Features • Installation • Usage • Configuration • Contributing
- 📊 Real-time Visualization: Advanced spectrum analysis with waterfall display
- 🔍 Smart Detection: Automatic signal anomaly and jamming detection
- 📈 Dynamic Analysis: Adaptive baseline calculation and threshold adjustment
- ⚙️ Flexible Configuration: Fully customizable detection parameters
- 🌐 Network Support: Built-in RTL-TCP compatibility for remote operation
Before you begin, ensure you have:
- Python 3.8 or newer
- RTL-SDR hardware
- Active RTL-TCP server (docker-compose.yml)
# Clone the repository
git clone https://github.com/msalexms/rtl-sdr-analyzer.git
cd rtl-sdr-analyzer
# Install required packages
pip install -r requirements.txt
- Start the RTL-TCP server:
cd docker
docker-compose up -d
- Launch the analyzer:
python scripts/run_analyzer.py --freq 915e6 --sample-rate 2.048e6
Option | Description | Default |
---|---|---|
--config |
Path to configuration file | None |
--host |
RTL-TCP server host | 192.168.31.34 |
--port |
RTL-TCP server port | 1234 |
--freq |
Center frequency (Hz) | 915e6 |
--sample-rate |
Sample rate (Hz) | 2.048e6 |
--fft-size |
FFT size | 2048 |
--power-threshold |
Signal power threshold (dB) | -70 |
--bandwidth-threshold |
Minimum signal bandwidth (Hz) | 100000 |
--z-score-threshold |
Statistical deviation threshold | 1.5 |
--detection-window |
Analysis window (samples) | 5 |
--min-duration |
Minimum event duration (seconds) | 0.1 |
--test-mode |
Enable test mode | false |
--waterfall-length |
Waterfall display length | 50 |
--update-interval |
Display update interval (ms) | 50 |
You can alternatively run it with a YAML configuration file:
python scripts/run_analyzer.py --config config.yml
Example config.yml
:
rtl_tcp:
host: "192.168.31.34"
port: 1234
receiver:
frequency: 98000000 # 98 MHz
sample_rate: 2048000 # 2.048 MHz
fft_size: 2048
detector:
power_threshold: -70
bandwidth_threshold: 100000 # 100 kHz
z_score_threshold: 1.5
detection_window: 5
min_duration: 0.1
test_mode: false
display:
waterfall_length: 50
update_interval: 50 # milliseconds
Spectrogram showing distinct signal patterns during walkie-talkie transmission at 446 MHz
- 📱 GSM/LTE: Characteristic wide-band signals
- 📻 FM Radio: Strong, stable signals in the 88-108 MHz range
- 🛜 Wi-Fi: Periodic bursts in the 2.4/5 GHz bands
- 🎮 RF Remote Controls: Brief, narrow-band transmissions
We welcome contributions! To contribute:
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Developed with ❤️ by RF enthusiasts