Vector Network Analyzer


You can ignore the reported errors.
The errors occur because the MCU calibration expects the chip to be configured in a specific way, which is different than the configuration used for SNA.
There is no way of turning off calibration, and that’s why the errors are reported.
TX LPF is in the baseband path, before the upconversion mixers, so it is not attenuating the transmitted signals.

I think that the setup is not connected properly - LimeSDR Tx and attenuator should be connected to the port labeled OUT (connected to RX1_L in the picture you’ve provided), Rx should be connected to the port labeled DUT in the picture, and DUT should be connected to port labeled IN.
Rx should be connected to the port sampling the reflected wave, and since I couldn’t find info about the bridge you’re using, you might have to exchange 50 Ohm termination and Rx (REF and DUT in the picture).
Please read the VNA documentation on how the setup works.

Directional bridges are sensitive to impedance mismatch, so you might try using a 6 or 10 dB attenuator between bridge and LimeSDR Rx.


is there something similar for the limesdr-mini?


SNA example works with LimeSDR Mini.


im getting ready to do the SNA example on my lime-mini.
im going to be testing an FM-Trap and would like to know if there is any special settings i need to adjust before i do.
i have a 15db and a 6db attenuators. should i connect those to the Tx out on the lime-mini?
i will be using the “” example i presume.
i have ubuntu 18.04 lts installed on my I3-4005u laptop


You need to have SoapySDR installed with Python bindings.
Apart from that, you might want to change the start and stop frequencies in the measureSNA script.
Using 10 dB attenuator between Tx and directional coupler or bridge is recommended. You can try with 6 and 15 dB and compare the results.


ok here is my setup for “” with limesdr-mini on ubuntu 18.04

limesdr-mini Tx > 15dB Attenuator > FM Trap Input
limesdr-mini Rx > Fm Trap Output
i have fm trap set to “in” (this means fm signals do Not go through).
i select Yes

limesdr-mini Tx > 15dB Attenuator > FM Trap Input
limesdr-mini Rx > Fm Trap Out
i have fm trap set to “out” (this means fm signals go through).
i select Yes

is this correct for testing “FM Trap”?

here is what it looks like when i set start freq 68mHz and end freq 128mHz

im trying to “Characterizing Filters Tutorial” as seen on this website


two 75ohm terminators (one always stays on one of the two taps)
two attenuators (15db + 6db) = 21dB for this test
dipole antenna = 2ft of 75ohm RG6 cable (elements = 3.75" each
Channel Master 1220IFD Directional Coupler

tell me what you think about this setup.
i know my Directional Coupler isnt that good but is it terrible?
how much power is being transmitted out the antenna
im using the default script (uneditted)
‘python r50’


High there

I have been trying without success to get the SNA/VNA measurement python scripts to run in my environments.

I have tried it on Ubuntu 18.04 and Windows 10.
when I run python install it completes without any error

Both OS’s arriving at the same error

Any help would be swell.

Kind Regards


Moehahaha. . .

Nevermind, I just used python 2.7 to run this utility. . . and not python 3.6



High folks

I am nearly done with porting this to Python 3.6.

Will update once I am sure it yields useful results .

Kind Regards


Seems to work okay.

These are my results thus far testing a Baofeng RD-5R 2m and 70cm rubber ducky antenna using a shielded RF return loss bridge 0.1 - 3000MHz with 50 ohm SMA termination on REF port.

I don’t have a attenuator at this moment, I plan on building a step attenuator soon.

All these where run from a python 3.6 environment. measureSNA, calculateVNA and the pyLMS7002Soapy repo that I got from myriadrf on github have been ported to the latest python 3.6.

Results are the the same for 2.7 and 3.6, will confirm this some more before commiting to github.

[EDIT] I plan on making a GUI for this tool to simplify the process of using the VNA/SNA to plot charts.


Good night for now.





Making good progress.

Repo - Ported to 3.6 - Complete
Repo - Auto installation of dependencies - Complete

SNA code has been restructured and cleaned up.

Works just as well as the original Python 2.7 demo.

Kind Regards
Ohan Smit



I received my N1201SA Vector Impedance Analyzer today.

Here is a shot from a 70cm Quarter Wave Ground Plane antenna I made some time ago.

With the antenna on the N1201SA analyzer with 12meters of RG58 coax on a mast on my roof.

Then the same with the LimeSDR, Shielded RF RL Bridge, 50 Ohm REF and the same antenna with 12meters of RG58 coax


I still need to add a attenuator to the test loop, but at least the peaks seem to match to some extend :slight_smile:

This is nice :smiley:

Kind Regards
Ohan Smit


I will see if I have the time to check this out, this weekend. Looks good.
Now, when testing, is there an OSL test? (Open/Short/Load[50 ohms])?
I have some of the Ebay bridges to test with (Non shielded at the moment). I also have a pile of different attenuators.

Thank you for your hard work.




The code I have converted only askd for a Short Test prior to DUT sweep.

No Load or Open test required it seems.

Kind Regards
Ohan Smit



I have come to some cross roads.

Does it make sense to store calibration settings of a particular RF test setup.

Eg: Short gets plotted over the sweep range and stored, if user test another device within the same range spec we can forego asking for short sweep again and only test DUT?

This could also be multiple passed for more accurate reference of Short state?

Im just blue skying . . . whatchya think?

This should speed up the process quite a bit :slight_smile:

Kind Regards
Ohan Smit


I’m no VNA expert, but I think the general approach is to always do calibration before measurement, due to even bending of cables having an effect. It is a pain, but something that can be automated if you have deep pockets.


I agree with Andrew. That is why I asked about the subject. Could you please do a general outline of how you have yours hooked up for measurements, physically, so I might repeat the same test (Or as close as possible)?




Here is my setup.

RX1_L and TX1_1 are used here.

This is with a short connected to DUT and 50 Ohm 2W reference.

In this setup the only thing that changes after the short calibration has been run is the DUT gets inserted.

Therefor my idea for a reference calibration stems from my N1201SA Vector Impedance Analyzer, it stores Short,Open and Load values for the whole range once and has one SMA for the DUT.

Since the limesdr only asks for short I’m assuming it has the calibration values for open and 50 Ohm dummy from registers in the device?

So if we could store short calibration values for some range in frequency that we test on often for example 400-500MHz.

We could just run the Return Loss(RL) scan of DUT since the Short power values for 400-500MHz doesn’t change from antenna tune to tune, its just shorted again in our test loop for 400-500MHz

I do understand cables could change the readings, but this is the DUT port, if the testing loop stays constant, it should work in saving some time?

It’s much like taking dark frames for astro photography, you make up master darks for a particular setup.

But sorry, going off topic.

Please correct me if I am wrong
EDIT : Some more pictures for clarity


RD-5R dual band antenna, used for results i posted above.

Kind Regards
Ohan Smit


Storing and reusing short calibration values is possible for scalar measurements.
This could speed up measurements.
In VNA case it is not possible.