{"id":13419376,"url":"https://github.com/xmikos/qspectrumanalyzer","last_synced_at":"2025-05-15T07:03:26.975Z","repository":{"id":28072329,"uuid":"31569505","full_name":"xmikos/qspectrumanalyzer","owner":"xmikos","description":"Spectrum analyzer for multiple SDR platforms (PyQtGraph based GUI for soapy_power, hackrf_sweep, rtl_power, rx_power and other backends)","archived":false,"fork":false,"pushed_at":"2024-04-03T20:14:12.000Z","size":1268,"stargazers_count":1296,"open_issues_count":75,"forks_count":261,"subscribers_count":95,"default_branch":"master","last_synced_at":"2025-05-15T03:09:49.886Z","etag":null,"topics":["airspy","fft","hackrf","limesdr","python","qt","radio","rtl-sdr","sdr","software-defined-radio","spectrum-analyzer","visualization"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xmikos.png","metadata":{"files":{"readme":"README.rst","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":"2015-03-02T23:37:56.000Z","updated_at":"2025-05-12T03:31:58.000Z","dependencies_parsed_at":"2023-01-14T08:04:33.095Z","dependency_job_id":"ead8d2d5-859f-4f6b-96b0-885a5c96308d","html_url":"https://github.com/xmikos/qspectrumanalyzer","commit_stats":{"total_commits":98,"total_committers":4,"mean_commits":24.5,"dds":"0.22448979591836737","last_synced_commit":"625ba9d698cc9bbb73efa3dc4d603c9ddc40706b"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xmikos%2Fqspectrumanalyzer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xmikos%2Fqspectrumanalyzer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xmikos%2Fqspectrumanalyzer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xmikos%2Fqspectrumanalyzer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xmikos","download_url":"https://codeload.github.com/xmikos/qspectrumanalyzer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254291961,"owners_count":22046424,"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":["airspy","fft","hackrf","limesdr","python","qt","radio","rtl-sdr","sdr","software-defined-radio","spectrum-analyzer","visualization"],"created_at":"2024-07-30T22:01:15.086Z","updated_at":"2025-05-15T07:03:26.939Z","avatar_url":"https://github.com/xmikos.png","language":"Python","funding_links":[],"categories":["Python","HackRF"],"sub_categories":["Tools \u0026 Libraries"],"readme":"QSpectrumAnalyzer\n=================\n\nSpectrum analyzer for multiple SDR platforms (PyQtGraph based GUI for soapy_power,\nhackrf_sweep, rtl_power, rx_power and other backends)\n\nScreenshots\n-----------\n\n.. image:: https://xmikos.github.io/qspectrumanalyzer/qspectrumanalyzer_screenshot.png\n\n.. image:: https://xmikos.github.io/qspectrumanalyzer/qspectrumanalyzer_screenshot2.png\n\nRequirements\n------------\n\n- Python \u003e= 3.3\n- PyQt4 / PyQt5 / PySide / PySide2\n- Qt.py (https://github.com/mottosso/Qt.py)\n- PyQtGraph (http://www.pyqtgraph.org)\n- soapy_power (https://github.com/xmikos/soapy_power)\n- Optional: hackrf / rtl-sdr / rtl_power_fftw / rx_tools\n\nBackends\n--------\n\nDefault backend\n***************\n\n- **soapy_power** (https://github.com/xmikos/soapy_power)\n\n``soapy_power`` is the default and recommended universal SDR backend in QSpectrumAnalyzer.\nIt is based on `SoapySDR \u003chttps://github.com/pothosware/SoapySDR\u003e`_ and supports\nnearly all SDR platforms (RTL-SDR, HackRF, Airspy, SDRplay, LimeSDR, bladeRF,\nUSRP and some other SDR devices). It is highly configurable (see additional parameters\nhelp in *Settings* menu) and supports short acquisition time for\nnear real-time continuous measurement.\n\nOther backends\n**************\n\n- **hackrf_sweep** (https://github.com/mossmann/hackrf)\n\n``hackrf_sweep`` backend enables wideband spectrum monitoring by rapidly retuning the radio\nwithout requiring individual tuning requests from the host computer. This allows unprecedented\nsweep rate of 8 GHz per second. Only HackRF is supported.\n\n- **rtl_power_fftw** (https://github.com/AD-Vega/rtl-power-fftw)\n\n``rtl_power_fftw`` is alternative backend for RTL-SDR devices and has various\nbenefits over ``rtl_power``. E.g. better FFT performance (thanks to\nuse of ``fftw`` library) and possibility to use short acquisition time\nfor near real-time continuous measurement (minimum interval in original\n``rtl_power`` is 1 second).\n\n- **rtl_power** (https://github.com/keenerd/rtl-sdr)\n\n``rtl_power`` is original backend for RTL-SDR devices. There are better alternatives now, but\nif you want to use it, you should use `Keenerds fork of rtl-sdr \u003chttps://github.com/keenerd/rtl-sdr\u003e`_\n(latest Git revision), because ``rtl_power`` in original rtl-sdr package (from osmocom.org)\nis broken (especially when used with cropping).\n\n- **rx_power** (https://github.com/rxseger/rx_tools) *[unsupported]*\n\n``rx_power`` (part of ``rx_tools``) is also based on SoapySDR (like default ``soapy_power`` backend)\nand therefore supports nearly all SDR platforms. But it is much slower than soapy_power, doesn't support\nnear real-time continuous measurement (minimum interval is 1 second, same as ``rtl_power``)\nand is buggy. Backend is currently unsupported, if you want to fix it, patches are welcome.\n\nUsage\n-----\n\nStart QSpectrumAnalyzer by running ``qspectrumanalyzer``.\n\nYou can choose which backend you want to use in *File* -\u003e *Settings*\n(or *Application menu* -\u003e *Preferences* on Mac OS X), default is\n``soapy_power``. Device, sample rate, bandwidth, LNB LO, path to backend executable\nand additional backend parameters can be also manually specified there. You can\nalso set waterfall plot history size. Default is 100 lines, be aware that\nreally large sweeps (with a lot of bins) would require a lot of system\nmemory, so don't make this number too big.\n\nControls should be intuitive, but if you want consistent results, you should\nturn off automatic gain control (set gain to some fixed number) and also set\ncrop to 20% or more. For finding out ppm correction factor for your rtl-sdr\nstick, use `kalibrate-rtl \u003chttps://github.com/steve-m/kalibrate-rtl\u003e`_.\n\nYou can move and zoom plot with mouse, change plot settings or export plots\nfrom right-click menu. Waterfall plot black/white levels and color lookup\ntable can be changed in mini-histogram widget (on *Levels* tab).\n\nInstallation\n------------\n\nArch Linux:\n***********\n\nStable version:\n::\n\n    git clone https://aur.archlinux.org/qspectrumanalyzer.git\n    cd qspectrumanalyzer\n    makepkg -sri\n\nGit master branch:\n::\n\n    git clone https://aur.archlinux.org/qspectrumanalyzer-git.git\n    cd qspectrumanalyzer-git\n    makepkg -sri\n\nOr simply use `pacaur \u003chttps://aur.archlinux.org/packages/pacaur\u003e`_ (or any other AUR helper)\nwhich will also automatically install all QSpectrumAnalyzer dependencies:\n::\n\n    pacaur -S qspectrumanalyzer\n    pacaur -S qspectrumanalyzer-git\n\nUbuntu:\n*******\n::\n\n    # Add SoapySDR PPA to your system\n    sudo add-apt-repository -y ppa:myriadrf/drivers\n\n    # Update list of packages\n    sudo apt-get update\n\n    # Install basic dependencies\n    sudo apt-get install python3-pip python3-pyqt5 python3-numpy python3-scipy soapysdr python3-soapysdr\n\n    # Install SoapySDR drivers for your hardware (e.g. RTL-SDR, Airspy, HackRF, LimeSDR, etc.)\n    sudo apt-get install soapysdr-module-rtlsdr soapysdr-module-airspy soapysdr-module-hackrf soapysdr-module-lms7\n\n    # Install QSpectrumAnalyzer locally for your current user\n    pip3 install --user qspectrumanalyzer\n\n``qspectrumanalyzer`` and ``soapy_power`` executables will be then placed in\n``~/.local/bin`` directory, you can add it to your PATH in ``~/.bashrc``.\n\nIf you want to install QSpectrumAnalyzer directly from Git master branch, you can use this procedure:\n::\n\n    git clone https://github.com/xmikos/qspectrumanalyzer.git\n    cd qspectrumanalyzer\n    pip3 install --user .\n\nWindows:\n********\n\n*Only 64-bit Windows are supported (there are no public 32-bit builds of SoapySDR\nlibraries and drivers).*\n\n1. install `SoapySDR \u003chttps://github.com/pothosware/SoapySDR/wiki\u003e`_ libraries and drivers\n   (bundled as part of Pothos SDR installer: `download \u003chttp://downloads.myriadrf.org/builds/PothosSDR/?C=M;O=D\u003e`_).\n   This bundle also includes other great SDR apps like `CubicSDR \u003chttp://cubicsdr.com\u003e`_, `GQRX \u003chttp://gqrx.dk\u003e`_,\n   `GNU Radio Companion \u003chttps://gnuradio.org\u003e`_, `Pothos GUI \u003chttps://github.com/pothosware/pothos/wiki\u003e`_,\n   `Lime Suite \u003chttps://github.com/myriadrf/LimeSuite\u003e`_ and `Zadig \u003chttp://zadig.akeo.ie\u003e`_.\n   Utilities like ``hackrf_sweep`` and ``rtl_power`` are also included.\n2. download QSpectrumAnalyzer installer or portable zip archive from GitHub\n   `releases \u003chttps://github.com/xmikos/qspectrumanalyzer/releases\u003e`_ page\n3. after you connect your SDR device, you have to run `Zadig \u003chttp://zadig.akeo.ie\u003e`_ to install USB drivers\n\nYou can also install QSpectrumAnalyzer manually from `PyPI \u003chttps://pypi.python.org\u003e`_:\n\n1. install Python 3.6.x (64-bit) from `python.org \u003chttps://www.python.org\u003e`_ and add Python to PATH\n2. install `SoapySDR \u003chttps://github.com/pothosware/SoapySDR/wiki\u003e`_ libraries and drivers\n   (bundled as part of Pothos SDR installer: `download \u003chttp://downloads.myriadrf.org/builds/PothosSDR/?C=M;O=D\u003e`_)\n3. Open ``cmd.exe`` and run::\n\n        pip install PyQt5\n        pip install QSpectrumAnalyzer\n\nYou should then be able to run it with ``qspectrumanalyzer`` (or ``python -m qspectrumanalyzer``\nif it doesn't work for you).\n\nTodo:\n-----\n\n- save FFT history (allow big waterfall plot saved to file)\n- automatic peak detection / highlighting\n- display average noise level\n- frequency markers / bookmarks with notes (even importing and exporting .csv file with\n  predefined channels, etc.)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxmikos%2Fqspectrumanalyzer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxmikos%2Fqspectrumanalyzer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxmikos%2Fqspectrumanalyzer/lists"}