LAN Instrument Control: VXI-11 vs HiSLIP

LAN Setup · Intermediate · ~12 min

Understand the difference between VXI-11 and HiSLIP protocols, and when to use each for TCP/IP instrument control.

LAN vs USB vs GPIB

Modern test instruments typically offer three connectivity options: USB, LAN (Ethernet), and GPIB. LAN has become the preferred choice for most new installations because it:

  • Supports long cable runs (up to 100 m with Cat5e/Cat6)
  • Allows remote access from anywhere on the network
  • Enables multiple simultaneous connections from different computers
  • Requires no special hardware beyond a standard network switch
  • Transfers data faster than GPIB (typically 10–100× faster with HiSLIP)

The challenge is that LAN instruments communicate using one of two application-layer protocols — VXI-11 or HiSLIP — and choosing the wrong one can result in slow transfers or connection failures.

VXI-11: The Classic Protocol

VXI-11 was standardized in 1995 and is built on Sun RPC (Remote Procedure Call) over TCP/IP. It was designed to emulate GPIB behavior over Ethernet, making it easy to migrate existing GPIB-based code to LAN.

How it works:

  • The instrument runs an RPC port mapper on port 111
  • The VISA library queries the port mapper to find the VXI-11 server port (usually dynamically assigned)
  • Two separate TCP connections are established: one for commands (core channel) and one for asynchronous interrupts (abort channel)
  • Each write/read transaction involves multiple round trips to set up the RPC call

This round-trip overhead is VXI-11's main weakness. Each command incurs several network round trips beyond the actual data transfer, making it noticeably slower for high-throughput applications.

VISA resource string format:

TCPIP0::192.168.1.100::inst0::INSTR

The inst0 field is the logical name defined by VXI-11. Most instruments use inst0; some Rohde & Schwarz instruments use hislip0 or inst0 depending on firmware version.

HiSLIP: The Modern Standard

HiSLIP (High-Speed LAN Instrument Protocol) was introduced in 2010 by the IVI Foundation as a direct replacement for VXI-11. It uses plain TCP (no RPC layer) on a fixed port (4880) and was designed specifically for high-speed instrument control.

Key improvements over VXI-11:

  • Fewer round trips — a single TCP write delivers the command directly, no RPC setup needed
  • Overlapped mode — the host can send the next command while still reading the previous response, enabling pipelining
  • Encrypted connections — HiSLIP 2.0 adds TLS support for secure communication
  • IPv6 support — VXI-11 is IPv4 only; HiSLIP works with both
  • Fixed port 4880 — no port mapper required, firewall rules are simpler

VISA resource string format:

TCPIP0::192.168.1.100::hislip0::INSTR

The hislip0 identifier tells the VISA library to use the HiSLIP protocol. Some instruments number additional HiSLIP interfaces as hislip1, hislip2, etc.

Side-by-Side Comparison

Feature VXI-11 HiSLIP
Standard year 1995 2010
Transport TCP/IP + Sun RPC Plain TCP
Port Dynamic (via port mapper 111) Fixed: 4880
Throughput Moderate (RPC overhead) High (direct TCP)
Command latency Higher (multiple round trips) Lower (single trip)
Pipelining No Yes (overlapped mode)
Firewall rules Complex (dynamic ports) Simple (port 4880 only)
IPv6 support No Yes
Encryption (TLS) No HiSLIP 2.0+
Instrument support Universal (all LAN instruments) Modern instruments (post-2010)
pyvisa-py support Yes Yes

Which Protocol to Use

Quick Decision Guide

Your instrument was made after 2015 and supports HiSLIP
→ HiSLIP
You need maximum throughput (large waveform transfers, fast sweep data)
→ HiSLIP
Your instrument is older (pre-2010) or you're unsure what it supports
→ VXI-11
You're behind a corporate firewall that blocks dynamic ports
→ HiSLIP
Simple command-response use (a few commands per second)
→ Either
How to check: Open the instrument's LAN settings on the front panel or web interface. If you see "HiSLIP" listed, use it. If you only see "VXI-11" or "LXI", use VXI-11. When in doubt, try HiSLIP first — it will refuse the connection cleanly if unsupported, and you can fall back to VXI-11.

Find Your Instrument's IP Address

There are three ways to find a LAN instrument's IP address:

1. Front panel menu

On most instruments: System → Connectivity → LAN or Utility → I/O → LAN. The IP address, subnet mask, and gateway are displayed. Note the address and whether DHCP or static IP is used.

2. Instrument web interface

Most LXI-compliant instruments host a web page at their IP address. If you can see the IP on the front panel, open http://<ip-address> in a browser. The page will show full network details and often allows you to send SCPI commands directly.

3. LXI Discovery (mDNS/Bonjour)

LXI instruments broadcast their presence on the local network using mDNS. Use the following Python snippet to discover them without knowing the IP in advance:

import pyvisa

rm = pyvisa.ResourceManager()
# list_resources with a TCPIP filter finds LAN instruments
resources = rm.list_resources('TCPIP?*::INSTR')
print(resources)
Static IP recommended for automation. If the instrument uses DHCP, its IP address can change after a network restart. Assign a static IP (or a DHCP reservation by MAC address on your router) to ensure your PyVISA resource strings always work.

Connect with PyVISA

Once you have the IP address, connecting is straightforward. The only difference between VXI-11 and HiSLIP is the resource string:

import pyvisa

rm = pyvisa.ResourceManager()

# VXI-11 connection
inst_vxi = rm.open_resource('TCPIP0::192.168.1.100::inst0::INSTR')

# HiSLIP connection
inst_hi  = rm.open_resource('TCPIP0::192.168.1.100::hislip0::INSTR')

# Both support the same PyVISA interface
print(inst_hi.query('*IDN?'))

Set a timeout appropriate for your application. LAN latency on a local network is typically under 1 ms, but slow instruments (e.g., during a long sweep) may need several seconds to respond:

inst.timeout = 10000  # 10 seconds — adjust for slow measurements

Throughput benchmark example

To see the speed difference in practice, use a spectrum analyzer or oscilloscope that returns large binary trace data:

import pyvisa
import time

rm = pyvisa.ResourceManager()

for proto, addr in [('VXI-11',  'TCPIP0::192.168.1.100::inst0::INSTR'),
                    ('HiSLIP',  'TCPIP0::192.168.1.100::hislip0::INSTR')]:
    inst = rm.open_resource(addr)
    inst.timeout = 10000

    t0 = time.perf_counter()
    for _ in range(20):
        inst.query('*IDN?')
    elapsed = time.perf_counter() - t0

    print(f"{proto}: 20 queries in {elapsed:.3f}s ({elapsed/20*1000:.1f} ms each)")
    inst.close()

Typical results on a 1 Gbps LAN: VXI-11 ~15–25 ms per query, HiSLIP ~2–5 ms per query.

Raw Socket Connection

Some instruments expose a plain TCP socket (no VXI-11 or HiSLIP layer) on a fixed port, typically 5025 or 5555. This is the simplest possible interface — you send ASCII SCPI text and read back the response.

Check your instrument's manual for the socket port number. The VISA resource string uses the SOCKET suffix:

import pyvisa

rm = pyvisa.ResourceManager()

# Raw socket — port 5025 is common for Keysight and Rigol instruments
inst = rm.open_resource('TCPIP0::192.168.1.100::5025::SOCKET')

# IMPORTANT: raw sockets do not auto-append a terminator
inst.write_termination  = '\n'
inst.read_termination   = '\n'

print(inst.query('*IDN?'))
Always set termination characters for raw sockets. Unlike VXI-11/HiSLIP connections (which handle framing automatically), raw socket connections require you to set write_termination and read_termination manually. \n (newline) is the standard SCPI terminator.

Common raw socket ports by manufacturer:

  • Keysight: port 5025
  • Rigol: port 5555
  • Rohde & Schwarz: port 5025
  • Tektronix: port 4000 (varies by model)

Troubleshooting

Connection refused (VisaIOError: VI_ERROR_CONN_LOST)

The instrument is not accepting connections on the requested port. Verify:

  • LAN is enabled on the instrument (check front panel LAN settings)
  • The correct protocol is used — try inst0 (VXI-11) if hislip0 fails
  • Port 4880 (HiSLIP) or port 111 (VXI-11 portmapper) is not blocked by a firewall
# Quick connectivity test from terminal
ping 192.168.1.100

# Check if HiSLIP port is open (Linux/macOS)
nc -zv 192.168.1.100 4880

# Windows equivalent
Test-NetConnection -ComputerName 192.168.1.100 -Port 4880

Timeout on first query after connection

Some instruments take 1–2 seconds to fully initialize a new LAN session. Increase the timeout for the first command, then restore it:

inst = rm.open_resource('TCPIP0::192.168.1.100::hislip0::INSTR')
inst.timeout = 5000          # generous timeout for initial handshake
idn = inst.query('*IDN?')
inst.timeout = 2000          # restore normal timeout
print(idn)

Instrument found by ping but not by list_resources()

pyvisa-py's LAN discovery relies on mDNS, which may not work across VLANs or subnets. Skip discovery and open the resource directly using the known IP address:

inst = rm.open_resource('TCPIP0::192.168.1.100::inst0::INSTR')

Slow transfers with VXI-11 on high-latency networks

VXI-11 performance degrades significantly over WAN links or VPNs due to RPC round trips. Switch to HiSLIP if possible, or use a raw socket connection which has less protocol overhead.

Multiple simultaneous connections fail

VXI-11 typically limits connections to one client at a time. HiSLIP supports multiple simultaneous connections. If you need concurrent access from multiple scripts or computers, use HiSLIP.

Next Steps

With LAN connectivity working, explore multi-instrument automation: