> ## Documentation Index
> Fetch the complete documentation index at: https://nominal-instro-524-sw-timed-background-daemon.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# instro

> An open-source Python library for interfacing with hardware test equipment

`instro` is an [open-source](https://github.com/nominal-io/instro) Python library for scripting and automating test equipment (power supplies, multimeters, electronic loads, DAQs, and more) from one unified, typed API. Code against an instrument category once, then swap vendors with a single configuration change. When you want to capture the data, attach a publisher to stream it to a file, [Nominal](https://nominal.io), or a destination of your own.

## Start here

<Columns cols={2}>
  <Card title="Quickstart" icon="rocket" href="/instrumentation/quickstart">
    Drive a simulated power supply end-to-end in about five minutes. No hardware required.
  </Card>

  <Card title="Overview" icon="compass" href="/instrumentation/overview">
    Understand the architecture, key concepts, and design philosophy.
  </Card>

  <Card title="Installation" icon="download" href="/instrumentation/installation">
    Install from PyPI with `pip` or `uv`, plus the optional vendor extras you need.
  </Card>

  <Card title="Examples" icon="file-code" href="/instrumentation/examples">
    Browse runnable examples for every instrument category.
  </Card>
</Columns>

## Supported instruments

### Power supplies

`InstroPSU`: B\&K Precision, Keysight, Rigol, Siglent, and TDK Lambda.

<Columns cols={2}>
  <Card title="B&K Precision 9115" horizontal href="/instrumentation/psu">
    <img src="https://mintcdn.com/nominal-instro-524-sw-timed-background-daemon/cVNI4IRSSe5GeGox/images/equipment/BK-9115.png?fit=max&auto=format&n=cVNI4IRSSe5GeGox&q=85&s=e79df30490349612c3f7a758e694d7ac" style={{ width: "100%", height: "150px", objectFit: "contain" }} noZoom alt="B&K Precision 9115" width="987" height="108" data-path="images/equipment/BK-9115.png" />
  </Card>

  <Card title="B&K Precision 914x" horizontal href="/instrumentation/psu">
    <img src="https://mintcdn.com/nominal-instro-524-sw-timed-background-daemon/cVNI4IRSSe5GeGox/images/equipment/BK-914x-series.png?fit=max&auto=format&n=cVNI4IRSSe5GeGox&q=85&s=f6b83fbe47fe3ac38365b2a810b3bd1d" style={{ width: "100%", height: "150px", objectFit: "contain" }} noZoom alt="B&K Precision 914x" width="500" height="235" data-path="images/equipment/BK-914x-series.png" />
  </Card>

  <Card title="Keysight E36100" horizontal href="/instrumentation/psu">
    <img src="https://mintcdn.com/nominal-instro-524-sw-timed-background-daemon/cVNI4IRSSe5GeGox/images/equipment/Keysight-E36100.png?fit=max&auto=format&n=cVNI4IRSSe5GeGox&q=85&s=41429e408fb3c03dc4f35b02b36e62ca" style={{ width: "100%", height: "150px", objectFit: "contain" }} noZoom alt="Keysight E36100" width="992" height="896" data-path="images/equipment/Keysight-E36100.png" />
  </Card>

  <Card title="Rigol DP800" horizontal href="/instrumentation/psu">
    <img src="https://mintcdn.com/nominal-instro-524-sw-timed-background-daemon/cVNI4IRSSe5GeGox/images/equipment/Rigol-DP800.png?fit=max&auto=format&n=cVNI4IRSSe5GeGox&q=85&s=b6ea3e7e75691545669f825f3f93f2c5" style={{ width: "100%", height: "150px", objectFit: "contain" }} noZoom alt="Rigol DP800" width="500" height="328" data-path="images/equipment/Rigol-DP800.png" />
  </Card>

  <Card title="Siglent SPD3303" horizontal href="/instrumentation/psu">
    <img src="https://mintcdn.com/nominal-instro-524-sw-timed-background-daemon/cVNI4IRSSe5GeGox/images/equipment/Siglent-SPD3303.png?fit=max&auto=format&n=cVNI4IRSSe5GeGox&q=85&s=cc3df22c5207a2dfb9c99fff40a8acf7" style={{ width: "100%", height: "150px", objectFit: "contain" }} noZoom alt="Siglent SPD3303" width="472" height="300" data-path="images/equipment/Siglent-SPD3303.png" />
  </Card>

  <Card title="TDK Lambda Genesys" horizontal href="/instrumentation/psu">
    <img src="https://mintcdn.com/nominal-instro-524-sw-timed-background-daemon/cVNI4IRSSe5GeGox/images/equipment/TDK-Lambda-Genesys.png?fit=max&auto=format&n=cVNI4IRSSe5GeGox&q=85&s=3c0099019baa5b620b49b5d78597a021" style={{ width: "100%", height: "150px", objectFit: "contain" }} noZoom alt="TDK Lambda Genesys" width="500" height="374" data-path="images/equipment/TDK-Lambda-Genesys.png" />
  </Card>
</Columns>

### Electronic loads

`InstroELoad`: B\&K Precision 85xx series via SCPI/VISA.

<Columns cols={2}>
  <Card title="B&K Precision 85xx" horizontal href="/instrumentation/eload">
    <img src="https://mintcdn.com/nominal-instro-524-sw-timed-background-daemon/cVNI4IRSSe5GeGox/images/equipment/BK-8550.png?fit=max&auto=format&n=cVNI4IRSSe5GeGox&q=85&s=a1edd5e6d10c1b9a716ea2d5240cb9d6" style={{ width: "100%", height: "150px", objectFit: "contain" }} noZoom alt="B&K Precision 85xx" width="340" height="156" data-path="images/equipment/BK-8550.png" />
  </Card>
</Columns>

### Digital multimeters

`InstroDMM`: Agilent/HP/Keysight 34401A, Keysight 34461A, Keithley 2400, and more.

<Columns cols={2}>
  <Card title="Agilent/HP/Keysight 34401A" horizontal href="/instrumentation/dmm">
    <img src="https://mintcdn.com/nominal-instro-524-sw-timed-background-daemon/cVNI4IRSSe5GeGox/images/equipment/Agilent-34401A.png?fit=max&auto=format&n=cVNI4IRSSe5GeGox&q=85&s=ba92a6a2ada2e478377527e7819eea1c" style={{ width: "100%", height: "150px", objectFit: "contain" }} noZoom alt="Agilent/HP/Keysight 34401A" width="567" height="268" data-path="images/equipment/Agilent-34401A.png" />
  </Card>

  <Card title="Keysight 34461A" horizontal href="/instrumentation/dmm">
    <img src="https://mintcdn.com/nominal-instro-524-sw-timed-background-daemon/cVNI4IRSSe5GeGox/images/equipment/Keysight-34461A.png?fit=max&auto=format&n=cVNI4IRSSe5GeGox&q=85&s=28ce2da6675f3c9f1ac1399898b8d4ab" style={{ width: "100%", height: "150px", objectFit: "contain" }} noZoom alt="Keysight 34461A" width="613" height="251" data-path="images/equipment/Keysight-34461A.png" />
  </Card>

  <Card title="Keithley 2400" horizontal href="/instrumentation/dmm">
    <img src="https://mintcdn.com/nominal-instro-524-sw-timed-background-daemon/cVNI4IRSSe5GeGox/images/equipment/Keithley-2400.png?fit=max&auto=format&n=cVNI4IRSSe5GeGox&q=85&s=6b4380156573925b19c522bfe07f434d" style={{ width: "100%", height: "150px", objectFit: "contain" }} noZoom alt="Keithley 2400" width="500" height="216" data-path="images/equipment/Keithley-2400.png" />
  </Card>
</Columns>

### Oscilloscopes

`InstroScope`: Keysight 1200X, Tektronix 2-series, and Siglent SDS1000X-E.

<Columns cols={2}>
  <Card title="Keysight 1200X" horizontal href="/instrumentation/oscilloscope">
    <img src="https://mintcdn.com/nominal-instro-524-sw-timed-background-daemon/cVNI4IRSSe5GeGox/images/equipment/Keysight-1200X.png?fit=max&auto=format&n=cVNI4IRSSe5GeGox&q=85&s=b17097ad2d888adf68a5739f8173756f" style={{ width: "100%", height: "150px", objectFit: "contain" }} noZoom alt="Keysight 1200X" width="800" height="424" data-path="images/equipment/Keysight-1200X.png" />
  </Card>

  <Card title="Tektronix 2-series" horizontal href="/instrumentation/oscilloscope">
    <img src="https://mintcdn.com/nominal-instro-524-sw-timed-background-daemon/cVNI4IRSSe5GeGox/images/equipment/Tektronix-2-Series.png?fit=max&auto=format&n=cVNI4IRSSe5GeGox&q=85&s=b172f043dece5892a8d18fa855a41670" style={{ width: "100%", height: "150px", objectFit: "contain" }} noZoom alt="Tektronix 2-series" width="600" height="373" data-path="images/equipment/Tektronix-2-Series.png" />
  </Card>

  <Card title="Siglent SDS1000X-E" horizontal href="/instrumentation/oscilloscope">
    <img src="https://mintcdn.com/nominal-instro-524-sw-timed-background-daemon/cVNI4IRSSe5GeGox/images/equipment/Siglent-SDS1000X-E.png?fit=max&auto=format&n=cVNI4IRSSe5GeGox&q=85&s=74c9fb73604f902f598a923cba2729f5" style={{ width: "100%", height: "150px", objectFit: "contain" }} noZoom alt="Siglent SDS1000X-E" width="600" height="315" data-path="images/equipment/Siglent-SDS1000X-E.png" />
  </Card>
</Columns>

### Data acquisition

`InstroDAQ`: National Instruments, LabJack T-Series, Keysight 34980A.

<Columns cols={2}>
  <Card title="National Instruments" horizontal href="/instrumentation/daq">
    <img src="https://mintcdn.com/nominal-instro-524-sw-timed-background-daemon/cVNI4IRSSe5GeGox/images/equipment/NationalInstruments.png?fit=max&auto=format&n=cVNI4IRSSe5GeGox&q=85&s=3dbe9726877284884025d4038d4a2638" style={{ width: "100%", height: "150px", objectFit: "contain" }} noZoom alt="National Instruments" width="1085" height="581" data-path="images/equipment/NationalInstruments.png" />
  </Card>

  <Card title="LabJack T-Series" horizontal href="/instrumentation/daq">
    <img src="https://mintcdn.com/nominal-instro-524-sw-timed-background-daemon/cVNI4IRSSe5GeGox/images/equipment/LabJack-T-Series.png?fit=max&auto=format&n=cVNI4IRSSe5GeGox&q=85&s=3daa90e2cc7f3c4a35bf5d31350a7cd0" style={{ width: "100%", height: "150px", objectFit: "contain" }} noZoom alt="LabJack T-Series" width="370" height="637" data-path="images/equipment/LabJack-T-Series.png" />
  </Card>

  <Card title="Keysight 34980A" horizontal href="/instrumentation/daq">
    <img src="https://mintcdn.com/nominal-instro-524-sw-timed-background-daemon/cVNI4IRSSe5GeGox/images/equipment/Keysight-34980A.png?fit=max&auto=format&n=cVNI4IRSSe5GeGox&q=85&s=d289cfbecb83c30f6ce7e4c36a0472fe" style={{ width: "100%", height: "150px", objectFit: "contain" }} noZoom alt="Keysight 34980A" width="600" height="206" data-path="images/equipment/Keysight-34980A.png" />
  </Card>
</Columns>

### I2C

`I2CInterface`: Total Phase Aardvark with declarative system definitions.

<Columns cols={2}>
  <Card title="Total Phase Aardvark" horizontal href="/instrumentation/protocols/i2c/overview">
    <img src="https://mintcdn.com/nominal-instro-524-sw-timed-background-daemon/cVNI4IRSSe5GeGox/images/equipment/TotalPhase-Aardvark.png?fit=max&auto=format&n=cVNI4IRSSe5GeGox&q=85&s=a84243df023f3b966896cfebe9c83179" style={{ width: "100%", height: "150px", objectFit: "contain" }} noZoom alt="Total Phase Aardvark" width="500" height="348" data-path="images/equipment/TotalPhase-Aardvark.png" />
  </Card>
</Columns>

### Flow controllers

`InstroFlowController`: Alicat MC.

<Columns cols={2}>
  <Card title="Alicat MC" horizontal href="/instrumentation/flowcontroller">
    <img src="https://mintcdn.com/nominal-instro-524-sw-timed-background-daemon/cVNI4IRSSe5GeGox/images/equipment/Alicat-MC.png?fit=max&auto=format&n=cVNI4IRSSe5GeGox&q=85&s=6d65687c9e32e5e96be8e0efcef0f02c" style={{ width: "100%", height: "150px", objectFit: "contain" }} noZoom alt="Alicat MC" width="500" height="141" data-path="images/equipment/Alicat-MC.png" />
  </Card>
</Columns>

### Modbus

`ModbusDevice`: any Modbus TCP or RTU device.

<Columns cols={2}>
  <Card title="Modbus TCP" horizontal href="/instrumentation/protocols/modbus">
    <img src="https://mintcdn.com/nominal-instro-524-sw-timed-background-daemon/cVNI4IRSSe5GeGox/images/equipment/Modbus-TCP.png?fit=max&auto=format&n=cVNI4IRSSe5GeGox&q=85&s=cbcf1edd82ed37f4940a35ab5a8277eb" style={{ width: "100%", height: "150px", objectFit: "contain" }} noZoom alt="Modbus TCP" width="600" height="191" data-path="images/equipment/Modbus-TCP.png" />
  </Card>

  <Card title="Modbus RTU" horizontal href="/instrumentation/protocols/modbus">
    <img src="https://mintcdn.com/nominal-instro-524-sw-timed-background-daemon/cVNI4IRSSe5GeGox/images/equipment/Modbus-RTU.png?fit=max&auto=format&n=cVNI4IRSSe5GeGox&q=85&s=8ad905709f1374214f22dd14296e77d6" style={{ width: "100%", height: "150px", objectFit: "contain" }} noZoom alt="Modbus RTU" width="600" height="191" data-path="images/equipment/Modbus-RTU.png" />
  </Card>
</Columns>

### EtherNet/IP

`EtherNetIPDevice`: Allen-Bradley and CompactLogix-class PLCs.

<Columns cols={2}>
  <Card title="Allen-Bradley" horizontal href="/instrumentation/protocols/ethernetip">
    <img src="https://mintcdn.com/nominal-instro-524-sw-timed-background-daemon/cVNI4IRSSe5GeGox/images/equipment/Allen-Bradley.png?fit=max&auto=format&n=cVNI4IRSSe5GeGox&q=85&s=2eae8d3b8c275699815897ebea8da8a5" style={{ width: "100%", height: "150px", objectFit: "contain" }} noZoom alt="Allen-Bradley" width="600" height="508" data-path="images/equipment/Allen-Bradley.png" />
  </Card>

  <Card title="CompactLogix" horizontal href="/instrumentation/protocols/ethernetip">
    <img src="https://mintcdn.com/nominal-instro-524-sw-timed-background-daemon/cVNI4IRSSe5GeGox/images/equipment/CompactLogix.png?fit=max&auto=format&n=cVNI4IRSSe5GeGox&q=85&s=f522948a63096610b74b888cdad5fee4" style={{ width: "100%", height: "150px", objectFit: "contain" }} noZoom alt="CompactLogix" width="1360" height="1090" data-path="images/equipment/CompactLogix.png" />
  </Card>
</Columns>

### Custom instruments

Build a new instrument type or vendor driver against `Instrument`.

<Columns cols={2}>
  <Card title="Instrument" icon="code" href="/instrumentation/library">
    Create your own Instrument category using the tools in `instro`
  </Card>

  <Card title="Request a driver" icon="sparkles" href="https://community.instro.nominal.io/c/driver-feature-requests/9">
    Start a thread on our community forum
  </Card>
</Columns>

## Publishing data

<Card title="Publishers" icon="rocket" href="/instrumentation/publishers">
  Stream measurements to Nominal Core, Nominal Connect, or a local file with a single line of configuration.
</Card>
