Skip to content

Your First Multi-VNA Measurement

In this tutorial, you’ll use two NanoVNA devices together to measure and compare two antennas side-by-side. By the end, you’ll understand device discovery, targeting, and software-synchronized sweeps.

What You’ll Learn

  • Discover all connected VNAs
  • Target specific devices
  • Run synchronized sweeps
  • Compare antenna performance

Prerequisites

  • Two NanoVNA-H devices connected via USB
  • Two antennas to compare (or one antenna with two feedlines)
  • mcnanovna MCP server installed

Discover Your Devices

  1. Connect both VNAs

    Plug both NanoVNA devices into USB ports. Each needs its own port.

  2. List devices

    Say: “List all connected NanoVNA devices”

    The assistant calls list_devices() and returns something like:

    {
    "devices": [
    {"device_id": "0001234567", "port": "/dev/ttyACM0", "board": "NanoVNA-H4"},
    {"device_id": "0009876543", "port": "/dev/ttyACM1", "board": "NanoVNA-H"}
    ],
    "default": "0001234567",
    "count": 2
    }
  3. Note the device IDs

    Each VNA has a unique device_id (its serial number or port path). Write these down:

    Device IDConnected Antenna
    0001234567Antenna A
    0009876543Antenna B

Set Up Device Targeting

With multiple VNAs, you have two options for targeting:

Option 1: Set a Default

If you’ll mostly use one VNA:

Say: “Set device 0001234567 as the default”

Now all single-device tools (scan, analyze, etc.) will target that VNA unless you specify otherwise.

Option 2: Specify Each Time

Add device_id to any tool call:

Say: “Scan from 144 to 148 MHz on device 0009876543”

Calibrate Each VNA

  1. Calibrate the first VNA

    Say: “Calibrate device 0001234567 for 144 to 148 MHz”

    Follow the SOLT calibration steps: load, open, short, through.

    Say: “Save calibration to slot 1”

  2. Calibrate the second VNA

    Say: “Calibrate device 0009876543 for 144 to 148 MHz”

    Repeat the same procedure with the second VNA’s calibration standards.

    Say: “Save calibration to slot 1”

Run a Synchronized Sweep

Now connect your antennas—one to each VNA’s Port 1.

  1. Run sync_sweep

    Say: “Run a synchronized sweep on both VNAs from 144 to 148 MHz”

    The assistant calls:

    sync_sweep(
    device_ids=["0001234567", "0009876543"],
    start_hz=144000000,
    stop_hz=148000000,
    points=101
    )
  2. Review the results

    You’ll get S11 data from both devices, swept at the same time (within ±2-5ms).

Compare Antenna Performance

  1. Run multi_antenna_compare

    Say: “Compare my two antennas on the 2m band”

    The assistant calls multi_antenna_compare() and returns a comparison table:

    MetricAntenna A (0001234567)Antenna B (0009876543)
    Min SWR1.151.32
    Resonance145.2 MHz144.8 MHz
    Bandwidth (< 2:1)4.1 MHz3.2 MHz
    Z at resonance48 + j2 Ω42 - j8 Ω
  2. Interpret the results

    • Min SWR: Lower is better. Antenna A has better match.
    • Resonance: Where SWR is lowest. Neither is at band center.
    • Bandwidth: Wider is more versatile. Antenna A has broader coverage.
    • Z at resonance: Closer to 50 Ω is better. Both are reasonable.

Understanding the Results

What Sync Sweep Gives You

Software synchronization (Tier 1) starts both sweeps within 2-5ms of each other. This is adequate for:

  • Antenna comparison
  • Signal level measurements
  • SWR/impedance analysis

It’s not precise enough for:

  • Phase measurements between devices
  • Antenna array characterization
  • MIMO testing

For those, you’ll need hardware trigger (Tier 2) or phase coherent (Tier 3).

Device Capabilities

Check what sync methods each device supports:

Say: “Check capabilities of device 0001234567”

{
"device_id": "0001234567",
"capabilities": {
"hardware_trigger": false,
"external_clock": false
},
"tier": 1
}

Stock firmware shows Tier 1 only. Custom firmware enables Tier 2/3.

Troubleshooting

Only one device shows up

  1. Check USB connections
  2. Try different USB ports (avoid hubs)
  3. Run refresh_devices() to re-scan
  4. Check permissions: sudo usermod -aG dialout $USER (Linux)

Device IDs keep changing

Port paths like /dev/ttyACM0 can change on reconnect. If available, use the serial number (e.g., 0001234567) instead—it’s stable across reconnects.

Timing concerns

Tier 1’s ±2-5ms is sufficient for most comparisons. If you see inconsistent results, ensure:

  • Both VNAs have stable connections
  • Neither is being accessed by another program
  • USB host isn’t under heavy load

Next Steps