Test and Measurement, Test Equipment

Onto the NanoVNA Bandwagon

Anyone following Hackaday and other hobby electronics blogs/YouTube channels has probably noticed the buzz around the NanoVNA lately. Admittedly I don’t know a lot about it, other than the fact that the design and firmware is open source and now a bunch of Chinese manufacturers have started making it and that you can now get one for around $50 to $60, shipped to the US.

A VNA is the one bit of test gear that was missing from my stable, so hearing about the possibility of getting one for cheap right now certainly piqued my interested. However I wasn’t interested in wasting money on a glorified toy, so I didn’t jump on it immediately after hearing about it. The buzz about it kept growing and I started hearing enough good things about it that I finally decided that I could live with taking a chance on losing $50 if it didn’t pan out, so I pulled the trigger a few weeks ago and ordered one from eBay.

The NanoVNA arrived a few days ago, decently packaged in a reusable plastic box that included a couple of USB-C cable, SMA coax jumpers, a SMA female passthrough, and a calibration kit. As is often the case, the instrument is even smaller in person than it looks on camera. The length and width are roughly the size of a credit card, and it’s perhaps 1 cm thick. Very compact!

NanoVNA measuring an HT antenna

So far, I’m pretty impressed by what you get for your money. The user interface can be controlled with the rocker switch you can see at the top-right, or with the touchscreen (you’ll need to use a stylus if you have fat fingers like I do). Calibration is easy to perform and the menus are straightforward to navigate. In the photo above, I’m measuring the return loss of one of my HT antennas, and you can see that it has proper dips at 2 meters and 1.25 meters. Other quick checks that I have made of antennae, filter responses, etc. have all looked exactly as I would expect.

There is also a PC program that can run on Windows that will connect to the NanoVNA’s virtual serial port and display plots on your PC, as well as allow you to capture plot data. It works OK, but could use some refinement and additional features. Unfortunately, this program is not open source, so we are reliant on the author to make those updates. I do know that the serial interface is easily exposed, so I bet some more options in this area will be coming soon.

NanoVNA Block Diagram

But what about the accuracy, you ask? I don’t have any calibrated instrumentation to compare it to, but multiple members of the NanoVNA mailing list have compared it to an HP 8753C and from their reports, it compares quite favorably. For home lab usage, it looks like it will be more than adequate. I might also point out that the device is excited by a Si5351A, which doesn’t surprise me in the least. When I first was made aware of it years ago (when I did the Si5351 Investigations series), I figured it would almost certainly find its way into all kinds of ham radio and other RF related stuff.

So far, I’m glad I purchased it and I feel like it’s a great value for the money. What an excellent time to be an RF experimenter, where tools that were previously very expensive and hard to get are now within reach of just about anyone!


Regarding Recent Availability

I’ve been getting quite a few notifications from GitHub from about issues on my most popular repositories and also have been receiving personal emails asking for support on various issues. Most of these items are not trivial and will take a bit of research on my part in order to understand them and correct them. I’m very pleased that my code has been useful to many people and I’m also extremely grateful for those who take the time to let me know about the problems that they encounter.

I definitely want to tackle as many of these as I can. Right now I’m in a pretty big time crunch as I have two major projects I’m in the middle of executing at the moment. One is personal and the other is the launch of OpenBeacon Mini. Because of the time-sensitive nature of both of these, I’m not going to be able to put any attention into fixing issues and very little into responding to requests for help until At least one of them is complete. You’ll see more info about OpenBeacon Mini very soon and I imagine I’ll share a bit about the other project later as well. Thanks for your understanding and patience.


Baxter 2006 — 2019

Yesterday, we had to say goodbye to our best friend and the goodest boy, Baxter, after twelve and a half years of faithful companionship.

Just like Marley from Marley & Me, Baxter was our clearance puppy, no joke. He cried for his mama every night for about a week straight after we brought him home, so that gave us some good practice for when he had babies later.

Here he is enjoying his first snowfall. He always did enjoy playing in the snow, even though we don’t get it that often here.

