¿ªÔÆÌåÓý

ctrl + shift + ? for shortcuts
© 2025 Groups.io

Issue with nanoVNA-Saver in at least the last several versions.


 

Rune,

There seems to be a problem with nanoVNA-Saver in all versions (at least the last several.) I have a nanoVNA which often returns 0.0 for both the real and the imaginary part of S21 measurements at 50 kHz after calibration. This indication occurs when both ports of the VNA are terminated in a 50 ohm load so I would expect a very small value for S21, and 0.0 + j 0.0 is a very small value. However, nanoVNA-Saver maps that input to 0.0 dB for the S21 reading in dB. This is incorrect. We need nanoVNA-Saver to map this to a very small value like the equivalent of -120 dB with a phase angle of zero or something similar. When we get 0.0 dB on the S21 gain in dB this really screws up the S21 calibration and all measurements thereafter at any frequency where this happens. The reading being returned by the VNA (0.0 + j 0.0) amounts to a very small quantization error in the VNA itself; however, nanoVNA-Saver blows up on this value by treating S21 at that frequency as 0.0 dB.

It has taken me quite a while to figure out what is going on; however, I am sure this is what is happening. I had to capture readings directly from the device using a terminal program and observe the values coming out of the device directly. This must be a rare occurrence for most folks since I haven't seen anything on the group about this topic.

Perhaps other folks in the group can comment on how they think such a reading should be treated. One thing I am sure about is that we don't want it to map to 0.0 dB for S21.

Thanks for looking into this.

--
Bryan, WA5VAH


 

Hi Bryan,
I wonder if some of these problems at low frequency are caused by the fact that the stimulus is a square wave is not a sin wave. I would guess that there are some significant strong harmonics down at those low frequencies that could affect the measurements.

My neighbor and I were tinkering with a NVA and when we measured a 10mh choke we never could get a consistent answer. We knew it was 10mh by using a separate sin wave oscillator, resistor, and scope.

There could be other issues too. Fortunately, there's lots of simple ways of making measurements at low frequencies so to me its not that big of a deal. Just something to be aware of.
73


 

Just to clarify Bryan. CH0 and CH1 are terminated into 50 ohm. So there is no thru connection. And yet the vna and/ or the saver give a result of 0 dB for a S21 measure?

Alan


 

diyer,

You make a good point about the harmonic content of the square wave. They do extend out to much higher frequencies than 50 kHz. I am not sure how these harmonics would impact the 50 kHz result in a case where both inputs are terminated in 50 ohm loads. And specifically, how they would contribute to an answer at 50 kHz of 0.0 + j0.0.

I do see zero S21 value at frequencies above 50 kHz. I see intermittent zero values for S21 up to about 10 MHz but not usually above that. An example is shown the attachment "S21Isolation-singlescan.png." I am not sure why. I have a nanoVNA and a nanoVNA-F and the -F model shows this behavior more frequently. The nanoVNA-F model seems to have smaller S21 values in the isolation measurement below 50 MHz than the nanoVNA that I have as can be seen in the S21Isolation files attached. These were created by averaging 20 scans. When averaging 20 scans, they don't show 0.0 + j0.0 or 0.0 dB for S21 at any frequency.

I attribute most of this issue with zero S21 values to the likelihood that the S21 signal with both inputs terminated in 50-ohm loads at low frequencies is not really noise from the input but some sort of very low-level, repeatable internal leakage signal. I am wondering if the S21 isolation calibration process causes the S21 calibrated answer to be identical to zero for repeatable internal leakage which is 100 dB or more below the reference signal.

None of these actual indications in the device are a concern for me in the actual measurement. I would just like nanoVNA-Saver to deal with the 0.0 + j0.0 value received from the VNA in a little more appropriate way than to indicate that S21 is 0.0 dB in this case. Apparently in the nanoVNA device itself the 0.0 + j0.0 answer is dealt with properly because I never see an S21 indication of 0.0 dB in the logmag plot when terminating both inputs with 50-ohm loads.

--
Bryan, WA5VAH


 

On Tue, Feb 4, 2020 at 10:27 AM, alan victor wrote:


