Vector Network Analyzer

Hi all.
Does somebody know the brand/model of the 3 ports directional coupler used in this video:
It seems a Mini Circuits one but I can’t read the model. I would like to read the specs/features/price/shipping.

Actually, I would prefer to get a link to some suggested design to build one for HF usage < 30 MHz.
I’ve found some designs on the web but all have 4 ports instead of 3. I’m not an expert, but would like to build one since I already got good results with my bandpass filter and TFD antenna.


To make 3port coupler add 50ohm termination to a full coupler.

Before you splash out on high-end parts like minicircuits, have a look at this… it’s surprisingly accurate given the price.

Thank you! Using your answer I searched again and got a better understanding of the topic.

Thank you for pointing me to that device. Price is interesting and I will certainly consider that if I will fail in building one.

using the answers above I’ve refined my search and found this web page by Michael G. Ellis:

…where I could get info on turns numbers and their effects, together with a drawing to wind a single binocular transformer to build the coupler:

Ever since I have a binocular core I would try to wind it as soon as I get some time :slight_smile:

@modimo @gerryk : only info I’m still missing is about the proper port attenuation. I’m thinking to use N1 = N2 = 3 getting 9.57 dB coupling… would this be a proper value for this usage scenario?

This demo uses simplified method. If you want to obtain lab equipment grade performance you need to use two receiving channels. One to measure incident wave and one to measure reflected one. In lab equipment there are dual directional couplers for each port. One coupling to measure incident(reference) wave and one for reflected. In simplified case you assume incident wave is constant which is not true with more complex load.

For myself i bought two of those (17usd each):

See here for VNA bridge up to 300 MHz

Hello @gerryk .
I just wanted to tell you that I ordered the device you mentioned since after 5 days I did not manage to lock down some time to build one by myself.
I still want to do that for personal learning/satisfation. So will update this thread sooner or later :slight_smile:

I’ve also found 2 interesting videos about this device with measurements:

comparison with 2 others:

specific for this device:

thanks again for your suggestion,

I have one myself Mario and find it very useful, and for my purposes very accurate indeed.

Please see here too ->

Sourced from ->
SW for inspiration here :wink:

Hello @gerryk. Did you use it in the 15-30 MHz range ? Is it accurate in that freq range as well ?

Hi Mario… I didn’t. The pyLMS7002 API is sort of hard-coded to frequencies > 240MHz. I had initially thought it was just the VNA code that had the limitation, but it’s the Python API also. It seems that there is some hackage required to set the LO frequency to some arbitrarily low value, but such that the frequency range is within the sample rate, and do the necessary maths to generate a TX signal and receive it before processing out the phase/amplitude.

I started working on this, but since got distracted… and I now have a real VNA, so the impetus is not as strong.

I believe it should be relatively straightforward, but would take some time, since the documentation is pretty bad, and everything I have figured out is from reading the code.

Hello @9a4db and thank you for these links. Really interesting pages with lots of stuff to learn :slight_smile:

1 Like

@gerryk you’re right ! I forgot that previous posts in this thread actually mentioned some changes needed to the VNA scripts. Something that I probably started looking at when I was still waiting for the LimeSDR board.

I should grab and read the sources again. I’ve seen @M0GLO posts about the first 60 MHz and different tuning/scan approaches. In September I’ve used soapy_power to run scans at HF frequencies and also that SW had to be initially modified to work at HF. I guess there could be some hint there on how to work at HF in pyLMS7002 VNA scripts as well.

BTW, here are a couple of scans at HF showing some recent Sun radio emissions:


Wow… that’s awesome @mariocannistra
What sort of antennas are you using for this?
Radioastronomy is something I am fascinated by.

I’ve built one TFD antenna with 800 ohm termination + a 16:1 balun to match the 50 ohm low loss coax. The antenna is at about 2.8 m from the ground, temporarily held by 2" PVC pipes + vents. Will replace with bigger wood poles in the future.
The RX is a LimeSDR and I’ve built also a 15-30 MHz bandpass filter to shut-up the FM stations…

For the antenna I’ve followed the instructions published by Dave Typinski for the TFD array (4 TFD antennas to get left and right polarization).
I currently have just one TFD but hope to step up to 2 in a crossed dipole and then possibly to the full 4 elements configuration. Time availability is the real issue…



I’m struggling to get this running on Windows 10. I’m attempting to build cyLimeLib which fails with the following:

D:\Download\LMS7002M\pyLMS7002M\cyLimeLib\win>python27 install
running install
running bdist_egg
running egg_info
writing cyLimeLib.egg-info\PKG-INFO
writing top-level names to cyLimeLib.egg-info\top_level.txt
writing dependency_links to cyLimeLib.egg-info\dependency_links.txt
reading manifest file 'cyLimeLib.egg-info\SOURCES.txt'
writing manifest file 'cyLimeLib.egg-info\SOURCES.txt'
installing library code to build\bdist.win32\egg
running install_lib
running build_ext
cythoning cyLimeLib.pyx to cyLimeLib.cpp
warning: cyLimeLib.pyx:33:16: local variable '_devStr' referenced before assignment
warning: cyLimeLib.pyx:34:12: local variable '_devStr' referenced before assignment
warning: cyLimeLib.pyx:35:40: local variable '_devStr' referenced before assignment
building 'cyLimeLib' extension
creating build
creating build\temp.win32-2.7
creating build\temp.win32-2.7\Release
C:\Users\Allen\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -IC:\Sync\Dev\Python27\include -IC:\Sync\Dev\Python27\PC /TpcyLimeLib.cpp /Fobuild\temp.win32-2.7\Release\cyLimeLib.obj -O2
d:\download\lms7002m\pylms7002m\cylimelib\win\pstdint.h(444) : error C2371: 'uint32_t' : redefinition; different basic types
        cyLimeLib.cpp(238) : see declaration of 'uint32_t'
error: command 'C:\\Users\\Allen\\AppData\\Local\\Programs\\Common\\Microsoft\\Visual C++ for Python\\9.0\\VC\\Bin\\cl.exe' failed with exit status 2

I’ve given up on trying to get LimeAPI working (see above) and switched over to libusb which at least allows me to run the scripts. I have made several passes against a chinese 900MHz-ish dipole and the results I’m seeing don’t appear to be working correctly. Specifically, my SWR and Smith charts are all over the place, and S11 > 0 near what should be the antenna’s tuned freq.

Hardware Setup

  • LimeSDR USB:
    Searching for LimeSDR…
    LimeSDR info:
    FW_VER : 4
    DEV_TYPE : 14
    HW_VER : 4
    EXP_BOARD : 1

    LMS7002M info:
    VER : 7
    REV : 1
    MASK : 1

  • Chinese-grade 0Ω SMA short

  • Mini Circuits ZFDC-15-5-S

  • LimeSDR RX1_L wired to CPL

  • LimeSDR TX2_1 wired to 10dba attenuator to OUT

  • Short and DUT connected to IN

Software Setup

Sweep configuration in and

startFreq = 700e6
endFreq = 1100e6
nPoints = 401

Setup for TX low freq LNA in


Test Results

Feedback from a colleague:

"It seems that you have used TX and RX channels which are different than the ones in the example.

Changing channels is not trivial, and requires additional LMS7002M configuration.

To check that the setup is correct, please use the VNA example with connections as in documentation, just change start and stop frequencies."

Hope that helps.