/!\ Vorläufig / Preliminary, work in progress /!\

Translate (Übersetzte) with Google

/!\ If you mouse click on a picture it will be expanded. You can go back to the web page with the back arrow of your web browser.


A low cost Vector Network Analyser shows up on https://amazon.de and some other usual places. It works from 50 KHz up to 900 MHz, the dynamic range lowers at the higher frequencies.

The main description is here http://nanovna.com/.

For more nanoVNA applications look here, e.g.:

A very good web page about the nanoVNA is unfortunately in Japanese, but can be easily translated in the local language via Web-browser Chrome.

Unfortunately there are different version available, also the accessory package could be different. You should look for the following points:

  1. With battery (Li-Ion, 400 - 500 mAh)
  2. With 2 pieces 30 - 70 cm coax cable with SMA plugs
  3. USB-C cable
  4. SMA calibration set, Open, Short and 50 Ohm load
  5. SMA female-female adapter


A shielding is not necessary.

See a photo of the black version on the right.

A good housing can be 3D printed, see the photo on the right.

I like to collect and document all useful informations about that NanoVNA.




On the right side you see a picture of the board.

Since June 2019 there is also a news group for information exchange and useful documentation and a wiki. You have to create an acount in order to access the news group.

There is a complete tutorial and getting started manual for the use of the nanoVNA in German and English from Gunthard Kraus DG8DB, (54 pages, including 5 practical examples), numbered V1.4.2 for the NanoVNA-saver Version 0.2.0.


Software NanoVNA

There is also a Windows software NanoVNA version 1.03 for easier usage, and also storing the data as Touchstone files, with specific extensions e.g. .s1p and .s2p.

Windows 10 does have a serial port driver already on board.

The screenshot on the right shows a curve from a S11 (reflection, open) calibration.

NanoVNA usage



For some applications you need 6 - 10 dB attenuators for the needed frequency range.

You can either buy them (about 4.20 EUR on Ebay, 0 - 6 GHz) or if you want to have it quick, and have the parts, you can build your own, which must not be worse compared to a commercial one.

The resistor (SMD 0805) values are shown on the photo on the right.




SMA cables

The detailed data of the shown coax cables see SpectrumAnalyzer_LTDZ#SMA_cable

See the picture on the right side, which shows all mentioned coax cables.

The semi rigid coax cables have very low loss, but are primarily used to box internal connections.

The best coax cables for measuring is in my opinion RG316.

Some hints from Tom DG8SAQ regarding measurements cables. When I did use VNAs professionally in a big lab, I did two things before I started taking serious measurements with a set of measurement cables.

  1. I pulled at the connectors. Sometimes, they would come off. Then the cable was dumped to the trash.

  2. I wobbled at the cables while doing a measurement. If the measurement results changed then again the cables went to the trash can. Most sensitive to mechanical stress is an S11 measurement of a good load. But note that anything below -40 dB for this measurement is insignificant.


All Vector Network Analyzers need to be calibrated.

Compared with a Scalar Network Analyzer the phase (0 - 360 degree) of the radio frequency comes into the game. While at 1 GHz the wave length is 300 mm, one degree is less than a Millimeter.

/!\ So, we have to take care about a Millimeter length!

Because measuring just at the SMA connector is not practical, usually a flexible coax cable (20 - 50 cm) is used. Therefore the calibration must be made at the end of the coax cable. This is now your Reference plane.


Usually the necessary parts come with the nanoVNA. See the picture on the right.


The screen capture on the right shows a CH0 S11 (Reflection) of the 50 Ohm Load resistor after calibration (101 points).

In order for better reading I have it expanded by a factor of 2 (640 pixel wide).

On the left side of the screen you see the Calibration Status Cn DRSTX in vertical writing, if a calibration was already made (saved).

The little green spot in the center of the Smith Chart shows a very good calibration.

The yellow curve S11 represents how much power is reflected from the Load, and hence is known as the reflection coefficient or return loss (in dB). If S11 = 0 dB, then all the power is reflected. The higher the dB value, the better is the impedance match. This value is a bit noisy on the screen.


The screen capture on the right shows a CH0 - CH1 Through after calibration.

It is obvious, that the input impedance of the nanoVNA CH1 input does not perfect match the 50 Ohm Load resistor. But how much? About 1.8%. That is not bad, compared with reactance difference.

The actual settings for the Reference Plane are:

50 Ohm measuring

