An EPICS PVAccess server for Tektronix MSO and DPO oscilloscopes, built with epicsdev.
Tested with:
- Tektronix MSO64B over TCP/IP
- Tektronix DPO2004B over USB
- TCP/IP, USB, and GPIB connectivity through VISA
- Per-channel control and readback of key oscilloscope parameters
- Model-aware setup, including automatic channel-count handling
- Included generator for a basic Phoebus operator screen
Details here.
Measured waveform-transfer performance:
| Oscilloscope | Connection | Throughput |
|---|---|---|
| MSO64B | TCP/IP SOCKET | ~1.3 million float32 samples/s |
| DPO2004B | USB | ~80,000 float32 samples/s |
Actual performance depends on the instrument, VISA backend, network, and waveform settings.
Python 3.11 or later, p4p>=4.2.2, epicsdev>=3.0.1, numpy, pyvisa and a compatible VISA backend, such as pyvisa-py.
pip install epicsdev_osc_tektronix_msoStart the server with a VISA resource string:
python -m epicsdev_osc_tektronix_mso -r 'TCPIP::192.168.1.1::4000::SOCKET'The default EPICS PV prefix will be: tektronix0:
Generate a simple Phoebus oscilloscope screen:
cd opi
python generate_simplescope.py -t txMSO1 pva://tektronix0:This creates opi/simplescope.bob.
Notes:
-
The
prefixargument determines the PV names used by widgets. -
The default prefix is
$(DEV):, allowing the screen to use Phoebus macros. -
Install the optional generator dependency if needed:
pip install phoebusgen
- For TCP/IP, VISA
INSTRresources are typically more reliable;SOCKETresources can provide faster large-waveform transfers. - USB connections can be slow and less reliable on older instruments.
