80Mhz bandwidth spectrogram on LimeSDR-mini


This is actually the coolest thing I saw here. Nice work.


We are looking at your code. We only want an adjustable span of <10 MHz. Which part should we modify?


Biggest problem:

Lime fixes this with a dynamically configurable PLL in the FPGA. I had to throw away this system in order to save resources, so in my image the phase shift is constant and works in the range of 80e6 - 40e6.

Next, you also need to tune the amout of taps in the DC-removal and reduce the size of average pooling.
All this needs FPGA work and IMHO it is not worth it. 10M should be solvable in software, i believe even ARM like ODROID XU4 could do it.


Looks pretty good. Any chance of supporting the original limesdr?


Not in my TODO list, but never say never.


One question. Was there any particular reason for not using the LMS7002M’s DC Removal function and implement it in FPGA?


LMS DC-Removal did not work that well for me. I don’t know how it is implemented, but note that the output must be 12-bits - which, according to my experiments, is not sufficient to completely cancel out the DC.

My implementation is based on: https://www.dsprelated.com/showarticle/58.php i.e. two chained moving averages with 1024 taps.


Tested running on PI:

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).

Also, i have decided to not support the LimeNET-Micro - FPGA designs differ significantly.
I now consider this project ~complete, no major features are expected.


Thanks for this great project. I would like to test alternative visualisation of FFT coming from FPGA. What is the best way to test it :

  • Flash your firmware
  • Use your modified LimeSuite
  • Know how to read FFT (guess a standard way but getting FFT bin instead of I/Q)

As you dockerize it, it is not trivial…Let me know if I am under a right way of using your custom FPGA firmware.


I have added a notebook that demonstrates how to do this:

You will use ‘spectrogram --server_only’ - this handles flashing the FPGA, using the modified LimeSuite and starting the SoapySDR server. Then you can connect to the Soapy server as usual. Difference is that you will be reading out FFT frames not IQ samples.


i ordered this Thermal Pad
hope this works good.
any info would be great on the thermal pad leaking and temps you guys are getting.
love the thermal pictures on github.


i took the shielding off the lms7002m and i cant tell you the height dimensions but i took a picture and you can see for yourself.

looks pretty close to the same height as the chip close to the usb connector

i was wondering what could be expected as far as spurs and rf interference if we kept shielding off and put a heatsink directly on the lms7002m and then put the dongle in an altoids case like this one


My experience is that the LMS7 does not need additional cooling, FPGA is the hot-spot. Thus i have always kept the shielding on.


i was checking temps with a hand held lazer gun and the hot spots are right above the fpga but before the gold contacts. i didnt measure on the back side of the board but from what it (looks like) i bet the Local Oscillator is the hot spot.
when i measure all areas on the chips it seems like its on the top edge of the chip (which make no sense) unless its on the bottom side of the board.
which (again) is where the Lo is.