Just to clarify Bryan. CH0 and CH1 are terminated into 50 ohm. So there is no
thru connection. And yet the vna and/ or the saver give a result of 0 dB for a
S21 measure?
Alan,

Only the nanoVNA-Saver shows 0.0 dB on the "S21 gain" plot. However, when you look at the real and imaginary plot, the values are 0.0 + j0.0. The device itself shows -inf and plots it as a very large attenuation for S21. When you use a terminal emulator to read values you can see that the result is 0.0 + j 0.0 also.

--
Bryan, WA5VAH


 

On Tue, Feb 4, 2020 at 10:27 AM, alan victor wrote:


Just to clarify Bryan. CH0 and CH1 are terminated into 50 ohm. So there is no
thru connection. And yet the vna and/ or the saver give a result of 0 dB for a
S21 measure?
Alan,

And I forgot to answer your question about the loads. Yes, both inputs of the device are terminated in 50-ohms which is what is best for an isolation calibration.

--
Bryan, WA5VAH


 

Thanks. I will have to see if my unit has the same issue. I never noticed this disconnect. Thanks for the heads up. Your first 2 plots look ok, the 3rd is quite problematic.

Alan


 

I would guess that there are some significant strong harmonics
down at those low frequencies that could affect the measurements.
I have no reason to suppose that harmonics at low frequencies are relatively stronger than at higher
and should be problematic mostly when measuring nonlinear networks.

My neighbor and I were tinkering with a NVA and when we measured a 10mh choke
we never could get a consistent answer. We knew it was 10mh by using a
separate sin wave oscillator, resistor, and scope.
That resistor's value was presumably fairly comparable to choke reactance...

I use a worse clone nanoVNA e.g. to measure capacitive loading of phono cables and preamp inputs,
which involves calibrating and sweeping e.g. from 10kHz - 1mHz or higher,
because capacitive reactances at lower frequencies are too high for accurate measurements,
keeping in mind that nanoVNA bridge does poorly above 500 Ohms.
That also applies for very low inductive reactances.


 

Hi Bryan,

I ran nanosaver 0.2.0.

A 2 port cal 1010 points from 50 k to 10 MHz.

I see no issue. The vna and the pc routine behave normal. Zero dB loss with a cable thru and with cable removed or both ports terminated into 50 ohms, I see 75 to 80 dB loss.

I'll cal for more points as I will need to and sweep a low frequency 80 kHz sideband filter when I find it.

Alan


 

Alan,

I have done some more investigation of the issue I am seeing to further isolate the cause. Here are the results.

For the nanoVNA (2.8" display) I thought sure I had seen the problem with this device; however, at this time I cannot reproduce the symptom of getting 0.0 + j0.0 for an S21 measurement when both input ports (CH0 and CH1) are terminated. I did terminate both ports when performing the isolation calibration. With both ports terminated I see single-scan (50 kHz to 50.05 MHz) S21 values from a peak of about -78 dB to a minimum of about -100 dB. As a result I don't see any issues with indications in nanoVNA-Saver with the S21 values. This is true whether I terminate port 0 or port 1 or both. I see very little change when terminating the ports or leaving them open. In a post above, I attached a file (S21Isolation-nanoVNA.png) showing the result of averaging 20 scans which lowers the noise floor substantially, as it should, when compared to a single scan. The maximum value when averaging 20 scans in nanoVNA-Saver from 50 kHz to 50 MHz in that plot is about -89 dB which is quite impressive. And, the result seems to have a random variation with frequency which is consistent with it being a noise floor.

The result above caused me to go back to the nanoVNA-F (4.3" display) to try to verify the exact conditions which cause the issue with it that I showed in an earlier post (the file S21Isolation-Singlescan.png.) Again, I did perform the isolation calibration with both PORT1 and PORT2 terminated in 50 ohms.

I just went back and looked at S21 values with no load on either port of the nanoVNA-F. I have attached a plot from nanoVNA-Saver of an example (S21Isolation-nanoVNA-F_noterm.png.) Note that this plot has a maximum value in the single scan of about -82 dB and a minimum value of about -106 dB. In this plot the data does look like random noise which is approximately uniform over the 50 kHz to 50.05 MHz range being tested. In this example, there are no 0.0 + j 0.0 results for S21. And, I very rarely see what appears to be a 0.0 + j0.0 result on the S21 display of the nanoVNA-F when there are no terminations on the input. However, when they are there the device plots the point at the most negative value on the display. It is so rare that I have been unable to capture a 0.0 + j0.0 with no terminations on the device. In order to observe the data in the isolation case on the display I had to set the scale/division to -20 dB/division.

I then added a single termination to PORT2. An example plot is attached in the file S21Isolation-nanoVNA-F_termOnPort2.png. In this file I just happened to catch an S21 value of 0.0 + j0.0 at 4.05 MHz. So I also saved the s2p file which is attached as S21Isolation-nanoVNA-F_termOnPORT2.s2p. Looking at this file you see that the S21 value at 4.05 MHz is 0.0 + j0.0. Further we see that nanoVNA-Saver shows S21 gain of 0.0 dB which is clearly not what we want for a 0.0 + j0.0 response from the VNA. With a single termination on PORT2 of the nanoVNA-F, it is very hard to capture such an measurement. Watching the nanoVNA-F display for several minutes, I did not see any more such indications even though a scan is repeated every 2 seconds or so. I was simply lucky to get the result I have attached. Also note that the maximum value of S21 in this plot is still about -83 dB and the minimum is about -120.0 dB at 18.55 MHz. Looking at the s2p file saved from nanoVNA-Saver I observe the reading was 1e-6 -j0.0. I can't be sure of what came out of the nanoVNA-F; however, I think it put out 0.000001 - j0.000000 Since the output from the nanoVNA-F is in ASCII decimal notation with 6 digits to the right of the decimal point, the value reported at 18.55 MHz is literally the smallest value that can be represented other than 0.0 + j0.0. So what may be happening here is a limit on the precision of the representation sent from the VNA to the PC.

I then added a termination to PORT1 of the nanoVNA-F with no other changes. Remember, this is the exact same configuration used to calibrate the device for the isolation measurement. A plot of a single scan from the device is attached as S21Isolation-nanoVNA-F_termOnPORT1_PORT2.png. Here we see an S21 value of 0.0 dB at many frequencies at and below 10.05 MHz. I saved the s2p file (S21Isolation-nanoVNA-F_termOnPORT1_PORT2.s2p) for this scan as well. Looking at this file we see 0.0 + j0.0 values at all frequencies below 10.55 MHz except 2.05 MHz, 6.05 MHz, and 9.05 MHz. All frequencies where 0.0 + j0.0 is reported in the s2p file are plotted in the nanoVNA-Saver S21 Gain as 0.0 dB. Those frequencies listed here that are not 0.0 + j0.0 are reporting pretty small amplitudes that are not too far above 1e-6, the minimum value that can be reported in the ASCII stream of data sent to the PC from the nanoVNA-F. On my device with the calibration I created, this type of result is quite repeatable. Every scan with both inputs terminated in 50-ohms will have some values which report as 0.0 + j0.0. What this means, in practical terms, is that the isolation between PORT1 and PORT2 is really good or that the leakage between those ports is very repeatable below about 10 MHz and calibration is removing those values.

The 20 scan average shown in the post above (S21Isolation-nanoVNA-F.png) shows a decided lowering of the S21 response with both ports terminated below about 25 MHz. I would not expect this to be a reduction in noise at lower frequencies. It could mean that the leakage signal is more repeatable at those frequencies and isolation calibration is removing repeatable errors. In either case, I really don't think this is a serious problem for practical measurements. This configuration of loads has many more results that are reported as 0.0 + j0.0 from the nanoVNA-F; however, it is also the configuration used in isolation calibration.

Interestingly, the values sent to the PC have to be on the order of 0.000010 to 0.000030 for signals down by 90-100 dB. The quantization for these small values cannot have a great deal of precision given that 6 places to the right of the decimal all that is being sent to the PC in ASCII decimal notation. Quantization error can be significant on amplitude and/or phase. I would call this a limitation not a problem to be addressed.

The fact that the nanoVNA-F seems to have lower isolation values than the nanoVNA is perhaps a good thing but is, in some ways, being limited by the precision of the data being sent to the PC. Again, I don't see it as an issue but it is a limitation.

The creators of the software had to make some choices about the representations they send to the PC once they decided to send it in ASCII decimal format. Choosing 1e-6 as the minimum value to represent is reasonable; however, it does result in potential quantization errors when we are talking about signals that are smaller than the reference signal (the signal being sent out PORT1) by something like 90 to 100 dB. I don't consider this an issue but simply a limitation in the dynamic range that can reliably be measured by the nanoVNA-F device.

The real issue is that nanoVNA-Saver is not working with this limitation well when the device sends back 0 + j0.0. It should plot and treat this indication from the nanoVNA differently for ALL S21 measurements and calibration. A relatively simple software fix should be available for Rune to implement.

I have not but will try calibrating the isolation measurement using only a load on only PORT2 to see if that changes anything. I'll post the result here as soon as I have time to create the result and evaluate the information.

--
Bryan, WA5VAH


 

Whew! You put a lot of work into this investigation. I'll see what I can uncover. However, it will most likely be typical setup and measure event. I hope by searching for the loss of a low frequency filter, one whose center frequency is around 80 kHz and whose shape factor is quite good, I may force the same failure read you are witnessing at low frequencies.

Alan


 

Here is a Collins voice multiplex mechanical filter centered at ~ 88 kHz. The filter is ~ 3 kHz wide, an USB filter. Its been kicking around since the mid 50-60's. Excuse the ripples for its age!. Anyway, it has the shape factor and the rejection that one would like to see from such a class of filter. Again, 1010 points now from 50 kHz to 200 kHz. About 50 Hz or so per step. I do not see any strange events occurring at this point. The cal was a full so called 2 port cal includes "isolation".


 

I should add, the upper side spurious are real. They are clearly present. There was no noise averaging and this is a single sweep.


 

Alan,

Great measurement. It is pretty clear that your VNA is not having the issue that I am seeing.

--
Bryan, WA5VAH


 

Alan,

I re-calibrated the nanoVNA-F with a single load on PORT2 for the isolation calibration. I have been looking at the nanoVNA-F response with both ports terminated in 50-ohm loads for several minutes now and there have been no indications of a 0.0 + j0.0 response in the nanoVNA-F. Does this indicate success?

There is an option to turn off the calibration correction under the menu "CAL"->"CORRECTION". So I turned that off with a 50-ohm load connected to PORT1 and PORT2. The 0+j0 indications in S21 started immediately. In fact, the indications of 0.0 + j0.0 in S21 occasionally extend out to 35 MHz, well beyond my previous observation of about 10 MHz as the maximum frequency. Perhaps someone more knowledgeable of the firmware can tell me what that option does in the nanoVNA-F firmware.

Suspicious that I had done something wrong, I went back and performed another complete calibration scanning from 50 kHz to 50.05 MHz on the nanoVNA-F. This time I watched far more carefully what the nanoVNA-F was indicating at all of the steps. Things seemed normal for the open and short; however, in the load configuration I noticed there were a lot of 0.0 + j0.0 indications in S21 logmag data at many frequencies up to about 35 MHz. How does this impact calibration of the load? I assume that it does not. For the isolation calibration I used only a single load on PORT2 and left PORT1 open. I did not see any indications of 0.0 + j0.0 in the scans for isolation in the S21 data during this calibration step. I then saved the calibration in C4. I then attached loads to PORT1 and PORT2 and have not seen any indications of 0.0 + j0.0 since. When I turn off "CAL"->"CORRECTION" I immediately see many frequencies with an indication of -INF dB on the display which I am sure are specifically related to getting 0.0 + j0.0 from the VNA hardware. The indications on the left side of the screen go to "D R S T X" and "C4" disappears until I click again on "CORRECTION." Turning on the "CORRECTION" causes the indications of 0.0 + j0.0 in the S21 data to disappear.

Do you know if the drive level in the device is changed in any way during a calibration? What would cause the issues in S21 when a load is applied to PORT1 during "LOAD" or "THRU" calibration? The S21 data is not needed for calibration of the load so the fact that S21 is so small is irrelevant to load calibration; however, PORT1 termination could be very relevant to S21 "ISOL" calibration.

So I tried calibration again, this time I tried to be very careful to list every step as thoroughly as I can to make sure I am not missing something.

With a good cal in C4 and "CORRECTION" on I did the following in sequence within the "CAL" menu: 1) clicked "CORRECTION", 2) clicked "RESET", 3) clicked "CALIBRATE", 4) opened PORT1, 5) after several scans clicked "OPEN", 6) applied a short to PORT1, 6) after several scans clicked "SHORT", 7) removed short and installed 50-ohm calibration load on PORT1, 8) after several scans I clicked on "LOAD", 9) disconnected the calibration 50-ohm load from PORT1 and connected it to the previously open PORT2, 10) after several scans (there were no indications of 0.0 + j0.0 in S21) I clicked on "ISOLN", 11) I then added a 50-ohm load at PORT1 (50-ohm loads on both PORT1 and PORT2) after which there were numerous indications of 0.0 + j 0.0 on the screen; however, I did not click on anything on the VNA in this configuration, 12) I then replaced both loads with a RG316 through cable that is 6" long going from PORT1 to PORT2. (I know this is not completely correct because I did not use any cables for the previous steps but for purposes of getting a decent S21 magnitude thru cal it should be good enough. 13) I then clicked on "THRU", 14) clicked on "DONE", 15) indication on left of display was C* D R S T X", 16) clicked on "SAVE 4" 17) indication on left of display changed to "C4 D R S T X", 18) removed 6" through cable and replaced it with 2 loads, 19) now there are no indications of 0.0 + j 0.0 for S21 appearing on the display. S21 Isolation with loads on both PORT1 and PORT2 run from about -81 dB to about -105 dB. 20) If I go back to "CAL" and turn off "CORRECTION" the left side of the display indicates "D R S T X" as it should. But, the indications of 0.0 + j0.0 in S21 measurements starts immediately on numerous frequencies below about 30-35 MHz. But with correction enabled, I never see this indication. Why?

Did I miss anything?

Notice that in Step 10 when I experimented with putting a load on both PORT1 and PORT2 that I get numerous 0.0 + j0.0 indications with a load on PORT1 and PORT2 but no such indications when a load is applied only to PORT2. I have seen several folks indicate that it is best to put loads on both PORT1 and PORT2 for the isolation test. In fact that is in Rune's recommendations in nanoVNA-Saver. My experience, here, seems to indicate that when the signal out of PORT1 is absorbed in a load that the isolation at PORT2 is improved enough to cause 0.0 + j0.0 values in S21 at low frequencies. I don't think this is too surprising but it does indicate some cross-talk between PORT1 and PORT2 is occurring at lower frequencies at a very low level.

Should I just use the calibration in the device where only a single load is applied during isolation calibration? At the moment, that is what I am thinking of doing.

I appreciate your patience in reading through all of this.

--
Bryan, WA5VAH


 

Did I miss anything?
Yes, you posted this in the wrong group.
Instead, try one of these: /g/nanovna-users/wiki/home#nanoVNA-F


 

I am not familiar with the F model details. As Oristo states, try the post there. However, it sounds like the root cause of the problem is up setting the calibration. Or resetting the cal to the point it is lost.


 

Oristo and Alan,

When I started I thought this was a problem in both VNAs. But, you are right. I will post it on the other group.

There remains an issue with nanoVNA-Saver and how it treats a response of 0.0 + j0.0 from an S21 measurement of a VNA.

Thanks for your help.

--
Bryan, WA5VAH


cturnertuning
 

Alan, I wish to test a handful of collins 455 filters here. They are 2.1 wide. I see in your picture you are using some capacitors but cannot see the hookup. Could you please help me with the hookup from filter to the vna? What caps do I need? are the caps coupling caps? It looks like one runs to ground? Thank you. Clark