Network Measurement with NanoVNA

I have had a lot of time recently to work on personal projects. To aid in this, I picked up a NanoVNAv2 from Tindie. One month after placing my name on the waitlist I was contacted that the hardware was back in stock. Less than a week later, it arrived to my lab bench.

I found a measurement candidate in a variable air capacitor I picked up at a ham swap. I had used it with brief success on a homebrew antenna, so I figured it may prove useful as a test load (device under test, or DUT) in a network measurement.

Project enclosure housing variable air capacitor

Opening up the enclosure and looking over the connections within the project box I found a loose wire. After refastening, this capacitor was ready to measure. See the circuit below to illustrate the electrical connection within the project enclosure.

Schematic of Enclosure: Series Capacitor, Shorted Grounds

Ok, great, I have a DUT… I want to measure its capacitance, but how? Looking over the specifications of the NanoVNA, I determined I could get the most accurate measurement by performing a shunt two-port measurement of the capacitor and deriving an impedance and ultimately a capacitance. A single port measurement can provide usable accuracy for impedance measurements near system impedance but the two port measurement will be more accurate in general as it is essentially a high frequency 4 wire measurement.

Now, for the logistics- I didn’t have the correct adapters, but I did have some coax and an assortment of connector ends, so I decided to make my own test fixture for this measurement. I made a two-port SMA-to-UHF connector so I can measure the (capacitive) load shunt to ground. I also floated solder into the end of a UHF connector until it created a short. The new parts and a schematic representation for the circuit for measurement:

Measurement Schematic Representation

I left the connecting coax length a bit long, but a quick calculation assured me I should not expect to see the impact of this line length in the data at the measurement frequency (at max sweep frequency, the coax is one-quarter wavelength), so I reasoned the inclusion of the transmission line in the measured data would not prevent an accurate evaluation of the NanoVNA’s functionality. As the soldering iron cooled I performed a T/R calibration (this NanoVNA has a single transmit port) and began measurement.

Photo of Measurement Setup

Following measurement I began plotting data. I have plotted the open circuit parameters (also known as Z parameters) to determine the amount of capacitance in the circuit:


Now I can pick a frequency where the negative-going portion of the curve is approximately linear, say 10 MHz. At this frequency the impedance (magnitude) values yield an approximated capacitance of 79 pF, 52 pF, 25 pF, and 51 pF.

This is a good start. However, there is still the length of coax that is embedded in the measurement. An easy way to approximate the capacitive contribution of the coax is to use the capacitance per foot value from the cable datasheet (30 picoFarad/foot) and, realizing it is in parallel to our DUT, subtract the length-adjusted value from the measured capacitance to account for the extra capacitance of the line within the measurement setup (30pF/ft * 0.833 feet = 25pF). I’ve tablulated the data to summarize the measurements, including deembeded capacitor data using the method above to estimate the contribution of the fixture:

Knob Position Measured C Estimated DUT
0 79 pF 54 pF
90 51 pF 26 pF
180 25 pF 0 pF (not measurable)
270 52 pF 27 pF

Overall, I am satisfied with my new measurement tool and expect it will serve to improve my future homebrew designs. I’m similarly pleased to have a measured capacitor around the lab to open up antenna configuration possibilities. Although this post is intended to serve as a summary of my evaluation of the NanoVNA, the electrical model for the capacitor I have created from these results can be improved upon and verified. If you have any suggested changes to my measurement, drop it in the comment section- I am always open to improving my test methodology.

One feature I’d like to see implemented in a future NanoVNA software update is a logarithmic sweep option to make these power-type measurements easier. As you can see in the plot, the capacitive portion of the response has a non-linearity at low frequency.  Another area for improvement in the current software is the uncorrected error introduced in the return loss data due to the non-characteristic termination at the port 2 reference plane. An additional measurement with ports 1 and 2 reversed at the DUT (plus some math) will include all error terms needed to remove the cable length terminating port 2.

Update 21JAN2021:

I should acknowledge there is another way to solve this problem: by treating the measured data as a transmission line, the DUT can be transformed the electrical distance of my transmission line number of Wavelengths Towards Generator (recall WTG from the smith chart) to extract the admittance of the DUT. Usually this can be done by using port extensions on the VNA, which mathematically subtracts phase from the scattering parameter measurement, based on a specified time or electrical distance. However, due to the shunt nature of the measurement the math isn’t as straightforward; the s-data will be converted to admittance parameters before the phase is subtracted. This will require some python trickery, since the nanoVNA software doesn’t support admittance parameters. After I’ve wrapped my head around the math, I’ll plot the data in python.

Have ideas? Leave a comment on how you’d approach this problem.

