{"id":13576461,"url":"https://github.com/neural75/gqrx-scanner","last_synced_at":"2025-04-05T05:31:53.508Z","repository":{"id":23727693,"uuid":"98931714","full_name":"neural75/gqrx-scanner","owner":"neural75","description":"A frequency scanner for Gqrx Software Defined Radio receiver","archived":false,"fork":false,"pushed_at":"2024-04-21T11:06:46.000Z","size":418,"stargazers_count":271,"open_issues_count":2,"forks_count":35,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-03-17T11:52:23.934Z","etag":null,"topics":["band","frequencies","gqrx","ham-radio","linux","radio-frequency","rtl-sdr","scanner","sdr","signal-detection","sweep"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"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/neural75.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":"2017-07-31T21:32:24.000Z","updated_at":"2025-03-09T22:12:06.000Z","dependencies_parsed_at":"2024-01-14T03:51:07.097Z","dependency_job_id":"f6cf67ef-3b7a-486a-9ece-3559bcff242f","html_url":"https://github.com/neural75/gqrx-scanner","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neural75%2Fgqrx-scanner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neural75%2Fgqrx-scanner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neural75%2Fgqrx-scanner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neural75%2Fgqrx-scanner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/neural75","download_url":"https://codeload.github.com/neural75/gqrx-scanner/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247294449,"owners_count":20915335,"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":["band","frequencies","gqrx","ham-radio","linux","radio-frequency","rtl-sdr","scanner","sdr","signal-detection","sweep"],"created_at":"2024-08-01T15:01:10.416Z","updated_at":"2025-04-05T05:31:48.478Z","avatar_url":"https://github.com/neural75.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"![gqrx-scanner](media/gqrx-scanner-repository.png)\n# gqrx-scanner\nA frequency scanner for [Gqrx Software Defined Radio](http://gqrx.dk/) receiver\n\n## Description\n\ngqrx-scanner is a frequency scanner written in C that uses [gqrx remote protocol](http://gqrx.dk/doc/remote-control) to perform a fast scan of the band. It can be used in conjunction with the gqrx bookmarks (--mode bookmark) to look for the already stored frequencies or, in a free sweep scan mode (--mode sweep), to explore the band within a specified frequency range (--min, --max options).\n\nThe sweep scan uses an adaptive algorithm to remember the active frequencies encountered during the sweep, that prioritizes active stations without stopping to look for new ones.\n\nGqrx Squelch level is used as the threshold, when the signal is strong enough it stops the scanner on the frequency found.\nAfter the signal is lost the scanner waits a configurable ammount of time and restart the loop (--delay option).\n\nIn sweep mode the scan of the band is performed fast (well, as fast as it can), self asjusting the scanning speed. On signal detection a fine tuning is performed to pinpoint the nearest carrier frequency (subdivision of upper and lower limits with increasing precision) and, for the already seen carriers, a previous value is used to avoid fine tuning at every hit. This value is also averaged out with the new one in order to converge eventually to the exact frequency in less time (after 4 hits of the same frequency).\n\n## Features\n* Support for Gqrx bookmarks file\n* Fast sweep scan with adaptive monitor of the most active stations\n* Frequency range constrained scan (also for bookmarks)\n* Multiple Tag based search in bookmark scan mode (\"Tag1|Tag2|TagX\").\n* Automatic Frequency Locking in sweep scan mode\n* Interactive monitor to skip, ban or pause a frequency manually\n\n## Pre-requisites\nGqrx Remote Protocol must be enabled: Tools-\u003eRemote Control. See [this](http://gqrx.dk/doc/remote-control).\n\n## Notes on Gqrx settings\nIt is advisable to disable AGC during the scan: adjust the fixed gain lowering the noise floor to at least -60/-70 dBFS and set the squelch level to -50/-40 dBFS, depending on the band activities and noise levels.\n\nThe best results are obtained in relative quiet frequencies with sporadic transmissions. If the band is cluttered with harmonics and other types of persistent noise, avoid the sweep scan and use the bookmarks mode with a higher squelch level (or use the 'b' key to ban a frequency from the scan).\n\nIn sweep mode use a limited bandwidth of about 2 MHz in order to avoid VFO and noise floor levels chainging during the sweep.\nIf you don't provide the --min, --max option, set the demodulator frequency to the middle of the screen and start from there in order to avoid the panadapter to move during the scan.\n\nYou may also consider to adjust FFT options: FFT size and rate (on FFT Settings) to improve performances (and cpu usage).\nI have found better result with high fft size (64536) and 17 fps refresh rate, but this depends on your hardware.\n\n## Command line Options\n```\nUsage:\ngqrx-scanner\t[-h|--host \u003chost\u003e] [-p|--port \u003cport\u003e] [-m|--mode \u003csweep|bookmark\u003e]\n\t\t[-f \u003ccentral frequency\u003e] [-b|--min \u003cfrom freq\u003e] [-e|--max \u003cto freq\u003e]\n\t\t[-d|--delay \u003clingering time in milliseconds\u003e]\n\t\t[-t|--tags \u003c\"tag1|tag2|...\"\u003e]\n\t\t[-v|--verbose]\n\n-h, --host \u003chost\u003e            Name of the host to connect. Default: localhost\n-p, --port \u003cport\u003e            The number of the port to connect. Default: 7356\n-m, --mode \u003cmode\u003e            Scan mode to be used. Default: sweep\n                               Possible values for \u003cmode\u003e: sweep, bookmark\n-f, --freq \u003cfreq\u003e            Frequency to scan with a range of +- 1MHz.\n                               Default: the current frequency tuned in Gqrx Incompatible with -b, -e\n-s, --step \u003cfreq\u003e            Frequency step \u003cfreq\u003e in Hz. Default: 10000\n-b, --min \u003cfreq\u003e             Frequency range begins with this \u003cfreq\u003e in Hz. Incompatible with -f\n-e, --max \u003cfreq\u003e             Frequency range ends with this \u003cfreq\u003e in Hz. Incompatible with -f\n-d, --delay \u003ctime\u003e           Lingering time in milliseconds before the scanner reactivates. Default 2000\n-l, --max-listen \u003ctime\u003e      Maximum time to listen to a frequency, active or otherwise. Default 0, no maximum time\n-x, --speed \u003ctime\u003e           Time in milliseconds for bookmark scan speed. Default 250 milliseconds.\n                               If scan lands on wrong bookmark during search, use -x 500 (ms) to slow down speed\n-y  --date                   Date Format, default is 0.\n                               0 = mm-dd-yy\n                               1 = dd-mm-yy\n-q, --squelch_delta \u003cdB\u003e     If set creates bottom squelch just\n                             for listening. It may reduce unnecessary squelch audio supress.\n                             Default: 0.0\n                             Place \\\"a\\\" switch before \u003cdB\u003e value to turn into auto mode.\n                             It will determine squelch delta based on noise floor and\n                             \u003cdB\u003e value will determine how far squelch delta will be placed from it.\n                             Ex.: a0.5\n-t, --tags \u003c\"tags\"\u003e          Filter signals. Match only on frequencies marked with a tag found in \"tags\"\n                               \"tags\" is a quoted string with a '|' list separator: Ex: \"Tag1|Tag2\"\n                               tags are case insensitive and match also for partial string contained in a tag\n                               Works only with -m bookmark scan mode\n-v, --verbose                Output more information during scan (used for debug). Default: false\n--help                       This help message.\n\n```\n\n## Interactive Commands\nThese keyboard shortcuts are available during scan:\n```\n[space] OR [enter]  :   Skips a locked frequency (listening to the next).\n'b'                 :   Bans a locked frequency, the bandwidth banned is about 10 Khz from the locked freq.\n'c'                 :   Clears all banned frequencies.\n'p'                 :   Pauses scan on locked frequency, 'p' again to unpause.\n```\n\n## Examples\nPerforms a sweep scan with a range of +-1Mhz from the demodulator frequency in Gqrx:\n```\n./gqrx-scanner\n```\n\u003cbr\u003e\n\nSearch all bookmarks for frequencies in the range +- 1 Mhz from the demodulator frequency in Gqrx:\n```\n./gqrx-scanner -m bookmark\n```\n\u003cbr\u003e\n\nPerforms a sweep scan from the central frequency 144.000 MHz using the range 143.000-145.000 MHz:\n```\n./gqrx-scanner -f 144000000\n```\n\u003cbr\u003e\n\nPerforms a scan using Gqrx bookmarks, monitoring only the frequencies tagged with \"DMR\" or \"Radio Links\" in the range 430MHz-431MHz:\n\n```\n./gqrx-scanner -m bookmark --min 430000000 --max 431000000 --tags \"DMR|Radio Links\"\n```\n\u003cbr\u003e\n\nPerforms a sweep scan from frequency 430MHz to 431MHz, using a delay of\t3 secs as idle time after a signal is lost, restarting the sweep loop when this time expires:\n```\n./gqrx-scanner --min 430000000 --max 431000000 -d 3000\n```\n\n### Sample output\n\n```\n$ ./gqrx-scanner -m bookmark -f 430000000\nFrequency range set from 429.000 MHz to 431.000 MHz.\n[04-08-17 19:51:54] Freq: 430.037 MHz active [ Beigua                   ], Level: -40.20/-50.70  [elapsed time 03 sec]\n[04-08-17 19:51:57] Freq: 430.288 MHz active [ ponte dmr                ], Level: -39.00/-50.70  [elapsed time 43 sec]\n[04-08-17 19:52:40] Freq: 430.887 MHz active [ DMR                      ], Level: -30.50/-50.70  [elapsed time 11 sec]\n[04-08-17 19:53:23] Freq: 430.900 MHz active [ Genova DMR               ], Level: -32.20/-50.70  [elapsed time 14 sec]\n```\n\n## Build and Install\n```\ncmake .\nmake\nsudo make install\n```\n\n## To build for Mac-OSX\n\nrun `ccmake`, toggle, and set CMAKE_C_FLAGS=-DOSX\n\n```\nccmake .\ncmake .\nmake\nsudo make install\n```\n\n## Uninstall\n```\nsudo make uninstall\n```\n\n\n## TODOs\n* set modulation in bookmark search\n* automatic audio recording on signal detection\n* parsable output in csv?\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneural75%2Fgqrx-scanner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneural75%2Fgqrx-scanner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneural75%2Fgqrx-scanner/lists"}