A production-grade, hardened Counter-UAS (Unmanned Aerial System) follower jammer built with open-source SDR technology.
THIS SOFTWARE IS FOR EDUCATIONAL AND RESEARCH PURPOSES ONLY
- RF Exposure Hazard: High power RF emissions - dangerous within 12m of antenna
- Licensing Required: Experimental radio license mandatory for any transmission
- Canada: ISED experimental license required
- USA: FCC experimental license required
- Interference Risk: Can disrupt WiFi, Bluetooth, and other ISM band devices
- Test Only: Use dummy load and shielded environments for testing
By using this software, you acknowledge full responsibility for compliance with all applicable laws and regulations.
| Feature | Implementation |
|---|---|
| Fast Detection | C++ OOT block with FFT and VOLK acceleration (<20ms latency) |
| Adaptive Noise Floor | Median-based dynamic threshold estimation |
| Multi-Band Scanning | Automatic cycling through 2.4 GHz, 5.8 GHz, 900 MHz, 433 MHz |
| Follower Jamming | Real-time frequency tracking and retuning |
| GPIO PA Control | Hardware power amplifier enable/disable |
| Watchdog Timer | Automatic jammer timeout protection |
| Thermal Monitoring | RPi5 temperature monitoring with emergency shutdown |
| Extended Precision | Lower sample rates for narrowband detection |
| Graceful Shutdown | Clean GPIO cleanup and resource release |
| Comprehensive Logging | Detailed operation logs with error handling |
- Platform: Raspberry Pi 5 (or RPi4)
- SDR Hardware: Dual HackRF Pro (RX + TX)
- Power Amplifier: 50W PA with GPIO control
- Antenna: 18dBi Yagi (or suitable directional antenna)
┌─────────────────────────────────────────────────────────────────┐
│ RogueWaveSDR System │
├─────────────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ RX HackRF │───▶│ Detector │───▶│ Jammer │ │
│ │ (Receive) │ │ (C++ OOT) │ │ Control │ │
│ └──────────────┘ └──────────────┘ └──────┬───────┘ │
│ ▲ │ │
│ │ ▼ │
│ ┌──────┴──────┐ ┌──────────────┐ │
│ │ RX Antenna │ │ TX HackRF │ │
│ │ (Yagi 18dBi)│ │ (Transmit) │ │
│ └─────────────┘ └──────┬───────┘ │
│ │ │
│ ┌────────┴────────┐ │
│ │ 50W PA + GPIO │ │
│ │ (Pin 17) │ │
│ └────────┬────────┘ │
│ │ │
│ ┌────────┴────────┐ │
│ │ TX Antenna │ │
│ │ (Yagi 18dBi) │ │
│ └─────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ Raspberry Pi 5 + Thermal Monitor + Watchdog + Band Scanner │
└─────────────────────────────────────────────────────────────────┘
# Update system
sudo apt update && sudo apt upgrade -y
# Install dependencies
sudo apt install -y \
gnuradio-dev \
libvolk2-dev \
libsoapysdr-dev \
cmake \
build-essential \
git \
python3-pip \
python3-numpy
# Install Python dependencies
pip3 install numpy RPi.GPIOcd ~/
git clone https://github.com/yourusername/RogueWaveSDR.git
cd RogueWaveSDRcd gr-fastdetect
mkdir build && cd build
cmake ..
make -j4
sudo make install
sudo ldconfig# Check if the OOT module is installed
python3 -c "from gnuradio import fastdetect; print('fastdetect module loaded successfully')"
# Find your HackRF serial numbers
hackrf_infoEdit config/config.json and replace placeholder serial numbers:
{
"hardware": {
"rx_serial": "YOUR_RX_HACKRF_SERIAL",
"tx_serial": "YOUR_TX_HACKRF_SERIAL"
}
}Find your serial numbers with:
hackrf_infoModify config/config.json to adjust scanning bands:
{
"frequency_bands": {
"2.4 GHz": { "start": 2400000000, "end": 2483500000 },
"5.8 GHz": { "start": 5725000000, "end": 5875000000 }
}
}{
"sdr_parameters": {
"detection_threshold_factor": 5.0
}
}Higher values = less sensitive (fewer false positives) Lower values = more sensitive (may detect weaker signals)
# Make script executable
chmod +x roguewavesdr.py
# Run with default configuration
sudo python3 roguewavesdr.py# Use custom configuration file
sudo python3 roguewavesdr.py --config /path/to/config.json
# Enable debug output
sudo python3 roguewavesdr.py --debug
# Test mode (no actual transmission)
sudo python3 roguewavesdr.py --test-mode# View real-time logs
tail -f /home/pi/RogueWaveSDR.log
# Check system temperature
vcgencmd measure_temp
# Monitor SDR status
hackrf_infoRaspberry Pi 5
│
├── GPIO 17 ───────▶ PA Enable (with level shifter if needed)
│
├── USB 3.0 Port 1 ───▶ HackRF RX
│
└── USB 3.0 Port 2 ───▶ HackRF TX
│
└──▶ Driver Amp (if required)
│
└──▶ 50W PA
│
└──▶ TX Antenna
RX Antenna (isolated from TX) ───▶ HackRF RX
- Antenna Isolation: Keep RX and TX antennas well separated
- Dummy Load: Use for all initial testing - NO antenna connected
- Power Supply: Ensure adequate power for RPi5 + dual HackRF + PA
- Cooling: Monitor temperature - add heatsinks/fans if needed
- Grounding: Proper RF grounding essential for safety and performance
- Experimental license obtained and valid
- Dummy load connected for testing
- Exclusion zone established (12m minimum)
- All personnel cleared from RF hazard area
- Temperature monitoring active
- Emergency shutdown procedure known
- Log file location confirmed
# Method 1: Keyboard interrupt
Ctrl+C
# Method 2: Kill process
sudo pkill -f roguewavesdr.py
# Method 3: GPIO power button (if configured)
# Press power button connected to GPIO 18| Issue | Solution |
|---|---|
ImportError: No module named fastdetect |
Rebuild and install OOT module: sudo make install && sudo ldconfig |
Only 1 SDR found |
Check USB connections, verify both HackRFs are powered |
GPIO permission denied |
Run with sudo or add user to gpio group |
High temperature warnings |
Add cooling, reduce scan rate, check ventilation |
False detections |
Increase detection_threshold_factor in config |
Missed detections |
Decrease detection_threshold_factor, check antenna connections |
# Enable verbose logging
sudo python3 roguewavesdr.py --debug
# Check GNU Radio blocks
python3 -c "from gnuradio import fastdetect; help(fastdetect.detector)"RogueWaveSDR/
├── gr-fastdetect/ # C++ OOT GNU Radio module
│ ├── include/ # Public headers
│ ├── lib/ # Implementation files
│ ├── build/ # Build directory
│ └── CMakeLists.txt # Build configuration
├── config/
│ └── config.json # Runtime configuration
├── docs/ # Additional documentation
├── scripts/ # Utility scripts
├── tests/ # Test suite
├── roguewavesdr.py # Main control script
├── LICENSE
└── README.md
# Clean build
cd gr-fastdetect
rm -rf build
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
sudo make install
sudo ldconfigcd tests
python3 -m pytest test_detector.py -v| Parameter | Value |
|---|---|
| Detection Latency | < 20 ms |
| FFT Size | 1024 samples |
| Sample Rates | 5 MHz (precision) / 20 MHz (wideband) |
| Scan Cycle Time | ~12 seconds (4 bands × 3s dwell) |
| Jammer Ramp Time | ~40 ms |
| Watchdog Timeout | 3.5 seconds |
| Temperature Check | Every 5 seconds |
We welcome contributions! Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- C++: Follow GNU Radio coding style
- Python: PEP 8 compliant
- All code must include proper error handling
- Add tests for new features
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
IMPORTANT: This software includes additional legal notices regarding RF safety and licensing requirements. Please read the full LICENSE file before use.
- GNU Radio - The free and open-source software radio ecosystem
- HackRF - Great Scott Gadgets for the HackRF hardware
- VOLK - Vector-Optimized Library of Kernels
- SoapySDR - Vendor and platform neutral SDR support library
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
For questions, issues, or contributions:
- GitHub Issues: https://github.com/simonjester1776/RogueWaveSDR_firmware_full/issues
- Email: simonjester1776@gmail.com
Proceed responsibly, and good luck!