Mt. Bierstadt & Mt. Evans Double Activation

06 October 2019

After five months I have finally started adjusting to my new city and job so I have been activating like crazy the last month. This weekend was one of the last weekends to get up a mountain before the snow comes and thwarts any plans for radio activations on Colorado’s higher point peaks. So, wanting to plan something fun, I called up my buddy Dave/WØADV (formerly KI6YMZ) who also lives in town and he threw out the idea of a double activation on Mt. Bierstadt and Mt. Evans. As I have not climbed or activated either of these peaks, I was both excited and nervous, but I jumped at the chance to knock these two 14,000 foot peaks off my activation list.

I woke up early and packed to meet Dave in Boulder at 5:15 AM for the drive to the Mt. Bierstadt trailhead, just past Georgetown, CO over the Guanella Pass. The plan was to meet another ham friend of Dave’s, Ben/KDØPNS, at in the paring lot at 7. When we arrived at the parking lot, we found the winds to be in play this day; in fact, we noticed debris throughout the road even as we were leaving Boulder. With a high in the mid 40s for the day, the biting winds meant packing an extra layer was a must.

Mount Evans Wilderness area sign as the sun rises over Mt. Bierstadt

We left for the trail at about 7:05 for the 10 mile round trip and made it up to Bierstadt in just over two hours (Dave and Ben are in really great shape). The winds were whipping the whole ascent which put the treacherous traverse across Sawtooth Ridge, the connecting saddle between Bierstadt and Evans, at risk, though we found they calmed as soon as we got to the north east side of the summit. As Dave set up HF, I made some summit to summit contacts on VHF with a large group on top of Signal Butte in the southern front range. We stayed for about an hour and made enough contacts for both Dave and I to earn points on Mt Bierstadt, WØC/PR-015. Ben didn’t plan for any radio action this day so he stayed content chatting with a few other groups on peak and fielding questions about why Dave is screaming CQ into a wire on a fishing pole. We met another two hikers that also planned to traverse the ridge to Mt. Evans, and gauging the wind had died down enough to not be a risk, the five of us proceeded down the backside of Mt. Bierstadt.

KDØPNS (right) and WØADV (middle) taking a break on the ridge and gazing over the valley between the two peaks

The trek across Sawtooth Ridge is a class 3 difficulty hike with lots of exposure and little room for error. However, the views were excellent, assuming you had the stones to take your eyes off the trail. Due to my clumsiness, we had to backtrack and fell behind the other two hikers who we had met at the top of the Bierstadt (we never caught up to them on Evans- we expect they bailed either on or after the ridge). There were some tricky parts to the pass and this was my first encounter with class 3 terrain; luckily, Ben and Dave are very easygoing hiking partners and we took our time to get across the ridge.

One of many exposed portions of Sawtooth Ridge

The rest of the climb up Evans was straightforward- just keep following the cairns. There were a few false summits and by this point in the day I was pretty wiped, but I kept chugging along. I eventually joined Dave and Ben at the top after they had been there for some time. Dave/WØADV had previously activated this summit and in the interest of time decided to keep the HF gear in the pack. I knew we still had a ways to go, so I called CQ for 20 minutes on 146.52 and logged 8 more contacts for the day. After that, we packed up and headed down the backside of Evans towards the parking lot.

WØASB with a rare smile, working VHF from Mt. Evans, WØC/FR-003

The rest of the trip was a lesson on navigating towards the parking lot while avoiding the marshy high wetlands that we crossed on the way up; however, the nicely laid out paths with wooden bridges that got us across the mud on the way up Mt. Bierstadt were absent as we were coming back down the Mt. Evans side. We did spot a trail that bisected some of the small lakes that formed at the base of the mountain, but it would disappear into the thickets before picking back up again 40 yards later. Miraculously, all three of us got across this field with dry shoes that had been reported to be an unavoidable mud bog just weeks before.

We made it back to the truck by 7PM, nearly 12 hours after we set out. Overall, it was a long day but a great way to end the SOTA season… for a few months until things pick back up in December when winter bonus points call ham operators back to the mountains.

73 de WØASB


EM Theremin- Using hand wavy science to create music

I first heard of the Theremin during a class in my undergraduate studies when another group of students decided to build one for their end-of-class project. I didn’t think much else on this hands-free musical instrument until recently when I had some down time in my graduate studies and decided to do a bit of research on a project to kick winter off until it was warm enough for another hike.

