{ "info": { "author": "Gaspar Karm", "author_email": "gkarm@live.com", "bugtrack_url": null, "classifiers": [], "description": "# 80MHz bandwidth with LimeSDR-Mini and GQRX\n[![Build Status](https://travis-ci.org/gasparka/spectrogram.svg?branch=master)](https://travis-ci.org/gasparka/spectrogram)\n\n![Bluetooth GIF](https://github.com/gasparka/spectrogram/blob/master/doc/demo.gif \"Demo\")\n\n[LimeSDR-Mini](https://www.crowdsupply.com/lime-micro/limesdr-mini) diagram:\n\n![Block diagram](https://github.com/gasparka/spectrogram/blob/master/doc/lime_and_diagram.jpg \"Diagram\")\n\n_**Note:** DC-removal is based on [Linear-phase DC Removal Filter](https://www.dsprelated.com/showarticle/58.php) (Dual-MA 1024 taps)_\n\n## Install\n\nInstall the helper script to bootstrap the Docker images (Linux PC/ARM architectures):\n\n```pip install spectrogram```\n\n_**Rasbian note:** Use ```pip3```. Executable is installed to ```/home/pi/.local/bin/spectrogram```, which is not on PATH by default._\n\n## Usage\n\nInvoking ```spectrogram``` does following:\n1. If needed, programs the LimeSDR-Mini with FPGA accelerator ( restore with ``spectogram --fpga_restore``)\n2. Starts the local 'SoapySDR-Remote' server\n3. Starts GQRX\n\n_**Warning:** You should **cool your LimeSDR-Mini**, especially the FPGA. It takes 2.5 minutes for FPGA temperature to rise from 30C to 80C, after which you risk damage!_\n\nWorks on RaspberryPi:\n\n![Pi setup](https://github.com/gasparka/spectrogram/blob/master/doc/lime_mini_screen.jpg \"lime_mini_screen\")\n\n_**Notes:** Current draw was around 1.25A@5V. 5\u2019 TFT-Display created some noise in the spectrogram - this was not a problem with HDMI display.\nOTOH HDMI supports higher resolution, which may cap the CPU if GQRX window is too big (updating the waterfall is expensive)._\n\n### Remote usage\n\nPair your LimeSDR-Mini with RaspberryPi and execute ```spectrogram --server_only``` - this sets up a SoapySDR-Remote server.\nNext, on the monitoring device, execute ```spectrogram``` - this scans for remote devices and opens GQRX if one is found.\nNetwork bandwidth will be around 1 MB/s.\n\n\n## MISC\n\n### Using without GQRX\n[See demo notebook](https://github.com/gasparka/spectrogram/blob/master/doc/usage_demo.ipynb)\n\n### Accuracy vs floating-point model\n\nThis is a fixed-point accelerator, accuracy against the floating-point model has been verified.\n\n\n![fix vs float accuracy](https://github.com/gasparka/spectrogram/blob/master/doc/fix_vs_float.png)\n\n[Reproduce](https://github.com/gasparka/pyha/blob/develop/pyha/applications/spectrogram_limesdr/spectrogram_limesdr.ipynb)\n\n### How is 512 point FFT comparable to 131k FFT??\nIt's about how many samples are averaged e.g. the 131k FFT averages 131k samples - same can be achieved with 512 point FFT and averaging 256 results - 512*256 = 131k.\n\n![132k FFT vs 512 + averaging](https://github.com/gasparka/spectrogram/blob/master/doc/131k_vs_512.png)\n[Reproduce](https://github.com/gasparka/spectrogram/blob/master/doc/131k_vs_512.ipynb)\n\nIn general this is a trade-off - hardware complexity is reduced, but you will lose ~3dB dynamic range.\n\n### Cooling solutions\n\n#### No cooling\n\n![No cooling](https://github.com/gasparka/spectrogram/blob/master/doc/no_cools.JPG)\n\nTook 5 minutes to go from cold to critical FPGA temperature.\n\n**You will risk damaging your board!**\n\n\n#### Heat-sink on FPGA\n\n![FPGA sinked](https://github.com/gasparka/spectrogram/blob/master/doc/fpga_cools.JPG)\n\nTemperature is stable at ~65C after 10 minutes.\n\n\n#### Heat-sink everything\n\n![Massive sink](https://github.com/gasparka/spectrogram/blob/master/doc/all_cools.JPG)\n\nTemperature is stable at ~54C after 20 minutes.", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/gasparka/spectrogram", "keywords": "spectrogram,fft,limesdr", "license": "Apache Software License 2.0", "maintainer": "", "maintainer_email": "", "name": "spectrogram", "package_url": "https://pypi.org/project/spectrogram/", "platform": "", "project_url": "https://pypi.org/project/spectrogram/", "project_urls": { "Homepage": "https://github.com/gasparka/spectrogram" }, "release_url": "https://pypi.org/project/spectrogram/1.0.7/", "requires_dist": null, "requires_python": ">3.4", "summary": "Spectrogram (80MHz bandwidth) accelerator for LimeSDR", "version": "1.0.7" }, "last_serial": 5890694, "releases": { "0.0.7": [ { "comment_text": "", "digests": { "md5": "43c27ae257ae32f398d8bb96909bf841", "sha256": "e6441a1e610e8bc8ee3ea96e8eff971ee3674937ed05e1783093bc736b72998c" }, "downloads": -1, "filename": "spectrogram-0.0.7.tar.gz", "has_sig": false, "md5_digest": "43c27ae257ae32f398d8bb96909bf841", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.4", "size": 4498, "upload_time": "2019-01-22T13:00:55", "url": "https://files.pythonhosted.org/packages/57/08/e7a3a611c1d9a84acf5d8c2c66a511a1c00f0eb667e210662606f7ca4eee/spectrogram-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "64bf26d13596d350689c3a8df3c7305c", "sha256": "ff20bf23fc0560f74408841f2a674bca6c55e6533833782a3d0af862575b65be" }, "downloads": -1, "filename": "spectrogram-0.0.8.tar.gz", "has_sig": false, "md5_digest": "64bf26d13596d350689c3a8df3c7305c", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.4", "size": 3879, "upload_time": "2019-01-23T17:14:13", "url": "https://files.pythonhosted.org/packages/f9/7e/8c2b0a09ebb5595b4d6c465e2e785b613ea61c8d4a59b8e6ea6dc9d43844/spectrogram-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "a0e7552d1c6f15566c519d8ad5e8a82e", "sha256": "68f7ba056ee5a56b9f442b3b5ca1b76adbfd97d7a989b657d3789ed851d2d85e" }, "downloads": -1, "filename": "spectrogram-0.0.9.tar.gz", "has_sig": false, "md5_digest": "a0e7552d1c6f15566c519d8ad5e8a82e", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.4", "size": 3967, "upload_time": "2019-01-24T19:17:04", "url": "https://files.pythonhosted.org/packages/c9/c3/16836c6384aee7530016a6045237c3fe540c094122e246edd58f79ce6b97/spectrogram-0.0.9.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "8307459ccd05b5ad982948191a4b1797", "sha256": "bc6a6fb237e8bfd36f765f1483e579f4f429f39257fead7e655505cc9f5a4bac" }, "downloads": -1, "filename": "spectrogram-1.0.5.tar.gz", "has_sig": false, "md5_digest": "8307459ccd05b5ad982948191a4b1797", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.4", "size": 4066, "upload_time": "2019-01-26T17:53:26", "url": "https://files.pythonhosted.org/packages/75/f5/7086da2cabc2dbf1c96bc75dd7a64d2585f38afd74f872823a267ccef246/spectrogram-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "3970188d3720d711d045fed151b6e664", "sha256": "7a24c76d5dbfc802639a675c5bb1be98cd1aceb697a08d52d0f0624932b8ccff" }, "downloads": -1, "filename": "spectrogram-1.0.6.tar.gz", "has_sig": false, "md5_digest": "3970188d3720d711d045fed151b6e664", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.4", "size": 4293, "upload_time": "2019-02-05T14:14:14", "url": "https://files.pythonhosted.org/packages/c7/ab/a4c86a9413a7e167cca43a716b9ba5f4ca855984bee239c9fa495882888d/spectrogram-1.0.6.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "1f88f5b08d751e9dd52e704dcdc6d094", "sha256": "d97ce896cf6a3d4950f6fe7ae77c907a04e5483d58210120ef5377640db4370f" }, "downloads": -1, "filename": "spectrogram-1.0.7.tar.gz", "has_sig": false, "md5_digest": "1f88f5b08d751e9dd52e704dcdc6d094", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.4", "size": 4339, "upload_time": "2019-09-26T13:44:01", "url": "https://files.pythonhosted.org/packages/1b/02/5a008e1c8ea5261b69eabad63b5eee5fca1d08593b804a0c16bf1fba7f61/spectrogram-1.0.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1f88f5b08d751e9dd52e704dcdc6d094", "sha256": "d97ce896cf6a3d4950f6fe7ae77c907a04e5483d58210120ef5377640db4370f" }, "downloads": -1, "filename": "spectrogram-1.0.7.tar.gz", "has_sig": false, "md5_digest": "1f88f5b08d751e9dd52e704dcdc6d094", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.4", "size": 4339, "upload_time": "2019-09-26T13:44:01", "url": "https://files.pythonhosted.org/packages/1b/02/5a008e1c8ea5261b69eabad63b5eee5fca1d08593b804a0c16bf1fba7f61/spectrogram-1.0.7.tar.gz" } ] }