How to decrease the LimeSDR-mini's bandwidth

Hi everyone,

Now, I am using C++ to control the LimeSDR-mini.
So, for my wireless testing, The result should be accurate so I need to decrease the bandwidth as much as possible, depend the test result on VNA, 1KHz is good.

But I saw that the minimum bandwidth is 2.5MHz
(LMS_Calibrate(lms_device_t *device, bool dir_tx, size_t chan, double bw, unsigned flags);),

which is too large for me. So is their any way to decrease the bandwidth by C++ code?

Thank you very much.

1 Like

I use the “msresamp_crcf_execute” and friends routines out of the liquidsdr library to tailor my receiving and transmit signal bandwidth.

Using LiquidSdr and limesuite library to work together?
Excuse me, can you shall your code to me, I have no idea about this.

Thank you very much.

I use SoapySDR because it supports more of my devices. SoapySDR actually calls the limesuite routines and there is nearly a one to one match between the routines. The setup and use of the liquidsdr routines is the same no matter which routines you use.

If you grab “microphoneFMTX2.cpp” from “https://github.com/righthalfplane/rfspace”, it is a program that transmits the audio from a microphone as NBFM (12.5Khz). I does things in two steps. It goes from the audio at 48000 hz to the FM bandwidth at 12500 hz converts the audio to FM and then converts the FM to the Sample rate to output a 12500 hz signal. If you want to transmit a tone, you do the same thing.

Everything that you are interested in is in two short sections. At lines 105-115 the programs sets the resample rates. At lines 198-213, it converts to 12500 hz, does the FM modulation, converts to the sample rate and transmits the data.

For what you want -

const double sample_rate = 400000;
float As = 60.0f;

float Ratio2 = (float)(sample_rate/(float)1000);
msresamp_crcf iqSampler2 = msresamp_crcf_create(Ratio2, As);
msresamp_crcf_execute(iqSampler2, (liquid_float_complex *)r2, num, (liquid_float_complex *)buf2, &num2);

may be all you need.

Dale.