I found a schematic based on the original design on the internet (these days, most folks are abandoning the pitch and volume antennas in favor of optical sensors and microcontrollers), pulled from an early 1996 issue of Electronic Musician magazine, which is still in print as of this posting. The article itself was a nice read, not only detailing the construction of the Theremin including tuning and playing tips for those that take on the challenge of this build themselves, but also providing a bit of the history and theory of this instrument that dates back to 1928. After placing my order with my favorite online electronics component provider, I anxiously awaited for my package to arrive, passing the time by hunting for a partner in crime with which to build this project.

The build went well for the most part, though I found myself wanting to build another custom PCB since the perf board soldering was pretty time consuming. After completing the circuit (and a few hours of debugging) I was ready to tune it up and start practicing.



Winter SOTA: Genesee Mountain FR-194

Summits on the air in the winter in Colorado can be a great opportunity to nab a few lower-point peaks; during the winter months, the W0C region allows for 3 bonus points on all peaks, which makes the 2 or 3 point summits even more enticing. That, coupled with the accessibility of these lower elevations makes them great for activating even when snow lines the trails.

This morning I decided to head up north to Genesee Mountain, along the I-70 corridor about 30 minutes East of Denver. With the drive less than an hour and a half from Colorado Springs, I left around 8:15 and stopped for coffee and made my way out to the summit trailhead. Though it had snowed within the last week, there were plenty of tracks that packed the snow and made the trail easy to find. After only 10 minutes, I made my way to the top of the mountain, indicated by a large flagpole. The temperatures at the top were in the mid 30’s, but with the sun shining and only a slight breeze the conditions were excellent. Though this is usually a busy peak during the summer due to the proximity to downtown, I found myself alone at the top of the summit. I spent half an hour or so on a rock and made 12 contacts on my HT, a Yaesu FT-60R which maxes out at 5 Watts. I know it’s not much on VHF but today I had my first pileup, which makes me even more amped to improve my Morse code skills so I can bring along an HF radio and make contacts across the US.



2m/70cm Duplexer

Last year I bought a dual band Arrow antenna with the intent of hitting the local repeater with my HT, but also leaving open the possibility of using it on SOTA activations and for satellite work. Since then our club has switched repeaters to a more central 2m location, so I looked into how I could get on the air with other hams on VHF throughout the country via satellite. Though Arrow sells duplexers for a modest $60, I intended to make a project out of this and investigate how I could over engineer a solution to this problem myself.

Although I am confident in my ability to synthesize two 5th order passive filters for frequencies <500 MHz, it is much quicker to use some google-fu and find values for the capacitors and inductors needed to create a passband in the 2 meter and 70 cm ham bands. I used 0603 and 0402 components to minimize the space and insertion loss that would be seen for each branch of the duplexer.

After using ADS to layout and simulate the expected performance for my new gadget, I sent my design to Advanced Circuits, a quick turn PCB fab located just outside of Denver. Being the first time I’ve sent out a PCB for my own personal use, I found the process to be easy enough, though if you aren’t familiar with PCB manufacturing processes, it may be difficult to navigate their online forms without dialing their number and getting some help (the help topics throughout the form left much to be desired). While waiting for my PCBs to arrive I modeled up an enclosure for my duplexer and sent it out to the machine shop at work.

After receiving my PCB and machined aluminum enclosure, I quickly assembled the board and headed to the local hardware store to get the fasteners needed to complete my project.

Overall, I am pleased with how everything turned out. I was able to measure 1.3 dB insertion loss through the 2m path and less than 2 dB of insertion loss in the 70 cm path, though admittedly I performed this measurement using a edge launch connector to measure the performance before the enclosure arrived. The next step will be to get this on the air!

2m/70cm Duplexer


Barrett WØASB


Budget APRS Mobile Beacon

APRS, or Automatic Packet Reporting System is an amateur radio-based system for real time digital communication of information. This information may be weather data, GPS location information, text messages, digital repeating (digipeating), or other queries. There are existing APRS options available in commercial radios, but I wanted to see if I could drive the price down to a bare minimum. This post walks through the steps I took to create an APRS GPS beacon as well as how I installed this beacon in a mobile station.

Snapshot of APRS showing digipeaters, WX stations, and mobile stations in my area from

I have been considering adding a mobile APRS setup for a number of months, but as my schooling ramped up I had to put the project on the shelf and return to it again when things cooled off between work and school. Luckily my thesis defense finished up near the beginning of the semester and I was able to get some time at the start of December to put some more thought into getting this project going.

I came up with the idea of using a Raspberry Pi as a mobile beacon after seeing the TNC-Pi in a post on Reddit. I have always considered the Raspberry Pi to be neat way to play retro arcade games, though I didn’t see much practical use for it until I considered the Raspberry Pi contained more than the processing power of a Terminal Node Controller, the gateway to bringing my mobile beacon on air.

