Repository navigation
Home
scpi-sim simulates SCPI lab instruments — power supplies, multimeters, relay multiplexers and oscilloscopes — as network servers. Your test scripts talk to them exactly as they would talk to the real instruments on the bench: over a raw TCP socket (port 5025), VXI-11 or HiSLIP. Fifteen profiles make them answer like real models from Rohde & Schwarz, Keysight, Keithley, Siglent, Rigol and Tektronix.
Try it without installing anything: https://scpi-sim.steitec.net runs the real simulator in your browser — see Browser demo.
- Developing test software before the hardware is there — or while it is busy on someone else's bench.
- Running instrument code in CI. A simulated bench starts in milliseconds, in a pytest fixture or as a Docker service container.
- Testing the unhappy paths. Timeouts, dropped connections, wrong identities, drifting readings and error codes can be switched on at runtime — things that are hard to provoke with real instruments.
| If you want to … | read |
|---|---|
| see it working in two minutes | Browser demo |
| install it and talk to a first instrument | Getting started |
| capture waveforms, from five real scope dialects | Oscilloscope |
run a script written for TCPIP::host::INSTR or hislip0
|
VXI-11 and HiSLIP |
| use it in pytest and CI pipelines | Testing in CI |
| check that your code copes with broken instruments | Fault injection recipes |
| find out why something does not answer | Troubleshooting |
The README is the complete reference: every command of the generic instruments, the profiles, bench files, your own devices under test, the Python API. This wiki adds walkthroughs and background.
| Install |
pip install scpi-sim (Python 3.10+, only dependency PyYAML) or docker run ghcr.io/steitec/scpi-sim
|
| Transports | raw TCP socket per instrument, VXI-11 (with port mapper), HiSLIP 1.0 |
| Instruments | generic psu, dmm, mux, scope; profiles rs-hmp4040, rs-nge103b, keysight-e36312a, siglent-spd3303x, rs-hmc8012, keysight-34461a, keithley-dmm6500, siglent-sdm3065x, keysight-daq970a, keithley-daq6510, keysight-dsox2024a, rigol-ds1054z, tektronix-tbs2104b, rs-rtb2004, siglent-sds1104x-e
|
| Benches | YAML file: instruments, loads, wiring, your own Python devices |
| Faults |
no_response, delay, disconnect, error, idn, offset, noise, no_trigger, signal
|
| Tested on | Linux, Windows, macOS; Python 3.10 and 3.13 |
| License | MIT |
The profiles follow the manufacturers' public programming manuals and are not verified on real hardware. If you own one of these instruments and something answers differently, please open an issue.
scpi-sim · MIT licensed · instrument names are trademarks of their owners; scpi-sim is not affiliated with them.
