# 80MHz bandwidth with LimeSDR-Mini and GQRX [](https://travis-ci.org/gasparka/spectrogram)

[LimeSDR-Mini](https://www.crowdsupply.com/lime-micro/limesdr-mini) diagram:

_**Note:** DC-removal is based on [Linear-phase DC Removal Filter](https://www.dsprelated.com/showarticle/58.php) (Dual-MA 1024 taps)_
## Install
Install the helper script to bootstrap the Docker images (Linux PC/ARM architectures):
`pip install spectrogram`
_**Rasbian note:** Use `pip3`. Executable is installed to `/home/pi/.local/bin/spectrogram`, which is not on PATH by default._
_**Ubuntu 20 note:** Does not work! Use 18 :)_
## Usage
Invoking `spectrogram` does following: 1. If needed, programs the LimeSDR-Mini with FPGA accelerator ( restore with spectogram --fpga_restore) 2. Starts the local ‘SoapySDR-Remote’ server 3. Starts GQRX
_**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!_
Works on RaspberryPi:

_**Notes:** Current draw was around 1.25A@5V. 5’ TFT-Display created some noise in the spectrogram - this was not a problem with HDMI display. OTOH HDMI supports higher resolution, which may cap the CPU if GQRX window is too big (updating the waterfall is expensive)._
### Remote usage
Pair your LimeSDR-Mini with RaspberryPi and execute `spectrogram --server_only` - this sets up a SoapySDR-Remote server. Next, on the monitoring device, execute `spectrogram` - this scans for remote devices and opens GQRX if one is found. Network bandwidth will be around 1 MB/s.
## MISC
### Using without GQRX [See demo notebook](https://github.com/gasparka/spectrogram/blob/master/doc/usage_demo.ipynb)
### Accuracy vs floating-point model
This is a fixed-point accelerator, accuracy against the floating-point model has been verified.

[Reproduce](https://github.com/gasparka/pyha/blob/develop/pyha/applications/spectrogram_limesdr/spectrogram_limesdr.ipynb)
### How is 512 point FFT comparable to 131k FFT?? It’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.
 [Reproduce](https://github.com/gasparka/spectrogram/blob/master/doc/131k_vs_512.ipynb)
In general this is a trade-off - hardware complexity is reduced, but you will lose ~3dB dynamic range.
### Cooling solutions
#### No cooling

Took 5 minutes to go from cold to critical FPGA temperature.
You will risk damaging your board!
#### Heat-sink on FPGA

Temperature is stable at ~65C after 10 minutes.
#### Heat-sink everything

Temperature is stable at ~54C after 20 minutes.
Metadata
Release files for spectrogram 1.0.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| spectrogram-1.0.9.tar.gz | 4.5 kB | Details |
Release files / spectrogram-1.0.9.tar.gz
| Download URL | spectrogram-1.0.9.tar.gz |
|---|---|
| Size | 4.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
645f36cf0689b5f01dd6e5f8ee16b9777df78251fa5f2534d108412c1bf14875
|
|
BLAKE2b-256 checksum How to use checksums |
b35acb62bfcaad04f29597f9134a6d97db0aa48201526a4d7b243ffde238b918
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.6.0 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.6.7
|