Supported Instruments
This page lists all instrument models that Instrumation supports — both the specific models that have been validated and the broader families that share the same SCPI command set.
[!NOTE] Compatibility matrix convention (see issue #167): every driver section lists a Validated Model — the specific unit tested against real hardware — and an Also likely compatible list of sibling models that share the same SCPI command set but have not been verified in-lab. When one driver class is routed from multiple distinct IDN branches in
factory.py(e.g.Keysight34461Aserving both the Truevolt and legacy 34401-series families), each branch's models are called out explicitly with their own compatibility status, since a sub-model's SCPI dialect can diverge silently. Treat "assumed compatible" as best-effort: fall back to"GENERIC"passthrough if an untested model raises SCPI errors on a typed command.
Oscilloscopes
Keysight InfiniiVision
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
KeysightInfiniiVision |
DSOX2002A | DSOX/MSOX 2000–6000 Series | DSO-X, MSO-X, DSOX, MSOX |
Also likely compatible (same InfiniiVision SCPI set): - DSOX1002A–DSOX1004A, DSOX1102G, DSOX1204G, DSOX2004A–DSOX2012A, DSOX3002T–DSOX3054T - MSOX1002A–MSOX1004A, MSOX2004A–MSOX3054T - DSOX4022A–DSOX4154A, MSOX4002A–MSOX4154A (4000 X-Series) - DSOX6002A–DSOX6054A, MSOX6002A–MSOX6054A - EDUX1052A/G
The 4000 X-Series (DSOX4xxxA/MSOX4xxxA) shares the same core :RUN/:STOP/:SINGLE,
:WAVeform:* (WORD/LSBFirst preamble scaling) and :MEASure:* dialect this driver
uses, so it auto-detects and runs through the generic DSOX/MSOX IDN keywords.
Its segmented-memory acquisition is a capability this driver does not expose;
treat the 4000 X-Series as assumed-compatible for the shared scope/measure API only.
Rigol DS1000Z / MSO1000Z
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
RigolDS1054Z |
DS1054Z | DS1000Z/MSO1000Z Series | DS1054Z, DS1074Z, DS1104Z, MSO1054Z, DS1000Z, MSO1000Z |
Also likely compatible (same MSO1000Z/DS1000Z SCPI set): - DS1054Z, DS1074Z, DS1102Z, DS1104Z, DS1202Z, DS1204Z - MSO1054Z, MSO1074Z, MSO1102Z, MSO1104Z, MSO1202Z, MSO1204Z - DSEQ (DS1000Z-EDU variants)
[!NOTE] The driver implements universal DS1000Z SCPI commands only. LA (logic analyzer),
:SOURce(AWG),:DECoder,:MASK, and:FUNCtioncommands are reserved for the -S variants or paid options and are not covered.
Rigol MSO5000 Series
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
RigolMSO5000 |
MSO5354 | MSO5000 Series | RIGOL + MSO5 |
Basic control (:RUN/:STOP/:SINGle/:AUTOscale) matches the
MSO1000Z/DS1000Z family, but the measurement subsystem differs:
:MEASure:ITEM? <item>,<src> takes the source as an explicit second
argument on every query rather than DS1000Z's per-item
:MEASure:FREQuency? CHANnel<n> form.
Also likely compatible (same MSO5000 command set): - MSO5072, MSO5074, MSO5102, MSO5104, MSO5204, MSO5354
[!NOTE] LA (logic analyzer), protocol decode, and mask-test features from the Programming Guide are not implemented here.
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Siglent SDS
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
SiglentSDS |
SDS1000 Series | SDS Series | SIGLENT |
Also likely compatible: - SDS1002X-E, SDS1004X-E, SDS1102X-E, SDS1104X-E, SDS1202X-E, SDS1204X-E - SDS2002X, SDS2004X, SDS2102X, SDS2104X, SDS2202X, SDS2204X
Siglent SDS2000X Plus
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
SiglentSDS2000XPlus |
SDS2102X Plus | SDS Series (newer command set) | SIGLENT + PLUS (with SDS1/SDS2/SDS5) |
Uses the newer standard :SUBsystem:keyword command set from the SDS
Series Programming Guide (EN11D+) -- :TRIGger:RUN/:TRIGger:STOP/
:TRIGger:MODE SINGle and :MEASure:SIMPle:VALue? <type> -- distinct
from the legacy SiglentSDS driver's older ARM/TRSE/C<n>:PAVA?
command shapes still used by the original SDS1000/SDS2000X(-E).
Also likely compatible (same newer command set):
- SDS1000X HD, SDS5000X, SDS2000X Plus family models (any ...Plus/HD variant)
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Tektronix TDS
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
TektronixTDS |
TDS Series | Tek TDS/TPS/MDO | TEKTRONIX (non-AFG) |
Rohde & Schwarz / Hameg HMO Compact
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
RohdeSchwarzHMOCompact |
HMO722 | HMO Compact Series | HAMEG/ROHDE/ROHDE&SCHWARZ + HMO |
Also likely compatible (same HMO Compact SCPI set): - HMO724, HMO1022, HMO1024, HMO1522, HMO1524, HMO2022, HMO2024
[!NOTE] Edge trigger only. Math functions (FFT, add/subtract/multiply), protocol decode, and mask-test features from the Programmer's Manual are not yet implemented.
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Also likely compatible: - TDS1001C–TDS1012C, TDS2001C–TDS2024C, TDS2012B, TDS2022B - TPS2002B–TPS2024B - MDO3012–MDO3054 (basic scope commands)
Spectrum Analyzers
Keysight MXA / PXA
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
KeysightMXA |
MXA N9020A | MXA Series | MXA |
KeysightPXA |
PXA N9030A | PXA Series | N9030, PXA |
[!NOTE]
KeysightPXA(v0.8.0+) ships 29 PXA-specific SCPI methods — measurement configuration, advanced triggering, enhanced markers, bandwidth/sweep, Real-Time Spectrum Analysis, and system queries — on top of the shared spectrum analyzer base API.
Also likely compatible: - MXA N9010A/B (EXA), N9020A/B, N9021A - PXA N9030A, N9040B
Rigol DSA
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
RigolDSA |
DSA800 Series | DSA800 | RIGOL (non-scope) |
Also likely compatible: - DSA815, DSA815-TG, DSA832E, DSA875E
Rohde & Schwarz
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
RohdeSchwarzSA |
FSV / FSW Series | R&S SA | ROHDE&SCHWARZ, R&S |
Also likely compatible: - FSV, FSVR, FSW, FSWP, FPS, FPL
Anritsu
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
AnritsuSA |
MS2830A | MS2830/MS269x | ANRITSU |
Also likely compatible: - MS2830A, MS2690A, MS2691A, MS2692A
Siglent SSA3000X
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
SiglentSSA3000X |
SSA3021X | SSA3000X Series | SIGLENT + SSA |
Standard SCPI-99 spectrum-analyzer subsystem, the same command shape as
RigolDSA/AnritsuSA.
Also likely compatible: - SSA3011X, SSA3015X, SSA3032X, SSA3000X Plus, SSA3000X-R, SVA1000X
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Signal Generators
Keysight EXG / MXG
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
KeysightSG |
MXG N5183B | EXG/MXG/PSG Series | N5181, N5182, N5183, PSG, MXG, EXG |
Also likely compatible: - EXG N5171B, N5172B, N5173B - MXG N5181A/B, N5182A/B, N5183A/B - PSG E8257D, E8267D
Rohde & Schwarz
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
RohdeSchwarzSG |
SMA100B / SMC100A | R&S SG | ROHDE&SCHWARZ (SG context) |
Also likely compatible: - SMA100A/B, SMB100A, SMC100A, SMF100A
Anritsu
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
AnritsuSG |
MG3700A | MG3700 Series | ANRITSU (SG context) |
Tektronix AFG
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
TektronixAFG |
AFG3022C | AFG3000 Series | TEKTRONIX + AFG |
Also likely compatible: - AFG3011C, AFG3021C, AFG3022C, AFG3102C, AFG3252C
Siglent SDG2000X
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
SiglentSDG2000X |
SDG2042X | SDG Series AWG | SIGLENT + SDG |
Uses Siglent's C<n>:BSWV (Basic Wave) command: a single keyword
takes comma-separated PARAM,value pairs (C1:BSWV FRQ,1000,
C1:BSWV AMP,1) rather than one SCPI subtree per parameter --
distinct from the Tektronix AFG3000's
SOURce<n>:FREQuency:FIXed-per-parameter dialect. Has no
frequency-list sweep mode, so configure_list_sweep() logs an
unsupported-feature warning.
Also likely compatible (same BSWV/OUTP command set): - SDG1000X, SDG2000X Plus, SDG6000X
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Rigol DG4000 Series
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
RigolDG4000 |
DG4062 | DG1000Z/DG4000/DG5000 Series | RIGOL + (DG4, DG5, DG1000Z) |
Uses the Agilent/Keysight-33500-derived
[:SOURce[<n>]]:APPLy:<shape> single-command style shared across the
DG1000Z/DG4000/DG5000 families -- distinct from Tektronix AFG3000's
subtree-per-parameter dialect and Siglent SDG's comma-separated
BSWV keyword. Has no frequency-list sweep mode in this base command
set, so configure_list_sweep() logs an unsupported-feature warning.
Also likely compatible (same APPLy/SOURce command set): - DG4102, DG4162, DG4202, DG1022Z, DG1032Z, DG5071, DG5102, DG5252
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
GW Instek MFG-2000 Series
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
GWInstekMFG2000 |
MFG-2120 | MFG-2000 Series | GW/GW INSTEK + MFG |
Combines Rigol-style SOURce<n>:APPLy:<shape> waveform selection with
a separate per-parameter SCPI subtree for frequency/amplitude/offset/
phase (SOURce<n>:FREQuency, SOURce<n>:AMPLitude,
SOURce<n>:DCOffset, SOURce<n>:PHASe) -- unlike Rigol's single
combined-argument APPLy call, MFG-2000 setpoints are each sent
independently after selecting the waveform shape. Roadmap #176.
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Stanford Research Systems DS345
| Driver | Validated Model | Command Family | Auto-Detect IDN Keywords |
|---|---|---|---|
SRSDS345 |
DS345 | SRS terse mnemonics (non-SCPI-subtree) | STANFORD + DS345 |
Uses SRS's distinctively terse, colon-free command mnemonics (FREQ,
AMPL, OFFS, FUNC, PHSE) rather than a SCPI :SOURce:* subtree;
waveform shape is a numeric code (0=sine, 1=square, 2=triangle,
3=ramp, 4=noise, 5=arbitrary) instead of a mnemonic string. The DS345
has no software output-enable command -- the configured waveform
is always live on the output BNC -- so set_output() logs an
unsupported-feature warning and get_output() always reports True.
Likewise there is no reference-clock command: set_reference_clock()
logs an unsupported-feature warning (the rear-panel timebase input locks
to an external 10 MHz on its own). Modulation is MTYP (type:
0=lin sweep, 1=log sweep, 2=AM, 3=FM, 4=PM, 5=burst) plus MENA
(enable), and a frequency sweep is STFR/SPFR/RATE + MTYP 0 +
MENA 1.
[!WARNING] Not yet verified against real hardware. If you hit a command error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Network Analyzers
Keysight PNA
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
KeysightPNA |
PNA N5232A | PNA / PNA-L / PNA-X | E83, N52, PNA |
Also likely compatible: - E8361C, E8362B, N5221A, N5222A, N5224A, N5225A, N5227A, N5230A–N5247A
Keysight FieldFox
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
KeysightFieldFox |
N9913A / N9914A | FieldFox SA+VNA | N99, FIELD FOX |
Anritsu ShockLine / MS2035B
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
AnritsuShockLineVNA |
MS2035B | ShockLine Series | MS2035 |
Also likely compatible: - MS2034B, MS2035B, MS2036A, MS2037A, MS2038C, MS2039C, MS2047A, MS2060A
Siglent SNA5000A
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
SiglentSNA5000A |
SNA5012A | SNA5000A/X Series | SIGLENT + SNA |
Standard SCPI-99 network-analyzer subsystem, the same command shape as
KeysightPNA -- Siglent's SNA5000A documentation is explicitly
SCPI-99 compliant for this measurement class.
Also likely compatible: - SNA5014A, SNA5024A, SNA5044A, SNA5000X series
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Multimeters
Keysight 34461A Truevolt
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
Keysight34461A |
34461A | Truevolt DMM | 34461, 34460, 34401, 34410, 34411, 34420 |
Keysight34461A is shared across two IDN branches in factory.py
(~line 423 and ~line 429, see issue #167): the Truevolt 34460/34461
family and the older 34401/34410/34411/34420 family. Only 34461A has been
tested against real hardware; the rest are assumed compatible based
on their published SCPI command references, not verified in-lab:
| Model | Family | Status |
|---|---|---|
| 34461A | Truevolt | ✅ Validated |
| 34460A | Truevolt | Assumed compatible (6.5 digit, same SCPI set as 34461A) |
| 34401A | Legacy | Assumed compatible (base MEAS:/CONF: subset only) |
| 34410A | Legacy | Assumed compatible (6.5 digit) |
| 34411A | Legacy | Assumed compatible (6.5 digit) |
| 34420A | Legacy | Assumed compatible (μV/μΩ nanovolt commands untested) |
[!WARNING] The 34401/34410/34411/34420 family predates Truevolt and may not support every SCPI command
Keysight34461Asends (e.g. newerSENSesubsystem extensions). If you hit an SCPI error on one of these models, prefer"GENERIC"passthrough or file an issue with the failing command.
Fluke 8845A/8846A
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
Fluke8846A |
8846A | Fluke 884x Series | FLUKE + (8845, 8846) |
Fluke8846A is not validated against real hardware yet; it targets the
:MEAS:*?/:CONF:* SCPI subset documented in the Fluke 8845A/8846A
Programmer's Manual, mirroring Keysight34461A's command shapes:
| Model | Status |
|---|---|
| 8846A | Assumed compatible (6.5 digit, same measurement subsystem as 8845A) |
| 8845A | Assumed compatible (5.5 digit, same command set as 8846A) |
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Keithley 2000
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
Keithley2000 |
2000 | Keithley 2000 Series | KEITHLEY + 2000 |
Siglent SDM3000 Series
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
SiglentSDM3055 |
SDM3055 | SDM3000 Series | SIGLENT + SDM |
Standard SCPI-99 MEASure/CONFigure multimeter subsystem, the same
command shape as the Keysight 34401A family and Fluke 884x — DCV, ACV,
DCI, ACI, 2W/4W resistance, frequency, period, capacitance, continuity,
diode, and RTD/thermistor temperature. set_nplc() is SDM3000-specific.
Also likely compatible (same SDM series command set): - SDM3045X, SDM3065X, SDM3055A
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Rigol DM3000 Series
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
RigolDM3068 |
DM3068 | DM3000 Series | RIGOL + DM3 |
Unlike the SCPI-99 CONFigure/MEASure? split used elsewhere in this
library, the DM3000 dialect selects the active function with
:FUNCtion:* and reads it back with a bare :MEASure:<FUNC>? query;
:MEASure {AUTO|MANU} toggles ranging globally instead of a per-function
RANG:AUTO. set_digits() (5/6/7/INC/DEC) is DM3000-specific.
Also likely compatible (same DM3000 command set): - DM3058, DM3058E, DM3062, DM3064
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Keithley DMM6500
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
KeithleyDMM6500 |
DMM6500 | DMM6500 native SCPI | KEITHLEY + (DMM6500, 6500) |
Targets the DMM6500's native SCPI command set (function selection via
:SENSe:FUNCtion "<FUNC>" then :READ?), not the SCPI2000/SCPI34401
compatibility personalities or TSP scripting. set_nplc(),
set_auto_range() and set_offset_compensation() take an explicit
SCPI function-name argument since ranging/NPLC live under
:SENSe:<FUNC>:*, not a single global subsystem.
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Power Supplies
TDK-Lambda Z+
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
TDKLambdaZPlus |
Z+100-2 | Z+ Series (Serial/USB) | TDK-LAMBDA, Z+ |
Also likely compatible: - Z+36-10, Z+50-2.5, Z+60-5, Z+100-2, Z+100-7, Z+150-4, Z+200-2.5, Z+360-1.7
[!IMPORTANT] Z+ units must be switched to USB mode on the front panel and wake up with
INST:NSEL 6before SCPI communication.
BK Precision 9130B
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
BKPrecision9130B |
9130B | 9130B Series (Triple Output) | B&K/BK PRECISION + 9130 |
Not yet validated against real hardware. Three independent output
channels are addressed via INST:NSEL {1\|2\|3}; every PowerSupply
interface method accepts an optional channel= argument (defaults to
channel 1) to select which output it targets before sending the
plain VOLT/CURR/OUTP/MEAS:*? command. set_tracking_mode() is
9130B-specific and links CH2/CH3 outputs.
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Rigol DP800 Series
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
RigolDP832 |
DP832 | DP800 Series (Triple Output) | RIGOL + DP8 |
Unlike the BK Precision 9130B's INST:NSEL-then-plain-command style,
DP800 series commands address a channel directly via a [:SOURce<n>]
numeric suffix or an explicit CH1|CH2|CH3 argument on
:OUTPut/:MEASure — no channel-select round-trip required. Every
PowerSupply interface method accepts an optional channel= (defaults
to 1). set_tracking_mode() is DP800-specific and links CH2/CH3.
Also likely compatible (same DP800 command set): - DP831, DP831A, DP832A, DP821, DP821A, DP811, DP811A
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Siglent SPD3303X
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
SiglentSPD3303X |
SPD3303X | SPD3303X Series | SIGLENT + SPD |
CH1/CH2 are independently controlled outputs addressed with a CH1/
CH2 command prefix; CH3 is a fixed 5V/2.5A logic supply with
output-enable control only (no settable voltage/current, and
set_ovp/set_ocp/clear_protection are unsupported — the SPD3303X
has no software OVP/OCP command). set_track_mode() selects
independent/series/parallel CH1+CH2 coupling.
Also likely compatible: - SPD3303X-E, SPD3303C
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Keysight E36300 Series
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
KeysightE36313A |
E36313A | E36300 Series (Triple Output) | KEYSIGHT/AGILENT + (E3631, E36313, E3633) |
Uses the SCPI-99 channel-list syntax (@<chanlist>) shared with other
Keysight instruments -- every setpoint/measurement command takes an
explicit (@<n>) argument, distinct from the BK Precision 9130B's
channel-select round-trip and the Rigol/Siglent CH<n> prefix style.
set_output_pairing() is E36300-specific (OFF/series/parallel CH1+CH2).
Also likely compatible: - E36311A, E36312A
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Korad KA3005P
| Driver | Validated Model | Command Family | Auto-Detect IDN Keywords |
|---|---|---|---|
KoradKA3005P |
KA3005P | Korad flat ASCII (non-SCPI) | KORAD |
Not a SCPI instrument. Speaks Korad's own flat ASCII command set
over serial (9600 8N1, no line termination, no error queue, no
*RST/*CLS/*OPC?) -- this driver overrides check_errors,
sync_config, and clear_status as no-ops and skips the
SYST:ERR? round-trip in safe_send/query_ascii entirely.
preset() emulates a reset by forcing output off, 0V, 0A limit since
the hardware has no reset command. get_output() decodes bit 6 of the
single-byte STATUS? response. Widely cloned by Tenma, RS, Velleman,
and Stamos under different model numbers with an identical protocol.
[!WARNING] Not yet verified against real hardware. If you hit a protocol error, prefer
"GENERIC"passthrough or file an issue with the failing command.
GW Instek GPP Series
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
GWInstekGPP4323 |
GPP-4323 | GPP Series (4 independent channels) | GW/GW INSTEK + GPP |
The GPP dialect puts the channel number directly as a numeric suffix
on the keyword itself (SOURce2:VOLTage, OUTPut2:STATe,
MEASure2:CURRent?), distinct from every other multi-channel PSU
dialect already in this library (Keysight (@<n>), Rigol/Siglent
CH<n>: prefix, BK Precision channel-select round-trip). Channel 1's
suffix may be omitted on real hardware but this driver always sends it
explicitly for clarity. set_series_mode()/set_parallel_mode() link
CH1+CH2 (and CH3+CH4 where present).
Also likely compatible (same GPP command set): - GPP-1326, GPP-2323, GPP-3323
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Agilent/HP 6632B/6634B Series
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
Agilent6632B |
6632B | 663xB System DC Power Supply | KEYSIGHT/AGILENT/HEWLETT-PACKARD/HP + (6631, 6632, 6633, 6634) |
Legacy single-channel SCPI-99 PSU family, routed through the same
Keysight/Agilent IDN branch as Keysight34461A/KeysightPNA since it
predates the Keysight brand name but shares the same SCPI lineage.
set_autostart() maps to OUTP:PON:STAT {RCL0|RST} (power-on state).
Also likely compatible: - 6631B, 6633B (same programming guide, different voltage/current ranges)
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
AIM-TTi CPX400DP
| Driver | Validated Model | Command Family | Auto-Detect IDN Keywords |
|---|---|---|---|
AimTTiCPX400DP |
CPX400DP | AIM-TTi PowerFlex command set | AIM-TTI/THURLBY THANDAR/AIMTTI + CPX400 |
Puts the channel number directly on the command keyword with no colon
or prefix separator (V1 <v>, I2 <i>, OP1 {0|1}) -- distinct from
every SCPI-99 SOURce<n>:-prefixed or INST:NSEL-selected dialect
elsewhere in this library. Measured readbacks (V<n>O?/I<n>O?) may
echo a trailing unit suffix ("4.999V"); the driver strips it before
parsing. set_track_mode() maps to CONFIG {0|1|2} (independent/
series/parallel).
[!WARNING] Not yet verified against real hardware. If you hit a command error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Rohde & Schwarz HMP4040 Series
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
RohdeSchwarzHMP4040 |
HMP4040 | HMP Series (4 independent channels) | HAMEG/ROHDE/ROHDE&SCHWARZ + HMP |
Channels are selected via INST:NSEL {1..4} and then addressed with
plain VOLT/CURR/OUTP commands -- the same select-then-command
shape as BKPrecision9130B, distinct from the GW Instek GPP's
numeric-suffix-on-keyword dialect. set_global_output() maps to
OUTP:GEN {ON|OFF}, the master enable for channels armed via
OUTP:SEL (not wired up individually here). clear_protection()
disables the fuse-link coupling (FUSE:STAT OFF) since the HMP series
has no separate OVP/OCP trip-clear command.
Also likely compatible (same SCPI dialect, fewer channels): - HMP2020, HMP2030, HMP4030
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Ametek Sorensen SG Series
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
SorensenSG |
SG Series | SG/SGA/SGX Series (core PSU subsystem) | SORENSEN |
Standard SCPI-99 :SOURce/:OUTPut/:MEASure subsystem, directly
comparable to KeysightE36313A/RigolDP832. The Sorensen-specific
:PROGram subsystem for stored multi-step voltage/current sequences
is intentionally not implemented in this initial driver -- it is a
genuinely new interaction pattern (triggered sequence playback) not
present in any other PowerSupply driver in this library, and is left
for a future pass.
Also likely compatible:
- SGA, SGX series (same core SCPI subsystem; :PROGram support varies)
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
BK Precision 1685B/1687B/1688B Series
| Driver | Validated Model | Command Family | Auto-Detect IDN Keywords |
|---|---|---|---|
BKPrecision1685B |
1685B | BK Precision flat ASCII (non-SCPI) | B&K/BK PRECISION + (1685, 1687, 1688) |
Not a SCPI instrument. Speaks the same flat ASCII command family
as KoradKA3005P (VSET1:<v>, ISET1:<i>, OUT1/OUT0) over a USB
virtual COM port -- distinct from the SCPI-based BKPrecision9130B
driver, which targets BK Precision's other, multi-channel product
line. check_errors, sync_config, and clear_status are no-ops;
preset() emulates a reset (no hardware *RST) by forcing output
off, 0V, 0A limit.
Also likely compatible: - 1687B, 1688B (same programming manual, different voltage/current ranges)
[!WARNING] Not yet verified against real hardware. If you hit a protocol error, prefer
"GENERIC"passthrough or file an issue with the failing command.
AC Power Sources
Keysight AC6800B Series
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
KeysightAC6800B |
AC6800B Series | AC6800B Series Programming Guide | KEYSIGHT + AC68 |
New ACPowerSource base class (src/instrumation/drivers/base.py) --
every PowerSupply driver in this library is DC-only (a single
voltage/current setpoint with no frequency/phase/output-mode concept),
which does not fit an AC source needing frequency programming and an
explicit AC/DC/AC+DC output mode. Covers voltage/frequency setpoints
(SOURce:VOLTage/:FREQuency), output mode select
(SOURce:VOLTage:MODE {AC|DC|AC+DC}), output on/off, true-RMS
voltage/current/power measurement (MEASure:VOLTage:AC?/
:CURRent:AC?/:POWer:AC?), OVP/OCP, and DC offset (for AC+DC mode).
Registered under a new "ACPSU" driver type to avoid conflating it
with the DC-only "PSU" category.
Per issue #192's scope, transient/waveform-step programming and
arbitrary-waveform output are not implemented in this initial
driver -- left as a follow-up, consistent with how SorensenSG
deferred its :PROGram subsystem.
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Electronic Loads
Siglent SDL1000X
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
SiglentSDL1000X |
SDL1000X | SDL1000X Series | SIGLENT + LOAD |
Also likely compatible: - SDL1020X, SDL1030X, SDL1060X
BK Precision 8600 Series
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
BKPrecision8600 |
8600 | 8600 Series | B&K/BK PRECISION + (8600, 8601, 8602, 8610, 8612, 8614, 8620) |
Not yet validated against real hardware. Supports CC/CV/CR/CP modes,
OVP/OCP/OPP protection, and BK-specific battery discharge test mode
(set_battery_test_mode, set_battery_cutoff_voltage,
get_battery_test_capacity). List-mode and transient-stepping
programming from the 8600 Series manual are not yet implemented.
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Rigol DL3000 Series
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
RigolDL3021 |
DL3021 | DL3000 Series | RIGOL + DL3 |
Supports CC/CV/CR/CP modes and battery discharge test mode
(set_battery_test_mode, get_battery_test_capacity,
get_watt_hours, get_discharging_time). Unlike the BK Precision
8600, the DL3000 series has no software OVP/OCP/OPP trip-point
subsystem in its base command set — front-panel OCP/OPP are test
modes, not simple protection levels — so set_ovp/set_ocp/
set_opp/clear_protection log an unsupported-feature warning here.
Also likely compatible (same DL3000 command set): - DL3031, DL3031A
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
ITECH IT8500+ Series
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
ItechIT8512Plus |
IT8512+ | IT8500+ Series | ITECH + IT85 |
Supports CC/CV/CR/CP modes plus CURRent:PROTection/POWer:PROTection
(OCP/OPP trip levels) and a simulated short-circuit input
(set_short_circuit). The IT8500+ series has no dedicated software OVP
trip-point command in its base command set, so set_ovp/
clear_protection log an unsupported-feature warning here.
Also likely compatible (same IT8500+ command set): - IT8511+, IT8513+, IT8511A+, IT8512A+, IT8513A+
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Chroma 63200A Series
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
Chroma63200A |
63200A series | 63200A Series (High Power) | CHROMA + 632 |
The most distinctive load dialect in this library: a single MODE
mnemonic encodes BOTH the operating mode and measurement range
(MODE CCH = CC High range, MODE CVL = CV Low range, etc.).
set_mode() always selects the High-range variant as the safest
default for an unknown DUT — send write("MODE CCL")/"MODE CCM"
directly for Low/Middle range. Setpoints use the <FUNC>:STATic:L1
level-1 static value (the front panel's "A" state); the L2 ("B"
state) and slew-rate parameters are not wired up. No dedicated
software OVP/OCP/OPP trip-level commands exist — OCP/OPP are
selectable MODEs, not settable protection levels — and there is no
direct MEASure:RESistance? query, so those methods log an
unsupported-feature warning.
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Prodigit 3311F
| Driver | Validated Model | Command Family | Auto-Detect IDN Keywords |
|---|---|---|---|
Prodigit3311F |
3311F | 3310F Series plug-in module | PRODIGIT + (3311, 3310) |
The 3311F is a plug-in module hosted in a 3302F mainframe chassis, not
a standalone load -- every command is prefixed with a CHAN<n> slot
select (default slot 1, override via slot= on any method), an extra
addressing layer beyond standalone loads like SiglentSDL1000X or
ItechIT8512Plus. The CC/CV/CR/CP command shape itself
(MODE:CC/CURR <a>/LOAD ON/MEAS:VOLT?) is otherwise directly
comparable.
[!WARNING] Not yet verified against real hardware. If you hit a command error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Lock-In Amplifiers
New instrument category (issue #204). LockInAmplifier is a new
abstract base in drivers/base.py; "LOCKIN" is a new canonical
driver_type key registered in factory.KNOWN_DRIVER_TYPES, with a
SimulatedLockInAmplifier registered for SIM mode.
Stanford Research Systems SR830
| Driver | Validated Model | Command Family | Auto-Detect IDN Keywords |
|---|---|---|---|
SRSSR830 |
SR830 | SRS terse mnemonics (non-SCPI-subtree) | STANFORD + SR830 |
Like the SRS DS345, uses terse colon-free command mnemonics (FREQ,
PHAS, SLVL, SENS, OFLT, HARM) rather than a
:SOURce:*/:SENSe:* subtree. Sensitivity and time-constant values
are indexed by integer code, not physical units directly --
set_sensitivity()/set_time_constant() accept a physical value and
round it to the nearest supported code. measure_xy()/
measure_r_theta() use SNAP? to read multiple parameters at a
single instant, avoiding the time skew that separate OUTP? queries
would introduce for a fast time constant. Roadmap #180.
[!WARNING] Not yet verified against real hardware. If you hit a command error, prefer
"GENERIC"passthrough or file an issue with the failing command.
LCR Meters
New instrument category (issue #204). LCRMeter is a new abstract
base in drivers/base.py; "LCR" is a new canonical driver_type
key registered in factory.KNOWN_DRIVER_TYPES, with a
SimulatedLCRMeter registered for SIM mode.
Keysight E4980A/AL
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
KeysightE4980A |
E4980A | E4980A/AL Precision LCR Meter | KEYSIGHT/AGILENT + E4980 |
set_measurement_function() selects the impedance parameter type
(CPD, CPQ, CSD, LSD, RX, ZTD, etc.); measure() returns a
(primary, secondary) tuple, e.g. capacitance and dissipation factor
for CPD. set_bias_voltage/set_bias_state control the DC bias
source.
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Hioki IM3536
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
HiokiIM3536 |
IM3536 | IM3523/IM3533/IM3536/IM3570/IM3590 family | HIOKI + IM35 |
SCPI-style command set shared across the IM35xx/IM3570/IM3590
family. :FREQuency/:FREQuency? confirmed against Hioki's own
PLC-integration examples; parameter-type selection and measurement
readback follow the same :FUNC:IMP/:MEASure? shape as the
Keysight E4980A LCR meter class.
[!WARNING] Best-effort: the full IM3536 command reference requires a Hioki-issued LCR Application Disc not published as a standalone PDF. Not yet verified against real hardware -- prefer
"GENERIC"passthrough or file an issue with the failing command.
Keysight E4990A Impedance Analyzer
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
KeysightE4990A |
E4990A | E4990A SCPI Command Reference | KEYSIGHT/AGILENT + E4990 |
Unlike the fixed-frequency KeysightE4980A/HiokiIM3536 LCR meters,
the E4990A sweeps frequency (1 MHz-120 MHz) and returns trace data --
closer in shape to the KeysightPNA VNA driver, but measuring
impedance/LCR parameters (CALCulate:PARameter1:DEFine) instead of
S-parameters. LCRMeter.measure() performs a single-point measurement
at the current CW frequency (SENS:FREQ:CW); get_trace_data()/
get_complex_trace() fetch a full swept trace in formatted
(primary, secondary) or raw complex (real, imaginary) form
(CALC:DATA:FDATa?/:SDATa?). Sweep configuration
(set_start_frequency/set_stop_frequency/set_points/
set_sweep_type) mirrors the existing NetworkAnalyzer sweep API.
connect() sets the safety-guard frequency range to the instrument's
1 MHz-120 MHz span.
Per issue #193, equivalent-circuit fitting and fixture compensation (open/short/load cal) are out of scope for this initial driver and are left as a follow-up.
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Frequency Counters
Keysight 53230A
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
Keysight53230A |
53230A | 53230A/53220A Universal Counter | KEYSIGHT/AGILENT/HP + (53230, 53220, 53181) |
Also likely compatible: - 53220A (350 MHz), 53230A (350 MHz, 12 digits/s), 53181A (225 MHz, RF counter predecessor)
[!NOTE] Prior to issue #204, this driver had no explicit IDN branch in
factory.pyand relied on the single-registered-candidate fallback; now that a second"COUNTER"driver (FlukePM6690) is registered, an explicitKEYSIGHT/AGILENT/HP+ model-number branch is required.
Fluke PM6690
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
FlukePM6690 |
PM6690 | PM6690 native SCPI | FLUKE + PM6690 |
The PM6690 has two GPIB personalities: a native SCPI mode (targeted
here) with a command set optimized for its own capabilities, and a
compatible mode that emulates a Keysight/HP 53131A/53132A. Native
mode uses the same standard SCPI-99 counter subsystem shape as
Keysight53230A.
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Data Acquisition Units
Keysight DAQ970A/DAQ973A
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
KeysightDAQ970A |
DAQ970A | DAQ970A/DAQ973A Programming Guide | KEYSIGHT/AGILENT + (DAQ970, DAQ973) |
New DataAcquisitionUnit base class (src/instrumation/drivers/base.py),
registered under a new "DAQ" driver type -- the direct,
backward-compatible successor to the 34970A/34972A Data
Acquisition/Switch Unit. Unlike a Multimeter, a DAQ/switch unit
multiplexes many channels through plug-in modules behind a single
measurement engine, addressed with SCPI channel-list syntax (slot is
the hundreds digit, channel the tens/units -- e.g. (@101,102,203)).
DataAcquisitionUnit.format_channel_list() builds this syntax from a
plain list ([101, 102, 203]) or a range string ("101:110").
Covers per-channel measurement-function configuration
(CONFigure:VOLTage:DC/:AC, :RESistance/:FRESistance 2W/4W,
:TEMPerature, :FREQuency), scan-list setup and triggering
(ROUTe:SCAN, INITiate, TRIGger:SOURce, FETCh?), immediate
per-channel reads (READ?), and relay open/close for switch modules
(ROUTe:CLOSe/:OPEN/:CLOSe?).
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
USB Power Sensors
New instrument category (issue #204). "SENSOR" is a new canonical
driver_type key registered in factory.KNOWN_DRIVER_TYPES.
Keysight U2000 Series
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
KeysightU2000 |
U2004A | U2000 Series USB Power Sensor | KEYSIGHT/AGILENT/HP + (U2000, U200) |
Headless USBTMC-only sensor (no front panel); standard SCPI power-
sensor command set (FETCh?/MEASure?, SENSe:FREQuency,
SENSe:CORRection:GAIN2 for external gain/loss offset,
CALibration:ZERO). set_frequency() sets the CW frequency used for
the sensor's internal cal-factor table lookup, not an output.
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Rohde & Schwarz NRP-Z Series
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
RohdeSchwarzNRPZ |
NRP-Z21 | NRP-Z Series USB Power Sensor | HAMEG/ROHDE/ROHDE&SCHWARZ + NRP |
Headless USB sensor (no front panel), similar in shape to the
Keysight U2000 series but with R&S-specific correction subsystems:
SENSe:CORRection:DCYCle for pulse-power duty-cycle correction and
SENSe:CORRection:SPDevice for S-parameter device correction.
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
RF Switches
New instrument category (issue #204). "SWITCH" is a new canonical
driver_type key registered in factory.KNOWN_DRIVER_TYPES.
Mini-Circuits RC/RFS Series
| Driver | Purpose | Auto-Detect IDN Keywords |
|---|---|---|
MiniCircuitsRCSwitch |
RF switch matrix control (RC-4SPDT, RC-1SP4T, RC-2SP4T, etc.) | MINI-CIRCUITS/MINICIRCUITS |
Not a SCPI instrument. Uses Mini-Circuits' own flat ASCII command
set over USB/Ethernet: SET{switch}={0|1} for individual SPDT
switches (A-H), SP{n}T:STATE:PORT {port} for SPnT port selection.
Roadmap #174.
[!WARNING] Could not be verified against Mini-Circuits' official Programming Manual PDF at write time (host was unreachable from this environment). Confirmed only via third-party summaries of the
SET[switch]=[state]command. Not yet verified against real hardware -- prefer"GENERIC"passthrough or file an issue with the failing command.
RF Peak Power Meters
Boonton 4530 Series
| Driver | Validated Model | SCPI Family | Auto-Detect IDN Keywords |
|---|---|---|---|
Boonton4531 |
4531 (single-channel) | SCPI 1993 | BOONTON + (4531, 4530) |
Boonton4532 |
4532 (dual-channel) | SCPI 1993 | BOONTON + 4532 |
New PowerMeter base class (src/instrumation/drivers/base.py) --
distinct from the POWERMETER-keyed TektronixPA1000/YokogawaWT310
AC power analyzers (registered separately, no shared ABC), this
covers wideband RF peak/pulse power measurement: CW average power
(MEAS:POWER?), peak/pulse power (MEAS:PEAK?), video bandwidth for
pulse demodulation (SENS:BAND:VIDEO), trigger source/level
(TRIG:SOURCE/TRIG:LEVEL), pulse-width measurement
(MEAS:PULSE:WIDTH?), relative gain/loss offset (CAL1:OFFSET), and
sensor zero calibration (CAL:ZERO). Registered under a dedicated
"PEAKPM" driver type to avoid ambiguity with the existing
"POWERMETER" category.
Boonton4532 (dual-channel) overrides measure_power/
measure_peak_power with an optional channel argument (1 or 2);
Boonton4531 (single-channel) omits the parameter entirely. GPIB and
RS-232 only -- no USB/LAN on this generation, which fits the existing
PyVISA RealDriver path directly.
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Power Analyzers
New instrument category (issue #204). "POWERMETER" is a new
canonical driver_type key registered in
factory.KNOWN_DRIVER_TYPES.
Yokogawa WT310 Series
| Driver | Validated Model | Command Family | Auto-Detect IDN Keywords |
|---|---|---|---|
YokogawaWT310 |
WT310 | WT310/WT310HC/WT332/WT333 | YOKOGAWA + WT3 |
Uses Yokogawa's :NUMeric[:NORMal]:ITEM<x> output-item configuration
model: each numeric output slot (1-255) is assigned a function
(U=voltage, I=current, P=active power, S=apparent, Q=reactive,
LAMBda=power factor) and element (1-3 for multi-element models),
then :NUMeric[:NORMal]:VALue? reads back all configured items as a
single comma-separated response -- distinct from a per-quantity
MEASure:<FUNC>? query used by DMM-style instruments.
measure_voltage/measure_current/measure_active_power/
measure_power_factor are convenience wrappers that configure slot 1
and read it back in one call.
[!WARNING] Not yet verified against real hardware. If you hit an SCPI error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Tektronix PA1000
| Driver | Validated Model | Command Family | Auto-Detect IDN Keywords |
|---|---|---|---|
TektronixPA1000 |
PA1000 | Community-verified quirky SCPI | TEKTRONIX + PA1000 |
Tektronix's published PA1000 manual omits the SCPI programming chapter; this driver is built from community-verified, hands-on PyVISA usage notes and documents several real quirks:
- Every command requires the leading
:root designator. - Semicolon-separated command chaining is not supported.
- No
*OPC?support --wait_ready()sleeps a fixed 0.5s settle time instead of polling;*RSTneeds a fixed 5s delay. - Uses
:SEL:*to choose which readings appear in:FRD?output, then:FRD?fetches them as a comma-separated list --clear_selection() select_*()+fetch_readings()compose into themeasure_voltage_rms/measure_current_rms/measure_active_power/measure_frequencyconvenience wrappers.- Non-LXI-compliant Ethernet: raw socket on port 5025, no VXI-11.
[!WARNING] Not yet verified against real hardware by this project. If you hit a command error, prefer
"GENERIC"passthrough or file an issue with the failing command.
Temperature Controllers
Lake Shore Model 336
| Driver | Validated Model | Command Family | Auto-Detect IDN Keywords |
|---|---|---|---|
LakeShore336 |
336 | Model 336/335 ASCII mnemonic set | LSCI/LAKE SHORE/LAKESHORE + (336, 335) |
New TemperatureController base class (src/instrumation/drivers/base.py)
-- a cryogenic temperature controller reads multiple sensor inputs
(lettered A-D) and drives PID heater-output control loops (numbered
1-2), which has no equivalent in the DC-only PowerSupply ABC.
Covers Kelvin/Celsius/sensor-units readings (KRDG?/CRDG?/SRDG?),
per-loop setpoint and PID gain configuration (SETP/PID), heater
range and output queries (RANGE/HTR?), ramp-rate warm-up/cool-down
limiting (RAMP), control-mode selection (OUTMODE), and autotune
(ATUNE). Alarm status (ALARMST?) is also exposed. Sensor input
curve/type configuration (INTYPE) is passed through as a raw
comma-separated parameter string, since the exact field encoding varies
by sensor family (diode, RTD, thermocouple) and firmware revision.
Also likely compatible (same ASCII mnemonic command set):
- Model 335 (2 inputs / 1 loop -- use loop 1 only)
[!WARNING] Not yet verified against real hardware. If you hit a command error, prefer
"GENERIC"passthrough or file an issue with the failing command.
GENERIC (Universal Fallback)
| Driver | Purpose | Auto-Detect IDN Keywords |
|---|---|---|
GenericDriver |
Catch-all driver for unidentified instruments; accepts any model | none (explicit "GENERIC" request or unrecognized *IDN?) |
"GENERIC" is a first-class, always-registered key in
DriverRegistry — get_drivers_by_type("GENERIC") always returns
GenericDriver (real mode) and SimulatedGeneric (SIM mode). It is used
when connect_instrument() cannot identify an instrument, or when you
explicitly pass driver_type="GENERIC" to get_instrument(). It exposes
only generic SCPI passthrough (no typed measurement API), so it is a safe
default, never a silent DMM/SA misread — see issue #148.
Summary
| Category | Drivers | Validated Models |
|---|---|---|
| Oscilloscopes | 7 | DSOX2002A, DS1054Z, SDS Series, TDS Series, HMO722, SDS2102X Plus, MSO5354 |
| Spectrum Analyzers | 5 | MXA N9020A, PXA N9030A, DSA800, MS2830A, SSA3021X |
| Signal Generators | 9 | N5183B, AFG3022C, SMA100B, MG3700A, SMA100A, SDG2042X, DG4062, MFG-2120, DS345 |
| Network Analyzers | 4 | N5232A, N9913A, MS2035B, SNA5012A |
| Multimeters | 6 | 34461A, 2000, 8846A, SDM3055, DM3068, DMM6500 |
| Power Supplies | 12 | Z+100-2, 9130B, DP832, SPD3303X, E36313A, KA3005P, GPP-4323, 6632B, CPX400DP, HMP4040, SG Series, 1685B |
| AC Power Sources | 1 | AC6800B Series |
| Electronic Loads | 6 | SDL1000X, 8600, DL3021, IT8512+, 63200A, 3311F |
| Lock-In Amplifiers | 1 | SR830 |
| LCR Meters | 3 | E4980A, IM3536, E4990A |
| Frequency Counters | 2 | 53230A, PM6690 |
| Data Acquisition Units | 1 | DAQ970A |
| RF Switches | 1 | RC-4SPDT-A18 |
| USB Power Sensors | 2 | U2004A, NRP-Z21 |
| Power Analyzers | 2 | WT310, PA1000 |
| RF Peak Power Meters | 2 | 4531, 4532 |
| Temperature Controllers | 1 | Model 336 |
| Total | 61 |
[!TIP] If your model shares a SCPI command set with one of the listed families, the existing driver will almost certainly work. Try
"AUTO"discovery first — the factory matches on*IDN?keywords.