In order to measure the 50 Ohm values more accurate, without a R-Bridge, a Current-Voltage measuring could be done. What does you need for?

  1. A Current meter with minimum 4 digits and full scale of 40 - 60 mA.

  2. A Volt meter with minimum 4 digits and full scale of 2 - 4 V.

  3. A stable voltage source about 2 - 3 VDC.

  4. A SMA male plug to connect.
  5. Some wires and clips to connect.
  6. The + of the voltage source is connected to the + of the current meter.
  7. The - of the current meter is connected to the center pin of the SMA plug, and the + of the volt meter.
  8. The - of the voltage source is connected to the GND of the SMA plug and the - of the volt meter.

In my case I have a multimeter with 60 mA full scale for the current measuring. The volt meter is a multimeter with 4 V full scale. Now to the measurements:

I am aware that the Ohm values are not precise to the 4th digit, but the differences should be OK. Unfortunately the difference CH0 input to the 50 Ohm load is in the opposite direction from 50 Ohm, it is about 3% mismatch. That is compensated by the calibration.

SDR-Kits Testboard

From company SDR-Kits you can buy a very useful Testboard. Fortunately the documentation can be downloaded from the web page, so you are able to make a home made version. See the picture below.


With the very useful Python software nanoVNA-saver you can calibrate more detailed, e.g. with 505 points instead of the standard 101 points. See below a diagram of the 50.0 Ohm Load in the Testboard, calibrated with 505 points.


That can be even improved by Calibration Settings (compensation). With the Load Settings:

See the diagram below. The S11 Return Loss was improved at 900 MHz by about 10 dB.




For an easier finding of the Calibration Setting fields have a look at the Calibration window on the right.

For a better remembering of the Calibration File Name I put it in the Notes field.

In order to enter Calibration standards settings, you have to remove the mark in the field Use ideal values.

Then enter in the block Load the settings:

In the field Saved settings it is good practice to set a name, in my case Testboard.

With a click on the button Save the settings are stored for the next use.

At the next use select at Saved settings in the name field the name of your settings. Then click on Load.

In nanoVNA-saver version 0.1.3 it happened to me, that after clicking on button Load, no settings appeared in the fields. Clicking on the two fields made them visible.


PC Software

There are several free PC program available, most are for Windows, but there is also a Multiplatform program nanoVNA-saver.


nanoVNAS-aver is available on latest. It can be used on Windows, Linux, MacOS (Python 3 based). A pre-compiled version of Windows is also available, Click nanovna-saver.v0.1.3.exe to download the packaged windows version. More information is on GitHub.

Launch the downloaded file and the software will launch directly (no installation required). On first boot, you may get a security warning from Windows. In this case, click Detailed Information and click the Execute button.

For the first use connect the NanoVNA unit with the USB cable and turn on the power. Windows should have given a COMx port to the NanoVNA.

Start NanoVNA-Saver. The connection between NanoVNA-Saver and NanoVNA itself is done by Serial port control at the lower left of NanoVNA-Saver. The COM port to which the NanoVNA unit is connected should be automatically recognized. If you start NanoVNA-Saver before turning on the power, it will not be recognized automatically, so press the Rescan button to recognize the port. When the COM port is recognized, press the Connect to NanoVNA button. This links to the USB connection. After that, it obtains data from the NanoVNA and draws graphs.

If just the 50 Ohm Load is connected to channel CH0, you get an S11 drawing like the one below.




When the Connect to NanoVNA button is pressed, the current sweep range (frequency) is read from the NanoVNA main unit, and displayed in the block Sweep control.

To change the sweep range, simply write the desired frequency in this field, but the Hz unit is a bit cumbersome. In that case, use M or K for ease (upper case). This is the same as the input method on the NanoVNA main unit.

By a click on the Sweep button you start a new sweep.

An important field is Segments. Because NanoVNA sweep length is 101 points (frequencies) only, NanoVNA-saver can collect several segments for one sweep in NanoVNA-saver. In case of the shown diagram, 5 segments are used.

Another good feature are the markers. Once selected, they can be moved in the diagram with the mouse.

Each marker data is evaluated and listed, as shown in the right chart.


NanoVNASharp MOD v3 by QRP RX


Python, from Hugen

There is a nice Multiplatform, command line Python3 program for basic usage. You find the archive in python.zip.