He also loved running at the beach, although he didn’t like actually getting in the water like you would expect a Lab to do.

The present under our Charlie Brown Christmas tree.

Baxter was always so gentle and loving with our boys.

What a handsome lad.

You probably didn’t know this, but he also moonlighted as a superhero in his down time.

Thank you for being such a good boy. We didn’t deserve you. Rest easy, old friend.

Etherkit, OpenBeacon Mini

FT8 Cracked

I’ve got an early Christmas present for you all! In conjunction with today’s final release of WSJT-X 2.0.0 (n.b. I’m not affiliated with that project in any way), I’m pleased to announce that I have now added the brand new 79-symbol FT8 protocol to my JTEncode Arduino library. The new version of the library is currently in testing and not available for upgrade in the Arduino Library Manager yet, so if you’d like to try it out, please download it from the development branch here and install it manually. After I’m confident that all is working well, I will release it to the main branch.

After having a lot of people asking me about it, last week I finally decided to take a crack at reverse engineering the FT8 protocol from the WSJT-X source code. I figured now was a good time since I’m in the final push to get OpenBeacon Mini out to production and a new version of the protocol was coming with the new v2.0.0 of WSJT-X. I had been awfully hesitant to tackle this in the past since all of the modulation algorithms are written in Fortran, a language that I do not know. There are no detailed technical descriptions of the protocol in plain English that I could find, so I would have to depend on reverse engineering the protocol solely from the code.

Armed with a F77 textbook I picked up at Goodwill and lots of Googling, I managed to make a big push over the last 5 days in order to give myself a Fortran crash course and learn how the algorithm works. With a ton of print debugging and by comparing the output of my code to the output of the official ft8code program from the WSJT-X package, I was able to nail it down.

If you are comfortable being on the leading edge of such things, please do give my library a try now and help me test it. It’s nice to see that the JTEncode library has been used in various ham projects out there, and at least once commercial product (other than the upcoming OpenBeacon Mini). I’m sure that the inclusion of FT8 will make it much more useful.

Meta, OpenBeacon Mini, Twitch

Mid-Summer 2018 Update

A quick proof-of-life update for you. The whole month of July was pretty much wiped out for me between the yearly family vacation which was followed by hosting friends from out of town. We had a lovely time, but it left very little time for getting work done. Add to that the fact that the GPU on my main workstation gave out, so I couldn’t really do anything on this PC until I acquired a new one (RX 560 4 GB to make this entire machine Team Red now). So given all of those circumstances, I didn’t really make any progress on OpenBeacon Mini. Apologies for that to my beta testers. Things will still be a bit slow while school is out here for summer break until late August, and then after that I expect to have my full allotment of work time again. Once school is back on, I should be able to do Twitch streaming again as well. Right now things are just too chaotic for that to happen on a regular schedule.

On a side note, I’m sure you seen me talking about using the Brave browser’s BAT publisher program to replace my old Patreon page. I completely understand that asking someone to switch browsers is a very hard ask, especially when the browser is still fairly early in development and needs more work in order to be highly polished. I recently learned of an extension for Firefox and Chrome that does the same function of distributing BAT to registered publishers that the Brave browser does, which should be a lot more tolerable for those who were considering the program but didn’t want to give up their current browser. The extension is called BATify, and it might be worth looking into if such things interest you.

Empyrean, Etherkit, OpenBeacon Mini

OpenBeacon Mini Status – Early June 2018

It’s time for a brief update on how things are going with OpenBeacon Mini, the successor to the OpenBeacon MEPT that’s been a long time in the making. For those who are unfamiliar with the new project, allow me to give a very brief overview of its capabilities. The OpenBeacon Mini is an automated transmitter for amateur radio operators that allows for automated transmission of messages using propagation study modes such as WSPR and QRSS, along with many of the other JT modes and CW as well. The carrier is generated by a Si5351A clock generator IC which is fed with a TCXO reference clock for frequency stability. Low-pass filter plug-in band modules allow operation on any single band from 630 meters to 2 meters. The OpenBeacon Mini detects which band module is inserted and sets the frequency accordingly, making band changes as easy was swapping out a plug-in module. The power and a data connection is provided from a USB micro B connection to any PC. Accurate time synchronization is accomplished through this connection, as long as the PC has time set through NTP. The user interface is a 128 x 32 px OLED display and 7 pushbuttons. As always with Etherkit products, all firmware, hardware design files, and and software is open source. Extra pins from the microcontroller and extra clock ports from the Si5351 are broken out for use in experimentation and expansion.