TNC-Pi, available from Coastal Chipworks

The drawback was I was not able to find anything on the web that addressed the deficiency in transmitting APRS location data, so that meant I could create my own solution. I found the least expensive solution was was to piece together a using the TNC-Pi, a Baofeng Radio, and a modified version of the TNC-Pi to Baofeng radio cord sold on the Coastal Chipworks website. After exchanging a few emails with John Hansen, W2FS who designed the kit, I discovered though setting up an internet gate (iGate) or a digipeater was well covered, there might be some room for including a couple of pointers for setting up GPS location data with the Raspberry Pi system, so that’s where I would need to start my research.

Originally I wanted to use a standalone GPS chip to interface with the Raspberry Pi’s Python configurable IO ports, but I quickly realized banging bits in python to decode the National Marine Electronics Association (NMEA) 108 protocol that GPS uses would be more than I wanted to take on for this project, so I hopped on the web and found a USB GPS for around $30 that would plug into the Pi. Turns out the Xastir software supports innate GPS decode and radio transmit with the Pi and only needed a few settings adjustments to start transmitting as a GPS beacon.

As for the install in my vehicle, I wanted my APRS tracker to automatically power up when the car started, but I didn’t need the rest of the controls on the radio to be immediately available. I also wanted to be able to manually switch off the beacon from transmitting with a switch near the drivers seat. Finally, I wanted to to be able to monitor the transmit PTT indicator from my driver’s seat due to an intermittent issue I encountered with the PTT not releasing after transmission ended. With these goals in mind I began by putting together a couple of simple scripts that would wait until the GPS module locked onto a satellite and then run Xastir on boot.

The suggested fix for the latching PTT was a 2k resistor between the radio and the TNC-Pi; Poor grounding within the HT is the suspected fault for this issue

Well, I wasn’t expecting snow here in Colorado between Christmas and New Years (because, why would it be snowing when there’s time to go to the mountain?), so I had to put the installation of this project off until the weekend after New Years when it warmed up a bit. I made quick work of the install and soon was ready to test my system.

I installed the main power switch near the driver’s seat in the event I want to turn my APRS system off. The second switch is used only for the indicator light when the radio is transmitting

There is a hole on the passenger’s side where I was able to route my electrical through the firewall

The final installation, before looming all of the wires together

I have tabulated the final cost for this installation below. If you don’t already have a spare Pi and a few cheap handhelds sitting around, you will have to include that in your cost. It is probably worth mentioning that this is not the ideal solution to this problem; Xastir is a GUI based application that has more overhead than is needed for a simple transmitting beacon. Though power draw and processing power were considerations for this project, I would rather deal with a few extra mW of power than to redesign an interface that would boot from the command line. This concept can be easily modified to act as a home weather station, iGate, or APRS reader/display with minimal extra hardware.

USB GPS: $28.85
TNC-Pi/TNC-Pi Cable + shipping: $48
Battery Eliminator for UV-5R: $6.99
Wires, Power Plugs, Fuses and Connectors for mobile install: ~$80

Total: $163.84

As you can see I spent a few extra dollars getting connectors and switches to minimize drilling extra holes in the interior, but you depending on your preferences, this line item can be reduced.

Barrett WØASB

First Activation of Indio Mountain, W6/CT-211

Earlier this month I visited family in Southern California for a wedding. I was interested in activating another mountain range as an attempt to make progress for unique ranges activated; of course, I was looking forward to getting out on a hike and ham radio is a great excuse to get some time away from the family.

I decided on a VHF activation of Indio Mountain, W6/CT-211, just a few miles from my hotel. I read some pointers for this hike on summitpost and decided this was the hike for me. I drove out to the trailhead (I parked at the corner of Avenida Monezuma and Calle Colima) and starting making my way to the base of the mountain.

Indio Mountain from the far side of the wash between the road and the mountain

I decided to start climbing up the closest mountain to the road, thinking I could retrace the steps in the opposite direction of the summitpost reference I was using. Unfortunately, the batteries on my new GPS can’t hold a charge, which is a drag, because I was just starting to get the hang of how to use it. I was able to navigate using my cell phone, but at the expense of no cell battery on the way down (notice a trend, heh?).

I found a number of these shells during my climb up- it’s easy to forget the whole desert was once covered in water

The entire hike took a bit longer than expected, but the views were worth it. It just so happens that my only VHF contact was another operator sporting a 0 in his call, also activating a peak (NØOI on CT-007). Though I was a bit bummed I didn’t get the minimum 4 contacts to qualify for the points for the activation, I enjoyed the exercise and time outdoors. As always, I will take this experience and make improvements for my next climb.



Barrett, W0ASB