a simple and cheap vector network analyzer, including support software
Switch branches/tags
Clone or download
xaxaxa Merge pull request #14 from Kezii/master
Improve sweep parameters dialog
Latest commit e842323 Oct 31, 2018
Failed to load latest commit information.
appimage fix default.desktop Jun 4, 2018
enclosure tweak enclosure dimensions Mar 27, 2018
include sw: move calibration functions to library Dec 17, 2017
lib_mock libxavna: added mock library Feb 19, 2018
libxavna libxavna: fix build error with older gcc (5.5) Sep 12, 2018
pcb update readme Sep 8, 2018
pictures add new screenshots (of qt gui) Apr 10, 2018
tester update tester Apr 7, 2018
vhdl vhdl: increase spi clock speed to 2MHz for faster frequency setting Sep 12, 2018
vhdl_twoport vhdl_twoport: use direct adc data in phase/magnitude detector Sep 12, 2018
vna_diagtool proper support for full two port vna Sep 8, 2018
vna_gtk restructure; support windows & mac; use automake instead of custom Ma… Feb 28, 2018
vna_qt fix maximum stop frequency Oct 3, 2018
.gitignore update gitignores Apr 11, 2018
.gitmodules add svf player to .gitmodules Feb 19, 2018
LICENSE Create LICENSE Feb 5, 2018
Makefile.am restructure; support windows & mac; use automake instead of custom Ma… Feb 28, 2018
README.md Merge branch 'master' of https://github.com/xaxaxa-dev/vna Aug 16, 2018
configure.ac add platform workarounds Apr 10, 2018
deploy_linux.sh deploy_linux.sh: clean up files before generating appimage Aug 16, 2018
deploy_macos.sh deploy_macos: fix path error; build dmg Apr 19, 2018
deploy_windows.sh deploy_windows.sh: remove unneeded files from output zip Aug 16, 2018
env.cfg deploy_*: don't hardcode paths Apr 11, 2018
generate_source_tarball vna_qt: wip Mar 4, 2018
lo_amp.cct add simulation files Jan 25, 2018
lo_amp_2.cct add simulation files Jan 25, 2018
lo_amp_3.cct add simulation files Jan 25, 2018
run take executable as argument in run script Aug 16, 2018



A simple and cheap vector network analyzer, including support software.

As seen on kickstarter: https://www.kickstarter.com/projects/1759352588/xavna-a-full-featured-low-cost-two-port-vna

Directory layout

  • libxavna: C & C++ library for accessing the hardware, see README.md in subdirectory for more info
  • vna_qt: QT GUI
  • pcb: schematics, pcb layouts, and simulation files
  • vhdl: circuitry implemented on the fpga


  • Frequency range: guaranteed 137MHz - 2500MHz, typical 135MHz - 3500MHz
  • Output signal level (configurable in software): -20dBm to 10dBm, with 1dB increments


  • The main board connects to a PC through usb and communicates via a virtual serial port device; the PC software sets the frequency and other parameters by sending two-byte register write commands, and the device sends averaged vector values representing magnitude and phase of measured waves.

Table of Contents


For pre-compiled executables go to: https://github.com/xaxaxa-dev/vna/releases

Building the software

Building on linux

Build libxavna (required for QT GUI):

sudo apt-get install automake libtool make g++ libeigen3-dev libfftw3-dev
cd /PATH/TO/vna
autoreconf --install
cd libxavna/xavna_mock_ui/

Build & run QT GUI:

sudo apt-get install libqt5charts5-dev
cd /PATH/TO/vna
cd vna_qt
export QT=/PATH/TO/QT # e.g. ~/qt/5.10.1/gcc_64
../run ./vna_qt

Building on mac os

brew install automake libtool make eigen fftw
cd /PATH/TO/vna
# result is in ./vna_qt/vna_qt.app

Cross-compile for windows (from linux)

Download and build MXE:

cd ~/
git clone https://github.com/mxe/mxe.git
cd mxe
export QT_MXE_ARCH=386
make qt5 qtcharts cc eigen fftw pthreads

Edit mxe/settings.mk and add i686-w64-mingw32.shared to MXE_TARGETS.


cd /PATH/TO/vna
export PATH="/PATH/TO/MXE/usr/bin:$PATH"


Main board (release 2)

Calibration standards (Short, Open, Load)


Open circuited coax stub


Time to fault (measuring coax cable)

Block diagram

Overall architecture

Receivers & interfacing

Signal generator

FPGA logic

Parts selection

T/R version

  • fpga: XC6SLX9-2TQG144C
  • adc: AD9200
  • mixer: AD8342
  • synthesizers: ADF4350
  • rf switches: BGS14GA14
  • programmable attenuator: PE4312

Full two port version

  • fpga: XC6SLX9-2TQG144C
  • adc: ADC10080
  • adc driver: ADA4932-1
  • mixer: AD8342
  • synthesizers: ADF4351
  • rf switches: RFSW6024, BGS12PL6
  • programmable attenuator: PE4312