Something like this project has been on the back burner for a long time, and is finally now able to see the light. I intend to launch this as a crowdfunded product at the same time as my Empyrean microcontroller, which is at the heart of the OpenBeacon Mini. The Empyrean is an Arduino Zero derivative in the form factor of small DIP module perfect for breadboarding. I’ll have more about this initiative to post on the blog in the near future.

My first beta tester, LA3PNA, recently received his OpenBeacon Mini and had a chance to put it on a NVIS antenna for a few hours on 60 and 20 meters. As you can see from below, he received plentiful WSPR spots in that short amount of on-the-air testing.

I have another early beta tester working on getting his OpenBeacon Mini on the air soon as well. I am looking at getting one more early beta tester going with this PCB spin, just so that I can be very sure that the next PCB spin will iron out all of the kinks. If you are familiar with MEPTs, using the Arduino environment to compile and load firmware, and don’t mind a little bit of firmware roughness, I’d love to have you on board. Send me an email to milldrum at gmail dot com to let me know you’re interested.

This weekend, I plan to get OpenBeacon Mini going on 6 meters in order to see how it performs there. It should be a perfect time, since it’s also the weekend for the ARRL VHF Contest. Keep an eye on my Twitter account and this blog for further updates on this project.

Computing, Empyrean, OpenBeacon Mini

OpenBeacon Mini Progress

I know it’s been quiet on the blog front. It’s because I’ve been working through some tricky issues with OpenBeacon Mini firmware. A long story, but the gist of it is that a timer subtlety was causing some hard-to-troubleshoot problems causing inconsistent transmit timing for WSPR. I’ve finally overcome that particular family of bugs, and now have the transmit working reliably. As you can see, I’ve put OpenBeacon Mini on the air for the first time and it’s receiving spots. Now that I’ve confirmed that the basic functionality is working, I need to fill out a few more firmware features and then actual beta testing can start, which shouldn’t be very long now.

On another note, I’ve also been doing more PC and PC parts hustling on OfferUp in order to fund an upgrade to my main workstation. I managed to snag a Ryzen 5 1600 for a good price at $159 at Fry’s, since the new Ryzen refresh CPUs were just released. I’ve been using it for a few weeks now and it’s a fantastic processor. It also handles OBS much better than my old i3, so when I do get back into streaming on a more regular basis, my stream quality should be even better yet. From my testing, I should now be able to push out 1080p 60 FPS video to Twitch with no problem now.

Stay tuned, as the news around here should pick up again.


PC Upgrade

Back in the day, I used to be a PC build enthusiast, but as you can imagine things like starting a family can cause you to put hobbies like that on the back burner. So over the last 10 years or so, I’ve only minimally kept up with what has been going on in the PC world, and also have not put a lot of effort into my own PC setup here. But the old bug recently decided to bite me again, so I’ve been ramping back into the world of PC building and upgrading (especially budget acquisitions).

Before I go further let me give you a quick description of my current office PC setup. As some of you probably know, I’m primarily a Linux aficionado, so my main work PC is a Linux Mint 18.3 box based on an Intel Core i3-3240 with 16 GB of DDR3 RAM, which is getting a bit long in the tooth. Sometimes, I still need to run Windows programs (and I occasionally like to game on my PC), so I also fairly recently built a budget Win 10 PC from a Xeon X5460 (a decade-old quad core CPU) that I modded to work in a consumer-grade LGA775 motherboard, along with 8 GB of DDR3. That system was decent, but being based on a 10-year old processor, was also prone to showing its age at times.

