With the HackRF One it is posible to send a fake GPS signal to other devices.
You need the following parts:
– HackRF One (can also be a Chinese clone)
– External TCXO (as GPS needs high precision)
– Antenna (best is a dedicated GPS antenna)
– GNU Radio and HackRF tools
sudo apt install gnuradio libhackrf0 hackrf libhackrf-dev
Check if you see 0x01 with (means TXCO is installed):
hackrf_debug --si5351c -n 0 -r
1. Download the GPS-SDR-SIM software
git clone https://github.com/osqzss/gps-sdr-sim.git
2. Compile it
3. Get the current satellite positions from NASA
Download from ftp://cddis.gsfc.nasa.gov/gnss/data/daily/ the current file under brdc and copy it to the folder GPS-SDR-SIM.
(Be patient, the website seems to be unreachable from time to time)
You can automate this with this script (inside an .sh file):
#!/bin/sh day=$(date +%j) year=$(date +%Y) yr=$(date +%y) wget "ftp://cddis.gsfc.nasa.gov/gnss/data/daily/$year""/brdc/brdc""$day""0.$yr""n.Z" uncompress "brdc""$day""0.$yr""n.Z" echo "brdc""$day""0.$yr""n.Z"
4. Generate the signal file with the static position (coordinates) you want to send
./gps-sdr-sim -b 8 -e YOUR_BRDC_FILE_HERE -l 40.812800,-60.005900,100
5. Send the signal
sudo hackrf_transfer -t gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 0
You can also generate routes in the form of an NMEA file with the Labsat simulator: https://www.labsat.co.uk/index.php/en/free-gps-nmea-simulator-software
More information: https://github.com/osqzss/gps-sdr-sim
Please use this responsively. Bear in mind that it can have an impact on other devices if you send it outside a closed circuit.