$ python3 nanovna.py -help
Usage: nanovna.py: [options]

  -h, --help            show this help message and exit
  -f FILE, --file=FILE  read from FILE
                        plot raw waveform
  -p, --plot            plot rectangular
  -s, --smith           plot smith chart
  -L, --polar           plot polar chart
  -D, --delay           plot delay
  -G, --groupdelay      plot groupdelay
  -W, --vswr            plot VSWR
  -H, --phase           plot phase
  -U, --unwrapphase     plot unwrapped phase
  -T, --timedomain      plot TDR
  -c, --scan            scan by script
  -P PORT, --port=PORT  port
  -d DEV, --dev=DEV     device node
  -F FREQ, --frequency=FREQ
  -g GAIN, --gain=GAIN  gain (0-95)
  -O OFFSET, --offset=OFFSET
                        offset frequency
  -S STRENGTH, --strength=STRENGTH
                        drive strength(0-3)
  -v, --verbose         verbose output
  -l, --filter          apply IF filter on raw wave plot
  -C FILE, --capture=FILE
                        capture current display to FILE

# Example plot
$ python3 python/nanovna.py -p
# see the diagram on the right.


Example display capture of a 8.0 Mhz crystal in Tee connect, see on the right side.

# Display capture
$ python3 python/nanovna.py -C nanoVNA_edy555-7_crystal-8MHz-Tee_5Hz.png

Unfortunately I had to edit the USB address in Python3 program nanovna.py, see:

# line 356
    nv = NanoVNA(opt.device or '/dev/cu.usbmodem401')
# must be
    nv = NanoVNA(opt.device or '/dev/cu.usbmodem4001')

Measurement Examples

SW Windom Antenna 80m


A previous measuring of the WindomAntennaFD4 with the VA5 Vector Antenna Analyzer showed comparable results.

It is very nice to include in the graph a vertical gray bar which spans the radio amateur frequency band.


SimSmith Coax Cable S11

In order to compare S11 reflection measurement and simulation with program SimSmith I used 2 open end coax cables with SMA plug to show the effect of cable loss.

The used coax cables are:

  1. RG316, 100 cm long, attenuation 86 dB/100 m

  2. similar Ecoflex 15, 116 cm long, attenuation 10 dB/100 m, see the picture on the right. The coax cable was an old surplus part, and adopted to a SMA plug.

After calibration direct at the nanoVNA CH0 SMA female plug, a 1 m coax cable connected to the reference plane with open at its other end, should give perfect circles spiraling inwards in the smith chart, see below.


Compared with the measured 101 points of the nanoVNA, the curve in the nanoVNA-saver program looks much smoother with 505 points. See the picture on the right and below.

What also is measured by the Python3 program nanovna-saver.py is the TDR (Time Domain Reflectometry) cable length shown on the left side of the window. In this case 1.004 m, which is correct. Before the measurement you have to define via menu the velocity factor of the specific type of the coax cable, in this case 0.695.

In the program nanoVNA-saver no extra calibration was used.

The diagram nanoVNA2_RG316-100cm-900MHz-RL.png below shows the measurement of a 100 cm RG316 coax cable with SMA male plugs. The calibration of the nanoVNA was made at the CH0 female plug, and saved in C1. The measured Return Loss of 1.82 dB fits good to the theory of 1.78 dB.

# RG316 100 cm   SMA plug
2 x 0.86 dB + 2 x 0.03 dB = 1.78 dB





Below is the SimSmith simulation of the previous coax cable setup. To me it looks very similar to the previous measurement, so I assume that my measurement is correct. The coax cable data (Mdl) where found in the SimSmith data base.



Next comes a low loss rigid coax cable, with measurement and simulation. Because of the lower loss the width of the spiral boarder is much thinner than in the case before, see below.

What also is measured by the Python3 program nanovna-saver.py is the TDR (Time Domain Reflectometry) cable length shown on the left side of the window. In this case 1.16 m, which is correct. Before the measurement you have to define via menu the velocity factor of the specific type of the coax cable, in this case 0.82.



Below is the SimSmith simulation of the previous coax cable setup. To me it looks very similar to the previous measurement, so I assume that my measurement is correct. The coax cable data (Mdl) where not found in the SimSmith data base, therefore inserted manually.




Input resistance with VA5

In order to have a reference I measured with the Vector Antenna Analyzer VA5 the Input Resistance of the NanoVNA channel 0 and channel 1.

The VA5 was connected directly with an adapter BNC to SMA male.

The NanoVNA was not powered on while the measurement.