I’d say that the rekindling of my interest in PC building as a hobby coincided with the release of AMD’s Zen architecture processors about a year ago, which is the first time that AMD has been competitive with Intel in performance for quite a few years. So as I have been watching how the first-generation Ryzen CPUs stack up against Intel’s offering, I have been more and more curious to try one. I used to be a pretty big AMD fan back in the Athlon 64 days, but I won’t deny that their later stumbles made me lose a lot of interest in them.

What really put me over the top was the more recent release of the two new Raven Ridge APUs (CPU plus integrated GPU): the Ryzen 3 2200G and Ryzen 5 2400G. The former being a 4 core/4 thread CPU for $99 and the latter 4C/8T for $169. Each has a Vega graphics core on the die; the 2200G having 8 compute units and the 2400G with 11 compute units. From looking at reviews of these APUs, it seemed that the processors in them were quite capable, and that for the first time ever, the integrated graphics could play quite a few modern games at 1080p with modest graphical settings and easily play almost any game at 720p. The real value sweet spot of the two seems to be the 2200G, which has a lot of performance for a $99 part.

So I decided that I wanted to build a Ryzen 3 2200G system to replace my X5460 Win10 box. And I wasn’t even going to use the integrated graphics at this point, since I also recently picked up a R9 270X for the amazing price of $40 on OfferUp. After selling off some spare gear on OfferUp and my For Sale page, I made enough money to get the parts that I needed. I used Camel Camel Camel to snag the ASRock AB350 Pro4 for $75, took advantage of an eBay sitewide 20% off coupon to grab an 8 GB kit of G.Skill F4-2800C16-4GVR DDR4 RAM for about $75, the 2200G for the MSRP of $99, and a Deep Cool GAMMAX 300 CPU cooler for $13 since I intended to overclock.

The build was very smooth, although I didn’t take a photo of the final result because I ended up using the only ATX case that I had on hand, which is kind of old and doesn’t have any cable management features, so it looks like a bit of a mess inside. Although I heard that the stock cooler that comes with the Ryzen isn’t bad, I wanted to have something better on hand so I could overclock without worry. I can say that while the GAMMAX 300 isn’t a total beast it does a pretty good job for the price. With the AB350 Pro4, I was able to overclock the CPU to 3.9 GHz (from stock 3.5 GHz) with no problems at all; as easily as tweaking the CPU core voltage and setting the frequency to 3.9 GHz in the UEFI. My CPU temperatures never got above 60°C in Cinebench, and maxed out at 70°C in Prime95. I also was able to easily overclock my kit of 2800 MHz DDR4 RAM to 3200 MHz by bumping up the RAM voltage just a little bit, which is really nice because the performance of these APUs are highly tied to the RAM speed. Without a doubt the easiest overclocking I’ve ever tried. The only minor hiccup that I encountered was that the Raven Ridge APUs take a special driver package that is different from the standard AMD unified drivers, so be aware of that if you ever build your own.

Next, I curious to see how the new rig would compare performance-wise with my old PC. After getting my overclock dialed in, I ran Cinebench R15 and got a score of 611, which is a fair bit better than the 550 score of the stock 2200G clock and nearly double the score of my old system, which was about 330.

I also noticed that the CPU-Z utility also has a benchmarking tool built into it, so I decided to give that a try as well. It gave my rig a single-thread score of 447 and a multi-thread score of 1783. You can see in the graph above that this score puts it near the top of the list of 4-core CPUs in their database, putting it on par with the last (7th) generation Intel Core i5s. It also whips the stock Ryzen 3 1200, which now looks to be a totally obsolete part since the Ryzen 3 2200G is $15 MSRP cheaper! (Yes, I know that most likely the R3 1200 in that chart is not overclocked, but I doubt it could get to my R3 2200G score even if it were.)

Overall I’ve been very impressed with my new system, and happy with my modest investment in it. It’s great to see a competitive AMD once again forcing Intel to compete instead of sandbagging like it has done for the last few years. I do plan to eventually convert my main Linux rig to a Ryzen system as well, hopefully in the near future. A hearty thumbs up all around from me.