80MHz bandwidth with LimeSDR-Mini and GQRX
Note: DC-removal is based on Linear-phase DC Removal Filter (Dual-MA 1024 taps)
Works on Linux PC distributions (Ubuntu, Manjaro ...) or ARM boards (Rasperry Pi 3/4, Jetson Nano ...). Install the helper script to bootstrap the Docker images:
pip3 install spectrogram
Rasbian/Ubuntu note: Executable is installed to
~/.local/bin/spectrogram, which is not on PATH by default. You need to execute it by using full path!
spectrogram does following:
- If needed, programs the LimeSDR-Mini with FPGA accelerator ( restore with
- Starts the local 'SoapySDR-Remote' server
- Starts GQRX - this connects to the SoapySDR server and displays the spectrogram
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).
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.
Using without GQRX
Accuracy vs floating-point model
This is a fixed-point accelerator, accuracy against the floating-point model has been verified.
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.
In general this is a trade-off - hardware complexity is reduced, but you will lose ~3dB dynamic range.
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.
Temperature is stable at ~54C after 20 minutes.