{"id":21002699,"url":"https://github.com/mictronics/multi-sdr-gps-sim","last_synced_at":"2025-04-13T00:40:23.494Z","repository":{"id":43719498,"uuid":"337795963","full_name":"Mictronics/multi-sdr-gps-sim","owner":"Mictronics","description":"multi-sdr-gps-sim generates a IQ data stream on-the-fly to simulate a  GPS L1 baseband signal using a SDR platform like HackRF or ADLAM-Pluto.","archived":false,"fork":false,"pushed_at":"2025-01-17T08:08:19.000Z","size":123,"stargazers_count":207,"open_issues_count":0,"forks_count":53,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-04-04T03:10:05.586Z","etag":null,"topics":["curses","fifo","gps","hackrf","plutosdr","rinex","sdr","simulator"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mictronics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-02-10T17:14:17.000Z","updated_at":"2025-03-27T18:47:30.000Z","dependencies_parsed_at":"2024-11-19T23:03:46.789Z","dependency_job_id":null,"html_url":"https://github.com/Mictronics/multi-sdr-gps-sim","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mictronics%2Fmulti-sdr-gps-sim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mictronics%2Fmulti-sdr-gps-sim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mictronics%2Fmulti-sdr-gps-sim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mictronics%2Fmulti-sdr-gps-sim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mictronics","download_url":"https://codeload.github.com/Mictronics/multi-sdr-gps-sim/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248650414,"owners_count":21139671,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["curses","fifo","gps","hackrf","plutosdr","rinex","sdr","simulator"],"created_at":"2024-11-19T08:19:39.662Z","updated_at":"2025-04-13T00:40:23.465Z","avatar_url":"https://github.com/Mictronics.png","language":"C","readme":"# multi-sdr-gps-sim\n\nmulti-sdr-gps-sim generates a GPS L1 baseband signal IQ data stream, which is then transmitted by a\nsoftware-defined radio (SDR) platform. Supported at the moment are HackRF, ADLAM-Pluto and binary IQ file output.\nThe software interacts with the user through a curses based text user interface (TUI) in terminal.\n\nProject based on work of [Takuji Ebinuma](https://github.com/osqzss/) and [IvanKor](https://github.com/IvanKor).\n\n### Generating the GPS signal\n\nThe user is able to assign a static location directly through the command line or sends motion data through a predefined input file.\nIn addition the simulated position can be modified in realtime by user inputs.\n\nThe user also specifies the GPS satellite constellation through a GPS broadcast ephemeris file. The daily GPS broadcast ephemeris file\nis a merge of the individual site navigation files into one.\n\nThese files are then used to generate the simulated pseudorange and Doppler for the GPS satellites in view. This simulated range data is\nthen used to generate the digitized I/Q samples for the GPS signal which are then feed into ADALM-Pluto SDR to transmit the GPS L1 frequency.\n\nThe simulation start time can be specified if the corresponding set of ephemerides is available. Otherwise the first time of ephemeris in the RINEX navigation file\nis selected. RINEX input format 2 and 3 are supported.\n\n__Note__\n\nThe SDR internal oscillator must be precise enough (frequency offset) and stable (temperature drift) for GPS signal generation.\nIdeally the SDR shall be clocked from either by TCXO or more expensive (but highest precision) OCXO.\n\nBest experience with HackRF.\n\n### Build instructions\n\n#### Dependencies\n\nBuild depends on libm, libpthread, libcurl4-openssl-dev, libncurses, libz and libhackrf.\n\nYou will also need the latest build and install of libhackrf, libad9361-dev and libiio-dev. The Debian packages\nlibad9361-dev that is available up to Debian 9 (stretch) is outdated and missing a required function.\n\nSo you have to build packages from source:\n\nThe first step is to fetch the dependencies, which as of now is only libxml2. On a Debian-flavoured GNU/Linux distribution, like Ubuntu for instance:\n\n```\n$ sudo apt-get install libxml2 libxml2-dev bison flex libcdk5-dev cmake\n```\n\nDepending on the backend (how you want to attach the IIO device), you may need at least one of:\n\n```\n$ sudo apt-get install libaio-dev libusb-1.0-0-dev libserialport-dev libxml2-dev libavahi-client-dev doxygen graphviz\n```\n\nThen build in this order:\n\n```\n$ git clone https://github.com/analogdevicesinc/libiio.git\n$ cd libiio\n$ cmake ./\n$ make\n$ sudo make install\n```\n\n```\n$ git clone https://github.com/analogdevicesinc/libad9361-iio.git\n$ cd libad9361-iio\n$ cmake ./\n$ make\n$ sudo make install\n```\n\n#### Building under Linux with GCC\n\n```\n$ git clone https://github.com/mictronics/multi-sdr-gps-sim\n$ cd multi-sdr-gps-sim\n```\n\nWith HackRF support: `make all HACKRFSDR=yes` (depends on libhackrf)\n\nWith ADLAM-PLUTO support: `make all PLUTOSDR=yes` (depends on libiio and libad9361-iio)\n\nFull SDR support: `make all HACKRFSDR=yes PLUTOSDR=yes`\n\n### Usage\n\n````\ngps-sim [options]\nOptions:\n--nav-file          -e  \u003cfilename\u003e RINEX navigation file for GPS ephemeris (required)\n--geo-loc           -l  \u003clocation\u003e Latitude, Longitude, Height (static mode) e.g. 35.681298,139.766247,10.0\n--start             -s  \u003cdate,time\u003e Scenario start time YYYY/MM/DD,hh:mm:ss (use 'now' for actual time)\n--gain              -g  \u003cgain\u003e Set TX gain, HackRF: 0-47dB, Pluto: -80-0dB (default 0)\n--duration          -d  \u003cseconds\u003e Duration in seconds\n--target            -t  \u003cdistance,bearing,height\u003e Target distance [m], bearing [°] and height [m]\n--ppb               -p  \u003cppb\u003e Set oscillator error in ppb (default 0)\n--radio             -r  \u003cname\u003e Set the SDR device type name (default none)\n--uri               -U  \u003curi\u003e ADLAM-Pluto URI\n--network           -N  \u003cnetwork\u003e ADLAM-Pluto network IP or hostname (default pluto.local)\n--motion            -m  \u003cname\u003e User motion file (dynamic mode)\n--iq16                  Set IQ sample size to 16 bit (default 8 bit)\n--disable-iono      -I  Disable ionospheric delay for spacecraft scenario\n--verbose           -v  Show verbose output and details about simulated channels\n--interactive       -i  Use interactive mode\n--amplifier         -a  Enable TX amplifier (default OFF)\n--use-ftp           -f  Pull actual RINEX navigation file from FTP server\n--rinex3            -3  Use RINEX v3 navigation data format\n--disable-almanac       Disable transmission of almanac information\n--help              -?  Give this help list\n--usage                 Give a short usage message\n--version           -V  Print program version\n\nSDR device types (use with --radio or -r option):\n    none\n    iqfile\n    hackrf\n    plutosdr\n````\n\n### License\n\nCopyright \u0026copy; 2021 Mictronics\nDistributed under the [MIT License](http://www.opensource.org/licenses/mit-license.php).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmictronics%2Fmulti-sdr-gps-sim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmictronics%2Fmulti-sdr-gps-sim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmictronics%2Fmulti-sdr-gps-sim/lists"}