80MHz bandwidth with LimeSDR-Mini and GQRX
LimeSDR-Mini diagram:
Note: DC-removal is based on Linear-phase DC Removal Filter (Dual-MA 1024 taps)
Install
Works on Linux PC distributions (Ubuntu, Manjaro ...) or ARM boards (Rasperry Pi 3/4, Jetson Nano ...). First install docker:
curl -fsSL https://get.docker.com | sh
You must then add your user to the docker group:
sudo groupadd docker
sudo usermod -aG docker $USER
Log out and back in (or restart the computer) so that your group membership is re-evaluated.
Finally you need to install the 'spectrogram' script:
pip3 install spectrogram
Ubuntu note: You may need to first install pip3 with sudo apt install python3-pip
.
Rasbian/Ubuntu note: Script is installed to ~/.local/bin/spectrogram
, which is not on PATH by default. You need to execute it by using full path!
Usage
Invoking spectrogram
does following:
- If needed, programs the LimeSDR-Mini with FPGA accelerator ( restore with
spectogram --fpga_restore
) - 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).
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
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.
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.