The measurement traces are:

  1. S11 in dB (Return Loss)
  2. S11 Smith Chart
  3. S11 RealZ
  4. S11 parallel C





It surprised me, that the RealZ of channel 1 is much lower (38.4 Ohm) than channel 0 (43.2 Ohm) at 600 MHz.














/!\ USB Product ID must be DF11, not 0000

Many special firmware are available elsewhere with different naming, and without aa versions having larger text.


DiSlord has made a very good firmware for the nanoVNA, version 1.0.50 Download.

To flash it with dfu-util in the Terminal (Linux and MacOS):

# Replace the SPACE character in the file name with _

# extract archive
$ unrar e NanoVNA_v1.0.50.rar

# nanoVNA must be in DFU mode
$ dfu-util -a 0 -D NanoVNA-H_v1.0.50.dfu

For more details and a menu map see nanoVNA-FirmwareDiSlord



900 <- obsolete

aa / ch



differences from eddy555 firmware thanks to QRP

  1. hugen79 firmware has imbalance gain correction, which is missing from eddy555 firmware
  2. hugen79 firmware has a little different logic for frequency band/gain change.
  3. hugen79 firmware has correct default touch calibration,
    • which works ok with NanoVNA-H hardware even with no touch calibration.
    • eddy555 firmware default touch calibration is incompatible with NanoVNA-H hardware;
    • touch screen calibration is required after installing eddy555 firmware.

STM32 programming

On Windows STSW-STM32080 package

On Linux it needs some expertise:

# Install program
$ sudo apt-get install dfu-util
# show the help info
$ man dfu-util

# for example Hugen version 0.4.0-3
$ dfu-util -a 0 -D NanoVNA-H_20191125_AA.dfu

On MacOS it needs some expertise:

# Install program
$ brew install dfu-util
# show the help info
$ man dfu-util

# for example Hugen version 0.4.0-3
$ dfu-util -a 0 -D NanoVNA-H_20191125_AA.dfu

DfuSe fails? Use ST-Link V2 adapter with hex format to recover bricked devices

Clearing nanoVNA flash memory


  1. Manuals, Timing, Ham Radio, Test Equipment, KO4BB

  2. Power vs. Voltage

  3. Online dBm - Volt converter

  4. Comment from Vitor CT2JSA to this Spectrum Analyzer

  5. Capacitor Impedance Calculator

  6. VA5 Antenna Analyzer

  7. wikipedia, Smith-Chart

  8. MegiQ, RF Tools, Video

  9. electronic-notes, what is a VNA?

  10. Agilent BTB_Network_2005-1.pdf, VNA Tutorial

  11. nanoVNA user documentation, ormpoa

  12. Wheatstone bridge, oristopo

  13. Using the VNWA Testboard Kit

  14. RF Demo Kit Testing tutorial released

  15. inductor current time delay, w8ji

  16. nanovna-H – mobile UHF antenna VSWR sweep, owen duffy

  17. A way to improve the accuracy of the calibration of a male SMA connector

  18. 7.5 MHz peak, fix, owen duffy

  19. Noise improvements

  20. Good explanations about nanoVNA, Ohan Smit ZS1SCI

  21. Tests de mesures avec le NanoVNA par Yvon F6GLE, translate within Chrome

  22. Getting Started with the NanoVNA -Part 3 – PC Software, HexAndFlex

  23. DG8SAQ-VNWA-software-documentation-user-guide

  24. wikipedia, coax cables

  25. Hagster, 3D print examples

  26. nanoVNA Power Output

  27. Touchstone file explained

  28. keysight, touchstone File format


  1. Firmware versions, oristopo

  2. Replace NanoVNA Firmware from Windows, PDF

    • USB Product ID must be DF11, not 0000

  3. nanoVNA shell commands

  4. Hugen VNA-H, releases on github, 0.4.0-3, AA-version installed

  5. Hugen archive

  6. edy555, ttrftech, originator

  7. Erik

  8. Android DfuSe programming

  9. DfuSe fails? Use ST-Link V2 adapter with hex format to recover bricked devices

up to top

Contact Email, please enter your Email address

/!\ The entered Email address will not be published, or given away.

Comment this page
Are you human?

List of pages in this category:

-- RudolfReuter 2019-09-23 16:03:27

Go back to CategoryAmateurRadio or FrontPage

nanoVNA (last edited 2021-07-12 15:56:08 by RudolfReuter)