Vorläufig / Preliminary, work in progress
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.:
Unfortunately there are different version available, also the accessory package could be different. You should look for the following points:
- With battery (Li-Ion, 400 - 500 mAh)
- With 2 pieces 30 - 70 cm coax cable with SMA plugs
- USB-C cable
- SMA calibration set, Open, Short and 50 Ohm load
- 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.
- Product Name: Vector Network Analyzer
- Color: As picture shown
- Measurement frequency: 50KHz ~ 300MHz (50KHz -900MHz, enable extended firmware)
- RF output: -13dbm (maximum -9dbm)
- RF input CH1: maximum -14dBm caused by the mixer SA612 IP3 point
Frequency accuracy: <0.5ppm
- Measurement range: 70dB (50kHz-300MHz), 50dB (300M-600MHz), 40dB (600M-900MHz) enable extended firmware)
Port SWR: < 1.1
- Display: 2.8 inch TFT (320 x240, touch screen)
- USB interface: USB type-C
- Communication mode: CDC (serial)
- Power: USB 5V 120mA, built-in 400mAh battery, maximum charging current 0.8A
- Number of calibration points: 101 (fixed)
- Number of scanning points: 101 (fixed)
- Display Tracking: 4, Marking: 4, Setting Save: 5
- PCB: 54 mm x 85.5 mm x 11 mm/2.12" x 3.36" x 0.43" (without connectors, switches)
- Measuring S parameters, voltage standing wave ratio, phase, delay, Smith chart...
- Push button/Jog switch: operate menu
- Green: Power ON
- Green: Battery full
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.
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.
- Connect the nanoVNA board via USB cable to a Windows 10 PC.
- Power ON the nanoVNA via switch, Windows will install a serial driver.
Start program nanoVNA, Select the proper Windows Port Name.
Click on button Connect.
For a first test click on button Get Data and see if you get a curve.
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.
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.
I pulled at the connectors. Sometimes, they would come off. Then the cable was dumped to the trash.
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.
Coax cables: for a connection to a test object (jig) you need two paired coax cables with a length of about 30 - 70 cm each.
Open: Because the often delivered Open SMA part is not good suited it is better to use a female-female adapter instead. The reason is, that the Open SMA part does not have a good coax structure.
Short: In this case the delivered part is usually OK. In order to protect the thread from wear, a permanent female-female adapter is recommended.
Load 50 Ohm: This resistor should have a tolerance of better than 2%. In order to protect the thread from wear, a permanent female-female adapter is recommended.
Through: In this case two coax cables are connected with an female-female adapter, between CH0 and CH1 of the nanoVNA.
Isolate: In this case at CH0 a coax cable with the 50 Ohm Load must be connected. The other coax cable must be connected to CH1, best with another 50 Ohm Load resistor. The quality must not be very good, a home made version with a SMA socket and two SMD 0805 1% 100 Ohm resistors soldered in parallel should do it.
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).
C0: Calibration OK, location 0 (default at power up)
c0: Measuring out of the calibration frequency range
R: Reflection Tracking
S: Source Match
T: Transmission Tracking
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.
Up to 300 MHz the return loss is about below 50 dB.
Between 300 to 600 MHz the return loss is about below 40 dB.
Between 600 to 900 MHz the return loss is about below 30 dB.
Considering an antenna, a return loss of more than 30 dB is still a very good value (SWR 1:1.06 = 0.1% of reflected power).
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.
Up to 300 MHz the return loss is about below 27 dB
(Reflection < 5%).
Between 300 to 600 MHz the return loss is about below 18 dB (Reflection < 13%).
Between 600 to 900 MHz the return loss is about below 14 dB (Reflection < 20%).
The actual settings for the Reference Plane are:
- C0: 50 cm RG316
- C1: Testboard
- C2: NanoVNA SMA
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?
A Current meter with minimum 4 digits and full scale of 40 - 60 mA.
A Volt meter with minimum 4 digits and full scale of 2 - 4 V.
A stable voltage source about 2 - 3 VDC.
- A SMA male plug to connect.
- Some wires and clips to connect.
- The + of the voltage source is connected to the + of the current meter.
- The - of the current meter is connected to the center pin of the SMA plug, and the + of the volt meter.
- 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:
50 Ohm Load SMA: 57.00 mA, 2.891 V -> 50.72 Ohm, +1,44%
NanoVNA CH0 Input SMA: 58.68 mA, 2.889 V -> 49.23 Ohm, -1.54%
NanoVNA CH1 Input SMA: 57.69 mA, 2.892 V -> 50.13 Ohm, +0,26%
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.
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:
Inductance: 2000e-12 H, because at 900 MHz the impedance was capacitive (lower part)
Offset: -60 ps, because at 900 MHz the curve trend was in the direction to Open (right border)
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:
Inductance (H(e-12)): 2000
Offset Delay (ps): -60
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.
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
- CAPTURE button gets screenshot from NanoVNA
- Communication layer now works more reliably
- Improved error handling
- Calibration now works as expected, added RESET button
- Improved user interface for calibration (button highlighting, etc)
- Fixed frequency setup issues
- Improved S1P and S2P export
- Improved support for different firmware versions
- Firmware version detect and display in the app title
Originally provided by Hugen without source; binary available on Google Drive
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] Options: -h, --help show this help message and exit -f FILE, --file=FILE read from FILE -r RAWWAVE, --raw=RAWWAVE 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 frequency -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')
SW Windom Antenna 80m
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:
RG316, 100 cm long, attenuation 86 dB/100 m
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:
- S11 in dB (Return Loss)
- S11 Smith Chart
- S11 RealZ
- 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
- Reasons to upgrade
- TDR (Time Domain Reflectometry) capability in firmware (measure coax cable length).
- Operation up to 1500 MHz (at reduced performance).
- Switch into DFU mode without hardware jumper.
- Change from 2 trace to 4 trace firmware (or vice versa).
no longer needed with Hugen aa firmware 0.4.0-3
There you have a bigger font and 4 traces if needed
- better synergy with PC software, e.g. TAPR VNAR4 fast scan
Enable electrical delay setting, see here for an explanation
Many special firmware are available elsewhere with different naming, and without aa versions having larger text.
My favorite, aa version
HuGen firmware naming conventions and differences from eddy555 firmware
- A typical name is NanoVNA-H_900_ch_20191003.dfu
recent aa (larger text, 2 trace) firmware no longer requires separate clear memory.
- owner or special purpose.
eddy555 "owns" NanoVNA; HuGen "owns" NanoVNA-H
HuGen originally provided 4 versions for each release date.
900 <- obsolete
- most devices can overclock for 900MHz third harmonic.
- To avoid artifacts with weaker devices, use 800 firmware versions
- since 20191009, overclock tuning is user-adjustable
aa / ch
- aa (Antenna Analyzer) limited to 2 traces but usefully larger text.
- Use ch for 4 traces, but smaller text
- date code; newer is not always better (but e.g. 20191009 is better than 20191003).
- Some group messages report bugs.
- format for DFU utilities, e.g. verify that firmware matches USB device ID
- hex is simpler, lacks ID matching. DFU utility can convert either way.
differences from eddy555 firmware thanks to QRP
- hugen79 firmware has imbalance gain correction, which is missing from eddy555 firmware
- hugen79 firmware has a little different logic for frequency band/gain change.
- 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.
On Windows STSW-STM32080 package
- drivers and DFU utilities for managing and installing firmware
available here without registering
- STMicroelectronics wants package users to register, then send confirmation to your email address for access.
- This requires browser cookies for ST's website at least temporarily enabled...
- Windows installation includes a User Guide
The installer is probably named DfuSe_Demo_V3.0.6_Setup.exe because ST expects their target audience to create firmware installers motivated by this.
Converting other firmware formats to DFU format.
DfuSe_Demo_V3.0.6_Setup.exe also installs DfuFileMgr.exe e.g. in
C:\Program Files (x86)\STMicroelectronics\Software\DfuSe v3.0.6\Bin
- First, get e.g. an eddy555 firmware file
- click e.g. nanovna-firmware-0.2.2.zip to download. e.g. in C:\addons
- Next, unzip it e.g. in C:\addons\nanovna-firmware-0.2.2
- Next, to convert e.g. that C:\addons\nanovna-firmware-0.2.2\build\ch.bin to DFU format:
Launch DfuFileMgr.exe Choose GENERATE DFU from HEX and click OK.
Choose your action: I want to GENERATE a DFU file from S19, HEX or BIN file
- Click half way down on the right side.
- Navigate to e.g. C:\addons\nanovna-firmware-0.2.2\build\
- Click on e.g. ch.hex, and then Open.
- Click Generate...
- You will be asked to save the file e.g. as eddy555_0.2.2.dfu, and saved it in the same directory.
- For message Success for Image for alternate setting..., click OK.
Use e.g. C:\addons\nanovna-firmware-0.2.2\build\eddy555_0.2.2.dfu to flash NanoVNA by DfuSe Demo 3.0.6.exe
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 -v -d 0483:df11 --alt 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 -v -d 0483:df11 --alt 0 -D NanoVNA-H_20191125_AA.dfu
Clearing nanoVNA flash memory
cleaning settings to default states in old firmware, before DFU command is provided in menu.
If the old firmware has a clearconfig command:
connect to your NanoVNA with a Terminal Emulation, with e.g. PuTTY (9600 baud 8N1)
enter help to list all supported commands
entering clearconfig resets all configuration settings to defaults
power nanoVNA off and on for default settings to take effect
If no clearconfig command is provided:
A few firmware installations fail until after first loading DMR-CLEAR_MEMORY_DFU.dfu.
- After loading this, your nanoVNA will not again work until after installing other firmware.
USB Product ID must be DF11, not 0000
recent aa (larger text, 2 trace) firmware no longer requires separate clear memory.
primarily intended for use with TAPR VNA v4 PC software
Contact Email, please enter your Email address
The entered Email address will not be published, or given away.
List of pages in this category:
-- RudolfReuter 2019-09-23 16:03:27