{ "info": { "author": "Michal Krenek (Mikos)", "author_email": "m.krenek@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: End Users/Desktop", "Intended Audience :: Science/Research", "Intended Audience :: Telecommunications Industry", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Topic :: Communications :: Ham Radio", "Topic :: Scientific/Engineering", "Topic :: Utilities" ], "description": "soapy_power\n===========\n\nObtain power spectrum from SoapySDR devices (RTL-SDR, Airspy, SDRplay, HackRF, bladeRF, USRP, LimeSDR, etc.)\n\nRequirements\n------------\n\n- `Python 3 `_\n- `NumPy `_\n- `SimpleSoapy `_\n- `SimpleSpectral `_\n- Optional: `pyFFTW `_ (for fastest FFT calculations with FFTW library)\n- Optional: `SciPy `_ (for faster FFT calculations with scipy.fftpack library)\n\nYou should always install SciPy or pyFFTW, because numpy.fft has horrible\nmemory usage and is also much slower.\n\nUsage\n-----\n::\n\n usage: soapy_power [-h] [-f Hz|Hz:Hz] [-O FILE | --output-fd NUM] [-F {rtl_power,rtl_power_fftw,soapy_power_bin}] [-q]\n [--debug] [--detect] [--info] [--version] [-b BINS | -B Hz] [-n REPEATS | -t SECONDS | -T SECONDS]\n [-c | -u RUNS | -e SECONDS] [-d DEVICE] [-C CHANNEL] [-A ANTENNA] [-r Hz] [-w Hz] [-p PPM]\n [-g dB | -G STRING | -a] [--lnb-lo Hz] [--device-settings STRING] [--force-rate] [--force-bandwidth]\n [--tune-delay SECONDS] [--reset-stream] [-o PERCENT | -k PERCENT] [-s BUFFER_SIZE] [-S MAX_BUFFER_SIZE]\n [--even | --pow2] [--max-threads NUM] [--max-queue-size NUM] [--no-pyfftw] [-l] [-R]\n [-D {none,constant}] [--fft-window {boxcar,hann,hamming,blackman,bartlett,kaiser,tukey}]\n [--fft-window-param FLOAT] [--fft-overlap PERCENT]\n \n Obtain a power spectrum from SoapySDR devices\n \n Main options:\n -h, --help show this help message and exit\n -f Hz|Hz:Hz, --freq Hz|Hz:Hz\n center frequency or frequency range to scan, number can be followed by a k, M or G multiplier\n (default: 1420405752)\n -O FILE, --output FILE\n output to file (incompatible with --output-fd, default is stdout)\n --output-fd NUM output to existing file descriptor (incompatible with -O)\n -F {rtl_power,rtl_power_fftw,soapy_power_bin}, --format {rtl_power,rtl_power_fftw,soapy_power_bin}\n output format (default: rtl_power)\n -q, --quiet limit verbosity\n --debug detailed debugging messages\n --detect detect connected SoapySDR devices and exit\n --info show info about selected SoapySDR device and exit\n --version show program's version number and exit\n \n FFT bins:\n -b BINS, --bins BINS number of FFT bins (incompatible with -B, default: 512)\n -B Hz, --bin-size Hz bin size in Hz (incompatible with -b)\n \n Averaging:\n -n REPEATS, --repeats REPEATS\n number of spectra to average (incompatible with -t and -T, default: 1600)\n -t SECONDS, --time SECONDS\n integration time (incompatible with -T and -n)\n -T SECONDS, --total-time SECONDS\n total integration time of all hops (incompatible with -t and -n)\n \n Measurements:\n -c, --continue repeat the measurement endlessly (incompatible with -u and -e)\n -u RUNS, --runs RUNS number of measurements (incompatible with -c and -e, default: 1)\n -e SECONDS, --elapsed SECONDS\n scan session duration (time limit in seconds, incompatible with -c and -u)\n \n Device settings:\n -d DEVICE, --device DEVICE\n SoapySDR device to use\n -C CHANNEL, --channel CHANNEL\n SoapySDR RX channel (default: 0)\n -A ANTENNA, --antenna ANTENNA\n SoapySDR selected antenna\n -r Hz, --rate Hz sample rate (default: 2000000.0)\n -w Hz, --bandwidth Hz\n filter bandwidth (default: 0)\n -p PPM, --ppm PPM frequency correction in ppm\n -g dB, --gain dB total gain (incompatible with -G and -a, default: 37.2)\n -G STRING, --specific-gains STRING\n specific gains of individual amplification elements (incompatible with -g and -a, example:\n LNA=28,VGA=12,AMP=0\n -a, --agc enable Automatic Gain Control (incompatible with -g and -G)\n --lnb-lo Hz LNB LO frequency, negative for upconverters (default: 0)\n --device-settings STRING\n SoapySDR device settings (example: biastee=true)\n --force-rate ignore list of sample rates provided by device and allow any value\n --force-bandwidth ignore list of filter bandwidths provided by device and allow any value\n --tune-delay SECONDS time to delay measurement after changing frequency (to avoid artifacts)\n --reset-stream reset streaming after changing frequency (to avoid artifacts)\n \n Crop:\n -o PERCENT, --overlap PERCENT\n percent of overlap when frequency hopping (incompatible with -k)\n -k PERCENT, --crop PERCENT\n percent of crop when frequency hopping (incompatible with -o)\n \n Performance options:\n -s BUFFER_SIZE, --buffer-size BUFFER_SIZE\n base buffer size (number of samples, 0 = auto, default: 0)\n -S MAX_BUFFER_SIZE, --max-buffer-size MAX_BUFFER_SIZE\n maximum buffer size (number of samples, -1 = unlimited, 0 = auto, default: 0)\n --even use only even numbers of FFT bins\n --pow2 use only powers of 2 as number of FFT bins\n --max-threads NUM maximum number of PSD threads (0 = auto, default: 0)\n --max-queue-size NUM maximum size of PSD work queue (-1 = unlimited, 0 = auto, default: 0)\n --no-pyfftw don't use pyfftw library even if it is available (use scipy.fftpack or numpy.fft)\n \n Other options:\n -l, --linear linear power values instead of logarithmic\n -R, --remove-dc interpolate central point to cancel DC bias (useful only with boxcar window)\n -D {none,constant}, --detrend {none,constant}\n remove mean value from data to cancel DC bias (default: none)\n --fft-window {boxcar,hann,hamming,blackman,bartlett,kaiser,tukey}\n Welch's method window function (default: hann)\n --fft-window-param FLOAT\n shape parameter of window function (required for kaiser and tukey windows)\n --fft-overlap PERCENT\n Welch's method overlap between segments (default: 50)\n\nExample\n-------\n::\n\n [user@host ~] soapy_power -r 2.56M -f 88M:98M -B 500k -F rtl_power -O output.txt --even -T 1 --debug\n DEBUG: pyfftw module found (using 4 threads by default)\n DEBUG: Applying fixes for RTLSDR quirks...\n INFO: Using device: RTLSDR\n DEBUG: SoapySDR stream - buffer size: 8192\n DEBUG: SoapySDR stream - read timeout: 0.103200\n INFO: repeats: 106667\n INFO: samples: 640002 (time: 0.25000 s)\n INFO: max_buffer_size (samples): 32768000 (repeats: 5461333.33, time: 12.80000 s)\n INFO: buffer_size (samples): 647168 (repeats: 107861.33, time: 0.25280 s)\n INFO: buffer_repeats: 1\n INFO: overlap: 0.00000\n INFO: bin_size: 426666.67 Hz\n INFO: bins: 6\n INFO: bins (after crop): 6\n INFO: sample_rate: 2.560 MHz\n INFO: sample_rate (after crop): 2.560 MHz\n INFO: freq_range: 10.000 MHz\n INFO: hopping: YES\n INFO: hop_size: 2.560 MHz\n INFO: hops: 4\n INFO: min_center_freq: 89.280 MHz\n INFO: max_center_freq: 96.960 MHz\n INFO: min_freq (after crop): 88.000 MHz\n INFO: max_freq (after crop): 98.240 MHz\n DEBUG: Frequency hops table:\n DEBUG: Min: Center: Max: \n DEBUG: 88.000 MHz 89.280 MHz 90.560 MHz\n DEBUG: 90.560 MHz 91.840 MHz 93.120 MHz\n DEBUG: 93.120 MHz 94.400 MHz 95.680 MHz\n DEBUG: 95.680 MHz 96.960 MHz 98.240 MHz\n DEBUG: Run: 1\n DEBUG: Frequency hop: 89280000.00 Hz\n DEBUG: Tune time: 0.017 s\n DEBUG: Repeat: 1\n DEBUG: Acquisition time: 0.251 s\n DEBUG: Total hop time: 0.282 s\n DEBUG: FFT time: 0.103 s\n DEBUG: Frequency hop: 91840000.00 Hz\n DEBUG: Tune time: 0.010 s\n DEBUG: Repeat: 1\n DEBUG: Acquisition time: 0.251 s\n DEBUG: Total hop time: 0.272 s\n DEBUG: FFT time: 0.006 s\n DEBUG: Frequency hop: 94400000.00 Hz\n DEBUG: Tune time: 0.010 s\n DEBUG: Repeat: 1\n DEBUG: Acquisition time: 0.252 s\n DEBUG: Total hop time: 0.266 s\n DEBUG: FFT time: 0.004 s\n DEBUG: Frequency hop: 96960000.00 Hz\n DEBUG: Tune time: 0.010 s\n DEBUG: Repeat: 1\n DEBUG: Acquisition time: 0.253 s\n DEBUG: Total hop time: 0.267 s\n DEBUG: FFT time: 0.004 s\n DEBUG: Total run time: 1.095 s\n DEBUG: Number of USB buffer overflow errors: 0\n DEBUG: PSD worker threads: 4\n DEBUG: Max. PSD queue size: 2 / 40\n DEBUG: Writer worker threads: 1\n DEBUG: Max. Writer queue size: 2 / 100\n INFO: Total time: 1.137 s\n\nOutput::\n\n 2017-03-17, 13:18:25, 88000000.0, 90560000.0, 426666.666667, 647168, -98.6323, -98.7576, -97.3716, -98.3133, -98.8829, -98.9333\n 2017-03-17, 13:18:25, 90560000.0, 93120000.0, 426666.666667, 647168, -95.7163, -96.2564, -97.01, -98.1281, -90.701, -88.0872\n 2017-03-17, 13:18:25, 93120000.0, 95680000.0, 426666.666667, 647168, -99.0242, -91.3061, -91.9134, -85.4561, -86.0053, -97.8411\n 2017-03-17, 13:18:26, 95680000.0, 98240000.0, 426666.666667, 647168, -94.2324, -83.7932, -78.3108, -82.033, -89.1212, -97.4499\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/xmikos/soapy_power", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "soapy_power", "package_url": "https://pypi.org/project/soapy_power/", "platform": "", "project_url": "https://pypi.org/project/soapy_power/", "project_urls": { "Homepage": "https://github.com/xmikos/soapy_power" }, "release_url": "https://pypi.org/project/soapy_power/1.6.1/", "requires_dist": null, "requires_python": "", "summary": "Obtain power spectrum from SoapySDR devices (RTL-SDR, Airspy, SDRplay, HackRF, bladeRF, USRP, LimeSDR, etc.)", "version": "1.6.1" }, "last_serial": 2832100, "releases": { "1.1.0": [ { "comment_text": "", "digests": { "md5": "5cb9dcbeecd76d1c8b4c32f30e55f39b", "sha256": "c5b7df86f3efc8a98d8528d63e12edf9885b6b459b9fbc98bd6a7b1ec9ff0a06" }, "downloads": -1, "filename": "soapy_power-1.1.0.tar.gz", "has_sig": false, "md5_digest": "5cb9dcbeecd76d1c8b4c32f30e55f39b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16258, "upload_time": "2017-03-10T16:59:29", "url": "https://files.pythonhosted.org/packages/19/b9/1b75733fccac6912f3f9f68e509ce14d08067ec4bc097c50bfc5934fadef/soapy_power-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "7b78853828a54bd620be8a6bf05e31c4", "sha256": "3ec0b00fc210f986a8a90b72ff16ed206feb32410c36412b0f908b35faf5d54b" }, "downloads": -1, "filename": "soapy_power-1.2.0.tar.gz", "has_sig": false, "md5_digest": "7b78853828a54bd620be8a6bf05e31c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16958, "upload_time": "2017-03-13T16:46:57", "url": "https://files.pythonhosted.org/packages/0a/14/cde2f7d3d55b419a1815d979fb8dc3e54668930dd2171bdb9dddd0f74224/soapy_power-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "c8d92af513355e7e44189f2cd7d480c4", "sha256": "a6051055db32f29d5a47d324ac248865ef8da75b4270a35aedab93912868a36a" }, "downloads": -1, "filename": "soapy_power-1.3.0.tar.gz", "has_sig": false, "md5_digest": "c8d92af513355e7e44189f2cd7d480c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17847, "upload_time": "2017-03-17T14:03:42", "url": "https://files.pythonhosted.org/packages/a7/65/7f6ca4e4918e47e58bc5ae4b0c9e15ee84748060ce2ea6cb2c86c1f48493/soapy_power-1.3.0.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "c7cbda1fa2fcc03d76a9e4caf99a2d8b", "sha256": "63fea3822fdb9725ff475e727ec3981ee6bf66b072072fdffbfe125da1ac5d7e" }, "downloads": -1, "filename": "soapy_power-1.4.0.tar.gz", "has_sig": false, "md5_digest": "c7cbda1fa2fcc03d76a9e4caf99a2d8b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18301, "upload_time": "2017-03-20T17:13:37", "url": "https://files.pythonhosted.org/packages/66/55/e823eb3dd54bf3101b7b8650bf82123d643be29490482bc042d01a95a9a4/soapy_power-1.4.0.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "646750849237bd63607ec349cb646998", "sha256": "90650b388aa04e6ec7ddbb5b7c7f43e94835356c88358210799af71fc0d58d11" }, "downloads": -1, "filename": "soapy_power-1.5.0.tar.gz", "has_sig": false, "md5_digest": "646750849237bd63607ec349cb646998", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18809, "upload_time": "2017-03-21T16:47:18", "url": "https://files.pythonhosted.org/packages/d8/f4/b4ea7145a89258912e3a21bd1c16f0a0aee34e113d84ca3f4b4ea10b0f54/soapy_power-1.5.0.tar.gz" } ], "1.6.0": [ { "comment_text": "", "digests": { "md5": "1f7f6214a0af1d0b1f8a08c14c30a9c9", "sha256": "70aecc2364cd51eada5237f50aa298581856a033327a5c7f612f00e89566cf2e" }, "downloads": -1, "filename": "soapy_power-1.6.0.tar.gz", "has_sig": false, "md5_digest": "1f7f6214a0af1d0b1f8a08c14c30a9c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18933, "upload_time": "2017-03-24T16:48:08", "url": "https://files.pythonhosted.org/packages/89/65/eb844a82b3d9712a3a35df0c4a62d26013cbc489c88390596646f0a885ee/soapy_power-1.6.0.tar.gz" } ], "1.6.1": [ { "comment_text": "", "digests": { "md5": "83c3e76332e4039be49d1f85a4430531", "sha256": "b5e54841ac2aa85addd60c11077efedad1800a27b998e90fbc656fcc9eaf52e5" }, "downloads": -1, "filename": "soapy_power-1.6.1.tar.gz", "has_sig": false, "md5_digest": "83c3e76332e4039be49d1f85a4430531", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18956, "upload_time": "2017-04-26T15:36:42", "url": "https://files.pythonhosted.org/packages/16/2e/d8791898ae324b0df1c7225c9fec7b2819a3522c096b97f4bdf8ec1373a1/soapy_power-1.6.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "83c3e76332e4039be49d1f85a4430531", "sha256": "b5e54841ac2aa85addd60c11077efedad1800a27b998e90fbc656fcc9eaf52e5" }, "downloads": -1, "filename": "soapy_power-1.6.1.tar.gz", "has_sig": false, "md5_digest": "83c3e76332e4039be49d1f85a4430531", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18956, "upload_time": "2017-04-26T15:36:42", "url": "https://files.pythonhosted.org/packages/16/2e/d8791898ae324b0df1c7225c9fec7b2819a3522c096b97f4bdf8ec1373a1/soapy_power-1.6.1.tar.gz" } ] }