Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Command-line tools

✅ Verified · no code on this page · docs-verify

The badge reports the whole docs-verify suite, not this chapter alone.

spvirit-tools ships sixteen binaries: the fifteen below plus spload, an internal load driver for the loadtest/ harness that is not documented here. Thirteen are in the default build and the Python wheel; the two scry tools and spload are opt-in features. They are named sp* rather than pv* so they can sit alongside an EPICS Base installation without shadowing pvget, pvput, and friends.

ToolKindWhat it does
spgetclientread a PV once
spputclientwrite a PV
spmonitorclientsubscribe to changes
spinfoclientprint a PV's type structure
splistclientdiscover servers and their PVs
spexploreclient, TUIbrowse a server interactively
spsearchclient, TUIpassively watch PVA search traffic
spsineclientdrive a PV with a sine wave
spget_compareofflinecompare a captured GET exchange against spvirit's encoders
spserverserverserve a .db file
sptableserver, TUIan interactive spreadsheet IOC
spdodecaserverserve a rotating wireframe as an image
spgatewayclient, serverp4p-compatible PVAccess gateway
spvirit-scrycapture, TUIpassively capture and decode PVA traffic
spvirit-scry_influx_collectorcapturethe same capture, exported to InfluxDB and Loki

The last two need the scry feature and libpcap (Linux) or the Npcap SDK (Windows); they are not part of the Python wheel.

Building them

The binaries are gated behind Cargo features. A plain cargo build -p spvirit-tools uses the default features (client, server, tui) and builds the thirteen default tools; ask for everything with:

cargo build -p spvirit-tools --all-features

--all-features includes scry, so it needs libpcap or the Npcap SDK (see spvirit-scry). Without them, the default features build every tool except the scry pair and spload.

FeatureTools it enables
clientspget, spput, spmonitor, spinfo, splist, spsine, spget_compare
serverspserver, spdodeca
client + serverspgateway
client + tuispexplore, spsearch
server + tuisptable
scry (needs libpcap / Npcap SDK)spvirit-scry, spvirit-scry_influx_collector
load (not in the default build)spload

Flags every client shares

The client tools that query a server (spget, spput, spmonitor, spinfo, splist, spsine, spexplore, and spload) share one connection-option helper. (spget_compare reads a file and takes none of them.) Rather than repeat the table on each page, it is here:

FlagMeaning
-w, --timeouttimeout in seconds
--servertalk to ip:port directly, skipping search
--search-addrsearch target IP. If set, it is the only search target. If not set, the targets are the EPICS_PVA_ADDR_LIST entries plus the auto-broadcast addresses (unless EPICS_PVA_AUTO_ADDR_LIST=NO).
--bind-addrlocal IP to bind the search socket to
--name-serverPVA name server host:port. One value on the command line; EPICS_PVA_NAME_SERVERS may hold several, and its entries are added to the flag value.
--udp-portsearch port (default 5076)
--tcp-portdefault server port (default 5075)
--no-broadcastdisable UDP broadcast/multicast search; same as EPICS_PVA_AUTO_ADDR_LIST=NO
--authnz-useroverride the AuthNZ user sent at connect
--authnz-hostoverride the AuthNZ host sent at connect
-F, --fieldscomma-separated dotted field paths to request; empty means all
-d, --debugverbose protocol logging

spsearch is the exception — it never opens a TCP channel, so it takes only --udp-port, --bind-addr, and --debug.

Environment variables

The standard EPICS PVAccess variables are honoured: EPICS_PVA_ADDR_LIST, EPICS_PVA_AUTO_ADDR_LIST, EPICS_PVA_NAME_SERVERS. Explicit --search-addr and --bind-addr replace the environment value. --name-server is added to EPICS_PVA_NAME_SERVERS, not substituted. --no-broadcast can only disable broadcast.

A server to try them against

Every page below assumes something is serving. The quickest option:

cargo run -p spvirit-server --example complete_ioc

That is the capstone IOC, which publishes a scalar, a setpoint, a derived PV, and an array.