100kHz to 6GHz 2 port USB based VNA
Find a file
Jan Käberich a4c1cd5274 Squashed commit of the following:
commit b48be940320c31d4745d3898d760f2dbdc944813
Author: Jan Käberich <j.kaeberich@gmx.de>
Date:   Thu Feb 27 19:02:29 2025 +0100

    escape # and generate PDF

commit 28f78c46dc
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Wed Feb 26 04:10:50 2025 -0800

    LibreVNA manual - fix rogue whitespace

commit 1e608661f3
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 19:14:57 2025 -0800

    LibreVNA manual - Soure to Source

commit b6334214ef
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 19:13:28 2025 -0800

    LibreVNA manual - indentical to identical

commit c26e3c45d3
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 19:12:47 2025 -0800

    LibreVNA manual - awkward phrasing

commit 9078764087
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 19:08:51 2025 -0800

    LibreVNA manual - Live Capture flesh out

    Descriptions of the Max hold and min hold may need tweaking

commit 092400951b
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 18:39:49 2025 -0800

    LibreVNA manual - und to and

commit cc550eabee
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 18:38:55 2025 -0800

    LibreVNA manual - add so for flow

commit 51fe1a2699
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 18:37:43 2025 -0800

    LibreVNA manual - support to supports

commit 93f57930d0
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 18:35:32 2025 -0800

    LibreVNA manual - serialnumber to serial number

commit 5133cba541
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 18:22:09 2025 -0800

    LibreVNA manual - wording order change and additional info

    I am not 100% here why the 2 seconds minimum but I am assuming for an accurate measurement

commit 3bead3338a
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 18:05:48 2025 -0800

    LibreVNA manual - add start measurement key and a comma

commit 4ef99363e3
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 18:00:53 2025 -0800

    LibreVNA manual - wording clarity

commit 0edc148538
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 17:34:30 2025 -0800

    LibreVNA manual - your for user focus and simplify with it

commit 8d55fa51c3
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 17:29:49 2025 -0800

    LibreVNA manual - with to at and are to is

commit 6878bc50ab
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 17:29:11 2025 -0800

    LibreVNA manual - and port to on the selected port and commas

commit 32b87842e4
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 17:21:59 2025 -0800

    LibreVNA manual - nit clarity one just below to another point just below

commit a3bab22030
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 17:18:43 2025 -0800

    LibreVNA manual - range of calibration to calibration range

commit cf27f9ef21
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 17:13:00 2025 -0800

    LibreVNA manual - frequeny to frequency

commit 2b2469ef6c
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 17:11:36 2025 -0800

    LibreVNA manual - nit clarity

commit 0ef981de81
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 17:09:38 2025 -0800

    LibreVNA manual - ouput to output

commit a6f4d39f83
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 17:08:13 2025 -0800

    LibreVNA manual - They to These calibrations for clarity

commit c545aa8172
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 17:07:36 2025 -0800

    LibreVNA manual - remove ambiguity the tracking gen only available in SA mode

commit 27d0981cad
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 16:46:28 2025 -0800

    LibreVNA manual - generator to signal generator and mode to modes

commit 65e5d90b6f
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 16:42:41 2025 -0800

    LibreVNA manual - remove with their name

commit de12d8be3b
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 16:39:08 2025 -0800

    LibreVNA manual - remove the, for to to, serialnumbers to serial numbers, dropdown

commit 347437beb6
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 16:18:12 2025 -0800

    LibreVNA manual - spectrumanalyzer to spectrum analyzer

commit f7f5ebca47
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 16:15:53 2025 -0800

    LibreVNA manual - to to into

commit 333f62bf0e
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 16:14:55 2025 -0800

    LibreVNA manual - chose to choose

commit 0c0de97634
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 16:12:26 2025 -0800

    LibreVNA manual - markers to marker's

commit 7005ff6bf0
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 16:11:19 2025 -0800

    LibreVNA manual - markers to marker's

commit 4fe9f54c91
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 16:10:46 2025 -0800

    LibreVNA manual - chose to choose

commit 4afa9e5024
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 16:09:06 2025 -0800

    LibreVNA manual - subject markers not marker types cannot be added

commit 2d9b3c8772
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 16:00:45 2025 -0800

    LibreVNA manual - missing closing parenthesis

commit a1c1dcbbf5
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 15:55:42 2025 -0800

    LibreVNA manual - toi marker flesh out and clarity

commit 60c224f3b0
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 15:29:07 2025 -0800

    LibreVNA manual - calculated to calculates

commit 9f5b7852da
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 15:21:31 2025 -0800

    LibreVNA manual - data description read as one sentence

commit 2fc31b3e96
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 15:19:44 2025 -0800

    LibreVNA manual - simpler sentence structure

commit 6527f79d17
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 15:18:12 2025 -0800

    LibreVNA manual - markers to marker

commit 25a46b6a3b
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 15:16:07 2025 -0800

    LibreVNA manual - marker position typo the to they plus changes

commit 61792de4b5
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 15:13:08 2025 -0800

    LibreVNA manual - marker description change

commit 4cc84a5122
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 04:11:53 2025 -0800

    LibreVNA manual - S-paramter to S-parameter

commit 1cec8628d6
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 04:09:16 2025 -0800

    LibreVNA manual - a to an and wording

commit 27ce1ab928
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 03:49:55 2025 -0800

    LibreVNA manual - comma to and

commit 67fe11bf9c
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 03:27:31 2025 -0800

    LibreVNA manual - Flesh out limit line section

commit 447277099e
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 02:13:47 2025 -0800

    LibreVNA manual - add colons to list items with descriptions

commit 06452cd6e5
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 02:06:16 2025 -0800

    LibreVNA manual - comparisation to comparison

commit 1bc190e115
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 02:05:48 2025 -0800

    LibreVNA manual - add constant lines heading consistent with TDR and DFT

commit 7f9022e296
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 01:55:19 2025 -0800

    LibreVNA manual - add colon consistent ex TDR or DFT

commit aa37f5d627
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 01:44:43 2025 -0800

    LibreVNA manual - a to the for consistency

commit b9c2dbe844
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 01:40:18 2025 -0800

    LibreVNA manual - whole tile area to whole trace display area

commit 50e2b108e4
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 01:36:48 2025 -0800

    LibreVNA manual - chosing to choosing

commit 2de5937a06
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 01:33:22 2025 -0800

    LibreVNA manual - in to is

commit a47d81e0da
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 01:31:17 2025 -0800

    LibreVNA manual - also see to see also

commit 38715a0d5f
Author: Bryan Paradis <bryan.paradis@gmail.com>
Date:   Tue Feb 25 00:55:04 2025 -0800

    LibreVNA manual - remove rogue tick
2025-02-27 19:04:23 +01:00
.github update windows release workflow 2025-02-21 16:47:42 +01:00
Documentation Squashed commit of the following: 2025-02-27 19:04:23 +01:00
FPGA fix order of LO1 and source unlock LEDs 2025-01-05 18:15:30 +01:00
Hardware Pick&place files as created by Eagle 2024-06-20 16:24:32 +02:00
Software add LibreVNA-GUI build folder to .git-ignore 2025-02-24 04:19:50 -08:00
.gitignore Script for measuring ADC noise 2021-07-02 22:00:35 +02:00
AssembleFirmware.py Github action build for embedded/ubuntu/windows 2020-09-25 18:38:56 +02:00
CHANGELOG.md Version bump + changelog 2025-02-21 16:00:36 +01:00
LICENSE Create LICENSE 2020-09-23 14:33:57 +02:00
README.md update Ubuntu install instructions 2024-11-14 15:20:00 +01:00

Build workflow status Build workflow status Build workflow status

LibreVNA

100kHz to 6GHz VNA

This is the improved version of my first attempt at a VNA.

GUI Installation

Windows

  • Download the latest Release and unpack the zip file
  • Start the included LibreVNA-GUI.exe
  • No installation or driver is required, simply move the extracted folder somewhere convenient

Ubuntu

  • Download the latest Release and unpack the zip file
  • Install the required libraries:
sudo apt install qt6-base-dev libqt6svg6
  • Install the udev rule (otherwise you don't have the permissions to access the USB device):
wget https://raw.githubusercontent.com/jankae/LibreVNA/master/Software/PC_Application/51-vna.rules
sudo cp 51-vna.rules /etc/udev/rules.d
  • Either reboot or reload the udev rules manually:
sudo udevadm control --reload-rules
sudo udevadm trigger
  • You can now start GUI:
cd $UNPACKED_ZIP_FOLDER$
./LibreVNA-GUI

Quick Start

  • You can find released versions of the GUI application and the device firmware here.
  • If you would like to try out the newest features, the compiled versions of each commit can be found here (but keep in mind that some features might be unstable or incomplete). If you are having trouble downloading them, please refer to this guide.
  • An (incomplete) user manual is also available.
  • If you would like to control the LibreVNA with a script, see the SCPI Programming Guide.

Please also take a look at the FAQ.

If you notice bugs or have ideas for improvements, please create an issue for that.

For general questions or discussions, the LibreVNA group is probably the best place.

Preliminary specifications

Some specifications are available but this project is still under development and the specifications might change.

There are also some initial example measurements.

How does it work?

The PCB is really only the RF frontend with some processing power. Everything else is handled in the PC application once the data is transferred via USB. You can try out the application without the PCB (obviously no measurements are possible, but you can import provided example measurements and get an idea about what it can and can't do).

RF path:

  • The main clock source is an Si5351C, providing all the required clocks for the different blocks. It also serves as the stimulus source for frequencies below 25MHz. Its own reference clock is either a 26MHz crystal or an external 10MHz signal.
  • The stimulus source for frequencies above 25MHz is a MAX2871. Its output signal is slightly filtered to reduce the amount of harmonics.
  • The stimulus signal power can be adjusted between approximately -42 and -10dbm with a digital attenuator (RFSA3714).
  • After the amplifier(TRF37A73) the signal is split and the weaker part of it fed into the reference receiver.
  • The stronger part of the signal can be routed to either port. In each signal path, two RF switches are used in series to achieve higher isolation between the ports.
  • Instead of directional couplers, resistive return-loss-bridges are used (easier to implement for wide bandwidth).
  • Both ports have completely separated receive paths. This increases BOM cost but allows measuring two parameters at once (S11 and S21 or S22 and S12). It also avoids potential isolation issues that could arise if the receive paths would merge into a single mixer/ADC.
  • Each receiver consists of two down-convert mixers. The 1.IF sits at 60MHz, the 2.IF 250kHz.
  • The ADCs are sampling the final IF with 16bit@800kHz.

Digital section:

  • The central element is the Spartan6 FPGA. It handles all communication with the RF blocks and samples the ADCs. This allows for nearly instant switching of the measurement frequency, only limited by the settling time of the PLLs.
  • The microcontroller handles the setup of the sweep in the FPGA, extracts and preprocesses the measurements and passes them on through USB.
  • The flash contains the FPGA bitstream. Because the microcontroller has access to the flash, no FPGA-related hardware tools (such as JTAG programmers) are needed, everything can be updated via USB.

Power supply:

  • Everything is powered from USB (or optionally by external 5V DC)
  • Almost every RF block has its own local regulater, preventing noise and signals coupling into the supply lines from propagating across the whole PCB