Skip to content

simonjester1776/RogueWaveSDR_firmware_full

Repository files navigation

RogueWaveSDR

License: GPL v3 Platform: Raspberry Pi SDR: HackRF

A production-grade, hardened Counter-UAS (Unmanned Aerial System) follower jammer built with open-source SDR technology.

⚠️ Legal Notice

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.


Features

Core Capabilities

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

Hardware Support

  • 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)

System Architecture

┌─────────────────────────────────────────────────────────────────┐
│                     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     │
└─────────────────────────────────────────────────────────────────┘

Installation

Prerequisites

# 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.GPIO

Clone Repository

cd ~/
git clone https://github.com/yourusername/RogueWaveSDR.git
cd RogueWaveSDR

Build C++ OOT Module

cd gr-fastdetect
mkdir build && cd build
cmake ..
make -j4
sudo make install
sudo ldconfig

Verify Installation

# Check if the OOT module is installed
python3 -c "from gnuradio import fastdetect; print('fastdetect module loaded successfully')"

# Find your HackRF serial numbers
hackrf_info

Configuration

1. Update Serial Numbers

Edit 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_info

2. Configure Frequency Bands

Modify config/config.json to adjust scanning bands:

{
  "frequency_bands": {
    "2.4 GHz": { "start": 2400000000, "end": 2483500000 },
    "5.8 GHz": { "start": 5725000000, "end": 5875000000 }
  }
}

3. Adjust Detection Threshold

{
  "sdr_parameters": {
    "detection_threshold_factor": 5.0
  }
}

Higher values = less sensitive (fewer false positives) Lower values = more sensitive (may detect weaker signals)


Usage

Basic Operation

# Make script executable
chmod +x roguewavesdr.py

# Run with default configuration
sudo python3 roguewavesdr.py

Command Line Options

# 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

Monitoring

# View real-time logs
tail -f /home/pi/RogueWaveSDR.log

# Check system temperature
vcgencmd measure_temp

# Monitor SDR status
hackrf_info

Hardware Setup

Wiring Diagram

Raspberry 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

Important Hardware Notes

  1. Antenna Isolation: Keep RX and TX antennas well separated
  2. Dummy Load: Use for all initial testing - NO antenna connected
  3. Power Supply: Ensure adequate power for RPi5 + dual HackRF + PA
  4. Cooling: Monitor temperature - add heatsinks/fans if needed
  5. Grounding: Proper RF grounding essential for safety and performance

Safety Procedures

Pre-Operation Checklist

  • 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

Emergency Shutdown

# 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

Troubleshooting

Common Issues

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

Debug Mode

# Enable verbose logging
sudo python3 roguewavesdr.py --debug

# Check GNU Radio blocks
python3 -c "from gnuradio import fastdetect; help(fastdetect.detector)"

Development

Project Structure

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

Building from Source

# Clean build
cd gr-fastdetect
rm -rf build
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
sudo make install
sudo ldconfig

Running Tests

cd tests
python3 -m pytest test_detector.py -v

Performance Specifications

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

Contributing

We welcome contributions! Please follow these guidelines:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Code Standards

  • C++: Follow GNU Radio coding style
  • Python: PEP 8 compliant
  • All code must include proper error handling
  • Add tests for new features

License

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.


Acknowledgments

  • 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

Disclaimer

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.


Contact

For questions, issues, or contributions:


Proceed responsibly, and good luck!

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors