1[![Latest Release](https://img.shields.io/github/v/release/NanoVNA-Saver/nanovna-saver.svg)](https://github.com/NanoVNA-Saver/nanovna-saver/releases/latest) 2[![License](https://img.shields.io/github/license/NanoVNA-Saver/nanovna-saver.svg)](https://github.com/NanoVNA-Saver/nanovna-saver/blob/master/LICENSE) 3[![Downloads](https://img.shields.io/github/downloads/NanoVNA-Saver/nanovna-saver/total.svg)](https://github.com/NanoVNA-Saver/nanovna-saver/releases/) 4[![GitHub Releases](https://img.shields.io/github/downloads/NanoVNA-Saver/nanovna-saver/latest/total)](https://github.com/NanoVNA-Saver/nanovna-saver/releases/latest) 5[![Donate](https://img.shields.io/badge/paypal-donate-yellow.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=T8KTGVDQF5K6E&item_name=NanoVNASaver+Development¤cy_code=EUR&source=url) 6 7NanoVNASaver 8============ 9 10A multiplatform tool to save Touchstone files from the NanoVNA, 11sweep frequency spans in segments to gain more than 101 data 12points, and generally display and analyze the resulting data. 13 14- Copyright 2019, 2020 Rune B. Broberg 15- Copyright 2020 NanoVNA-Saver Authors 16 17Latest Changes 18-------------- 19 20### Changes in v0.3.8 21 22- Allow editing of bands above 2.4GHz 23- Restore column layout on start 24- Support for Nanovna-F V2 25- Fixes a crash with S21 hack 26 27### Changes in v0.3.7 28 29- Added a delta marker 30- Segments can now have exponential different step widths 31 (see logarithmic sweeping) 32- More different data points selectable 33 (shorter are useful on logarithmic sweeping) 34- Scrollable marker column 35- Markers initialize on start, middle, end 36- Frequency input is now more "lazy" 37 10m, 50K and 1g are now valid for 10MHz, 50kHz and 1GHz 38- Added a wavelength field to Markers 39- 32 bit windows binaries build in actions 40- Stability improvements due to better exception handling 41- Workaround for wrong first S21mag value on V2 devices 42 43Introduction 44------------ 45 46This software connects to a NanoVNA and extracts the data for 47display on a computer and allows saving the sweep data to Touchstone files. 48 49Current features: 50 51- Reading data from a NanoVNA -- Compatible devices: NanoVNA, NanoVNA-H, 52 NanoVNA-H4, NanoVNA-F, AVNA via Teensy 53- Splitting a frequency range into multiple segments to increase resolution 54 (tried up to >10k points) 55- Averaging data for better results particularly at higher frequencies 56- Displaying data on multiple chart types, such as Smith, LogMag, Phase and 57 VSWR-charts, for both S11 and S21 58- Displaying markers, and the impedance, VSWR, Q, equivalent 59 capacitance/inductance etc. at these locations 60- Displaying customizable frequency bands as reference, for example amateur 61 radio bands 62- Exporting and importing 1-port and 2-port Touchstone files 63- TDR function (measurement of cable length) - including impedance display 64- Filter analysis functions for low-pass, high-pass, band-pass and band-stop 65 filters 66- Display of both an active and a reference trace 67- Live updates of data from the NanoVNA, including for multi-segment sweeps 68- In-application calibration, including compensation for non-ideal calibration 69 standards 70- Customizable display options, including "dark mode" 71- Exporting images of plotted values 72 730.1.4: 74![Screenshot of version 0.1.4](https://i.imgur.com/ZoFsV2V.png) 75 76Running the application 77----------------------- 78 79The software was written in Python on Windows, using Pycharm, and the modules 80PyQT5, numpy, scipy and pyserial. 81 82### Binary releases 83 84You can find 64bit binary releases for Windows, Linux and MacOS under 85<https://github.com/NanoVNA-Saver/nanovna-saver/releases/> 86 87Versions older than Windows 7 are not known to work. 88 89#### Windows 7 90 91It requires Service Pack 1 and [Microsoft VC++ Redistributable]( 92 https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads). 93For most users, this would already be installed. 94 95#### Windows 10 96 97The downloadable executable runs directly, and requires no installation. 98 99### Installation and Use with pip 100 1011. Clone repo and cd into the directory 102 103 git clone https://github.com/NanoVNA-Saver/nanovna-saver 104 cd nanovna-saver 105 1062. Run the pip installation 107 108 pip3 install . 109 1103. Once completed run with the following command 111 112 NanoVNASaver 113 114#### Ubuntu 18.04 & 19.04 115 1161. Install python3.7 and pip 117 118 sudo apt install python3.7 python3-pip 119 1202. Clone repo and cd into the directory 121 122 git clone https://github.com/NanoVNA-Saver/nanovna-saver 123 cd nanovna-saver 124 1253. Update pip and run the pip installation 126 127 python3.7 -m pip install -U pip 128 python3.7 -m pip install . 129 130 (You may need to install the additional packages python3-distutils, 131 python3-setuptools and python3-wheel for this command to work on some 132 distributions.) 133 1344. Once completed run with the following command 135 136 python3.7 nanovna-saver.py 137 138#### MacPorts 139 140Via a MacPorts distribution maintained by @ra1nb0w. 141 1421. Install MacPorts following the [install guide](https://www.macports.org/install.php) 143 1442. Install NanoVNASaver : 145 146 sudo port install NanoVNASaver 147 1483. Now you can run the software from shell `NanoVNASaver` or run as app 149 `/Applications/MacPorts/NanoVNASaver.app` 150 151#### Homebrew 152 1531. Install Homebrew from <https://brew.sh/> (This will ask for your password) 154 155 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" 156 157 1582. Python : 159 160 brew install python 161 1623. Pip :<br/> 163 Download the get-pip.py file and run it to install pip 164 165 curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 166 python3 get-pip.py 167 1684. NanoVNASaver Installation : <br/> 169 clone the source code to the nanovna-saver folder 170 171 git clone https://github.com/NanoVNA-Saver/nanovna-saver 172 cd nanovna-saver 173 1745. Install local pip packages 175 176 python3 -m pip install . 177 1786. Run nanovna-saver in the nanovna-saver folder by: 179 180 python3 nanovna-saver.py 181 182Using the software 183------------------ 184 185Connect your NanoVNA to a serial port, and enter this serial port in the serial 186port box. If the NanoVNA is connected before the application starts, it should 187be automatically detected. Otherwise, click "Rescan". Click "Connect to device" 188to connect. 189 190The app can collect multiple segments to get more accurate measurements. Enter 191the number of segments to be done in the "Segments" box. Each segment is 101 192data points, and takes about 1.5 seconds to complete. 193 194Frequencies are entered in Hz, or suffixed with k or M. Scientific notation 195(6.5e6 for 6.5MHz) also works. 196 197Markers can be manually entered, or controlled using the mouse. For mouse 198control, select the active marker using the radio buttons, or hold "shift" 199while clicking to drag the nearest marker. The marker readout boxes show the 200actual frequency where values are measured. Marker readouts can be hidden 201using the "hide data" button when not needed. 202 203Display settings are available under "Display setup". These allow changing the 204chart colours, the application font size and which graphs are displayed. The 205settings are saved between program starts. 206 207### Calibration 208 209_Before using NanoVNA-Saver, please ensure that the device itself is in a 210reasonable calibration state._ 211 212A calibration of both ports across the entire frequency span, saved to save 213slot 0, is sufficient. If the NanoVNA is completely uncalibrated, its readings 214may be outside the range accepted by the application. 215 216In-application calibration is available, either assuming ideal standards or 217with relevant standard correction. To manually calibrate, sweep each standard 218in turn and press the relevant button in the calibration window. 219For assisted calibration, press the "Calibration Assistant" button. If desired, 220enter a note in the provided field describing the conditions under which the 221calibration was performed. 222 223Calibration results may be saved and loaded using the provided buttons at the 224bottom of the window. Notes are saved and loaded along with the calibration 225data. 226 227![Screenshot of Calibration Window](https://i.imgur.com/p94cxOX.png) 228 229Users of known characterized calibration standard sets can enter the data for 230these, and save the sets. 231 232After pressing _Apply_, the calibration is immediately applied to the latest 233sweep data. 234 235\! _Currently, load capacitance is unsupported_ \! 236 237### TDR 238 239To get accurate TDR measurements, calibrate the device, and attach the cable to 240be measured at the calibration plane - i.e. at the same position where the 241calibration load would be attached. Open the "Time Domain Reflectometry" 242window, and select the correct cable type, or manually enter a propagation 243factor. 244 245### Frequency bands 246 247Open the "Display setup" window to configure the display of frequency bands. By 248clicking "show bands", predefined frequency bands will be shown on the 249frequency-based charts. Click manage bands to change which bands are shown, 250and the frequency limits of each. Bands default and reset to European amateur 251radio band frequencies. 252 253License 254------- 255 256This software is licensed under version 3 of the GNU General Public License. It 257comes with NO WARRANTY. 258 259You can use it, commercially as well. You may make changes to the code, but I 260(and the license) ask that you give these changes back to the community. 261 262Links 263----- 264 265- Ohan Smit wrote an introduction to using the application: 266 [https://zs1sci.com/blog/nanovnasaver/] 267- HexAndFlex wrote a 3-part (thus far) series on Getting Started with the NanoVNA: 268 [https://hexandflex.com/2019/08/31/getting-started-with-the-nanovna-part-1/] - Part 3 is dedicated to NanoVNASaver: 269 [https://hexandflex.com/2019/09/15/getting-started-with-the-nanovna-part-3-pc-software/] 270- Gunthard Kraus did documentation in English and German: 271 [http://www.gunthard-kraus.de/fertig_NanoVNA/English/] 272 [http://www.gunthard-kraus.de/fertig_NanoVNA/Deutsch/] 273 274Credits 275------- 276 277Original application by Rune B. Broberg (5Q5R) 278 279Contributions and changes by Holger Müller, David Hunt and others. 280 281TDR inspiration shamelessly stolen from the work of Salil (VU2CWA) at 282<https://nuclearrambo.com/wordpress/accurately-measuring-cable-length-with-nanovna/> 283 284TDR cable types by Larry Goga. 285 286Bugfixes and Python installation work by Ohan Smit. 287 288Thanks to everyone who have tested, commented and inspired. Particular thanks 289go to the alpha testing crew who suffer the early instability of new versions. 290 291This software is available free of charge. If you read all this way, and you 292*still* want to support it, you may donate to the developer using the button 293below: 294 295[![Paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=T8KTGVDQF5K6E&item_name=NanoVNASaver+Development¤cy_code=EUR&source=url) 296