GPS Spoofing & Route Simulation GUI for HackRF One and LimeSDR
GhostSignal is a professional desktop application for generating and transmitting spoofed GPS signals using SDR hardware. It provides a visual interface for picking exact coordinates on a map, designing multi-waypoint routes, selecting transport modes (walk, cycle, drive, boat, plane), and controlling HackRF / LimeSDR transmission parameters β all in one place.
β οΈ Legal notice: GPS spoofing is regulated or illegal in most jurisdictions outside of shielded RF labs. This tool is intended strictly for authorized research, development, and testing environments such as Faraday-cage labs, official drone testing sites, and academic research with proper authorization. Never transmit without explicit legal permission.
- πΊοΈ Interactive map β click to place waypoints, drag to reposition them
- π£οΈ Real road routing via OSRM (OpenStreetMap) β walk, cycle, drive modes use actual road geometry
βοΈ All transport modes β Walk / Cycle / Drive / Boat / Plane (straight-line for boat/plane)- π Simulation start time β set exact GPS timestamp for the simulation
- π‘ HackRF One & LimeSDR β switchable device, configurable TX gain (0β47 dB), frequency, and sample rate
- π’ GPS frequency presets β L1 (1575.42 MHz), L2, L5, GLONASS
- π₯οΈ Auto-generated CLI script β copy or download a ready-to-run
gps-sdr-sim+hackrf_transfershell script - πΎ Session save/load β save waypoints, settings, and routes as JSON files
- π Live position playback β moving dot on the map follows the route during simulation
- π₯οΈ Cross-platform β Linux and Windows (PyQt6)
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β GhostSignal GUI β
β βββββββββββββ ββββββββββββββββ ββββββββββββ β
β β Sidebar β β Map (OSM) β β HackRF β β
β β Transport β β Leaflet.js β β Panel β β
β β Waypoints β β OSRM Route β β CLI Gen β β
β β Save/Load β β Live Pos β β Log β β
β βββββββββββββ ββββββββββββββββ ββββββββββββ β
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββ
β generates
ββββββββββββββΌβββββββββββββ
β Shell Script β
β gps-sdr-sim β .bin β
β hackrf_transfer β TX β
βββββββββββββββββββββββββββ
| Tool | Version | Purpose |
|---|---|---|
| Python | β₯ 3.11 | Runtime |
| PyQt6 | β₯ 6.6.0 | GUI framework |
| PyQt6-WebEngine | β₯ 6.6.0 | Embedded map |
| gps-sdr-sim | latest | GPS I/Q baseband generator |
| hackrf | latest | HackRF One tools (hackrf_transfer) |
| LimeSuite / SoapySDR | optional | LimeSDR support |
PyQt6>=6.6.0
PyQt6-WebEngine>=6.6.0
requests>=2.31.0
# 1. Install system packages
sudo apt update
sudo apt install -y python3 python3-pip python3-venv git build-essential cmake
# 2. Install HackRF tools
sudo apt install -y hackrf
# 3. Build gps-sdr-sim from source
git clone https://github.com/osqzss/gps-sdr-sim.git
cd gps-sdr-sim
gcc gpssim.c -lm -O3 -o gps-sdr-sim
sudo cp gps-sdr-sim /usr/local/bin/
cd ..
# 4. Clone GhostSignal
git clone https://github.com/snb9042/ghostsignal.git
cd ghostsignal
# 5. Create virtual environment and install Python deps
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# 6. Run
python ghostsignal.py# 1. Install Python 3.11+ from https://python.org
# 2. Install HackRF Windows drivers from:
# https://github.com/greatscottgadgets/hackrf/releases
# 3. Build or download gps-sdr-sim:
# https://github.com/osqzss/gps-sdr-sim (pre-built .exe in releases)
# Add the folder to your PATH
# 4. Clone GhostSignal
git clone https://github.com/snb9042/ghostsignal.git
cd ghostsignal
# 5. Install Python deps
pip install -r requirements.txt
# 6. Run
python ghostsignal.py# Install LimeSuite
sudo apt install -y limesuite soapysdr-tools soapysdr-module-lms7
# Verify
SoapySDRUtil --findClick anywhere on the map to drop a waypoint. Each click adds a numbered marker:
- Green = start point
- Yellow = intermediate points
- Red = end point
Drag any marker to reposition it. Use the CLEAR button to remove all waypoints.
Choose from the left sidebar:
| Mode | Routing | Default Speed |
|---|---|---|
| πΆ Walk | Road footpaths | 5 km/h |
| π΄ Cycle | Cycling paths | 15 km/h |
| π Drive | Road network | 60 km/h |
| β΅ Boat | Straight line | 25 km/h |
| β Plane | Straight line | 800 km/h |
The route is automatically fetched from OSRM and drawn on the map. Distance and estimated duration are shown below the waypoint list.
Use the Simulation Start Time field to set the exact GPS timestamp your receiver will see. This is passed to gps-sdr-sim as the -T parameter.
In the right panel:
- Device β HackRF One or LimeSDR
- Frequency β Use presets (L1, L2, L5, GLONASS) or type a custom Hz value
- TX Gain β 0β47 dB (HackRF). Start at 30 dB for testing in a shielded environment
- Sample Rate β 2.6 Msps is the standard for GPS L1
The CLI Command tab auto-generates the exact shell commands needed:
# Step 1: Generate GPS I/Q baseband
gps-sdr-sim -e brdc.nav \
-l 42.69751,23.32415,100 \
-T 2026/03/27,19:00:00 \
-d 300 \
-o gps_sim.bin
# Step 2: Transmit with HackRF
hackrf_transfer -t gps_sim.bin \
-f 1575420000 \
-s 2600000 \
-a 1 -x 30 \
-RClick Copy or Save .sh to export the script. Download a RINEX navigation file (.nav) from CDDIS NASA or IGS.
Click βΆ TRANSMIT. The GUI will:
- Start the route playback animation (moving dot on map)
- Show live lat/lng in the status bar
- Show progress for the full route duration
Click β STOP TX to halt.
Use Save and Load buttons to persist your waypoints, route, and SDR settings as a .json file.
Override default tool paths if they are not in PATH:
export GPS_SDR_SIM=/path/to/gps-sdr-sim
export HACKRF_TRANSFER=/path/to/hackrf_transfer
export LIMESDR_TX=/path/to/SoapySDRUtilFor routes with multiple waypoints, GhostSignal generates a starting-point script. For true continuous route simulation, chain multiple gps-sdr-sim runs or use a GPS NMEA generator:
# Example: generate sequential segments
for i in 1 2 3; do
gps-sdr-sim -e brdc.nav -l $LAT_$i,$LNG_$i,100 -d 60 -o seg_$i.bin
done
cat seg_1.bin seg_2.bin seg_3.bin > full_route.bin
hackrf_transfer -t full_route.bin -f 1575420000 -s 2600000 -a 1 -x 30 -R| Problem | Solution |
|---|---|
hackrf_transfer: command not found |
Install hackrf package or add to PATH |
gps-sdr-sim: command not found |
Build from source and add to PATH |
| Map not loading | Check internet connection (OSM tiles require network) |
| LimeSDR not detected | Run SoapySDRUtil --find to verify driver |
| High CPU on route fetch | OSRM is a free public server β add retry on timeout |
| PyQt6-WebEngine missing | pip install PyQt6-WebEngine |
- True continuous NMEA route injection (stitch multi-segment I/Q)
- GLONASS / Galileo / BeiDou multi-constellation support
- Replay recorded
.nmeatrack files - Speed variation along route (acceleration / deceleration)
- Built-in RINEX downloader
- Docker container for headless operation
- gps-sdr-sim by Takuji Ebinuma β GPS signal generator
- HackRF by Great Scott Gadgets
- Leaflet β Interactive maps
- OpenStreetMap β Map data
- OSRM β Open Source Routing Machine
- Built with Perplexity Computer
MIT License β see LICENSE for details.


