OSA Lab · User manual

Control and logging of bench instruments over GPIB, USB, LAN and RS-232, all in one window.

1. What OSA Lab is

OSA Lab brings your bench instruments into a single program: power supplies, multimeters, oscilloscopes, electronic loads, AC sources, generators and data-acquisition units. Each instrument opens in its own window inside a workspace, which you can spread over several monitors and save.

Main window
Workspace with several instruments open (simulated mode).

2. Supported instruments

TypeModelsUsual interface
OscilloscopeAgilent/Keysight DSO1000A/B (DSO1012A, 1014A, 1024A…), InfiniiVision 5000/6000/7000 and 1000X–4000X (DSOX/MSOX/EDUX); Tektronix TDS3000 (TDS3014B…), MSO/DPO/MDO 2000–4000, MSO 4/5/6 Series, TBS1000/2000USB, GPIB, LAN
MultimeterAgilent 34401A, 34405A, 34410A/11A, 34450A, 34460A/61A/65A/70A; Keithley 2000, 2001, 2002, 2010, 2015 THD, 2016, DMM6500, DMM7510; HP 3457A; Fluke 8808A; Keysight EDU34450A; R&S HMC8012; Aim-TTi 1906/1908GPIB, USB, RS-232
DC supplyAgilent E3631A; E3640A–E3645A; HP/Agilent 6611C–6614C, 6631B–6634B, 6641A–6655A, 6671A–6675A; Keysight E36311A, E36312A, E36313A, EDU36311A; GW Instek GPD-2303S/3303S/4303S and GPP-1326/2323/3323/4323; BK Precision 9100/9200; Owon SPE and P4000; R&S HMC8041/8042/8043 and NGE100; Aim-TTi CPX400, QPX600/1200, MX100/180, PL/PLHGPIB, RS-232, USB, LAN
Source-measure unit (SMU)Keithley 2400/2401/2410/2420/2425/2430/2440 and 2450/2460/2461/2470; Keysight B2901A/B2902A/B2911A/B2912AGPIB, USB, LAN
Data acquisitionAgilent 34970A (34901A/02A/03A/07A… cards); Keithley 2700 (7700/7702/7708… cards and front DMM); Keithley DAQ6510 (SCPI mode)GPIB, RS-232
Electronic loadChroma 63600 (63610-80-20, 63630-80-60, 63640-80-80…); Siglent SDL1020X/1030X; BK Precision 8500B/8600GPIB, USB, LAN
AC sourceChroma 61600 (61601…61605)GPIB, USB
GeneratorAgilent 33120A, 33210A, 33220A, 33250A; Keysight 33500B, 33600A, EDU33211A/12A; Siglent SDG800/1000X/2000X/6000X; Rigol DG800/DG900/DG1000Z/DG2000/DG4000GPIB, RS-232, USB, LAN
FFT analyzerHP/Agilent 35670A (noise density, spectrum)GPIB
Network analyzerHP/Agilent 8711, 8712, 8713, 8714 (ET and ES; S11/S21, plus S12/S22 on ES); NanoVNA / NanoVNA-H / H4 (instrument calibration); LiteVNA and NanoVNA V2 (uncorrected data: normalize with memory)GPIB, USB-serial
Power meterHioki 3332 Power HiTesterGPIB, RS-232
Electrical safetyHioki 3157 (ground bond, 9518-02 GP-IB or 9593-02 RS-232C card); Associated Research OMNIA 8104/8105/8106 (AC/DC hipot, insulation, ground bond, leakage)GPIB, RS-232
Spectrum analyzerAgilent E7401A–E7405A (EMC, with quasi-peak and average), Siglent SSA3000X / SSA3000X Plus, Rigol DSA800, HP 3585A (conducted emissions pre-scan)USB, LAN, GPIB
RigolDP800/DP700 supplies (DP832, DP831, DP821, DP811, DP711/712); DL3021/DL3031 loads; DS1000Z scopes (DS1054Z, DS1104Z, MSO1104Z…), MSO5000/7000/8000 and DHO800/900/1000/4000 (12-bit)USB, LAN
SiglentSPD3303X/X-E/C, SPD1168X/1305X supplies; SDS1000X/X-E, SDS2000X scopes and the new-SCPI ones: SDS800X HD, SDS1000X HD, SDS2000X Plus/HD, SDS3000X HD, SDS6000; SDM3045X/3055/3065X metersUSB, LAN
OwonXDM1041/2041/3051 metersUSB-serial (115200 8N1)
Korad and clonesKA3005P, KD3005P, KA3010P, KD6005P… (Tenma 72-25xx, RND 320-KA…)USB-serial ("Korad" profile)
RidenRD6006, RD6006P, RD6012, RD6018, RD6024 (Modbus)USB-serial ("Riden" profile)
Your boardsTelemetry over UART / USB-CDC (key=value, CSV, JSON, regular expression)Serial port
Anything elseIf it answers *IDN?, it opens with the SCPI console—

Instruments are recognised by their answer to *IDN? (or ID? on older HP units such as the 3457A). Names in bold in the list have their own panel; the grey ones get the console only.

3. Installation

Requirements

Executable

Copy the OSA Lab folder anywhere and open OSA Lab.exe. To build the executable from source, run build_exe.bat; the result is in dist\OSA Lab\. For a Windows installer (Start menu, desktop icon, uninstaller and .osalab association), open installer\osalab.iss with Inno Setup 6 and press Compile.

From source

Double-click run.bat. The first time it creates a .venv environment and installs the dependencies (requirements.txt); afterwards it only updates them when they change.

To try it without instruments, choose the Simulated (no hardware) backend: every supported instrument appears, with realistic readings. Instruments → Demo mode directly opens a simulated power supply, multimeter, oscilloscope, load, generator, SMU and board telemetry.

The first time, a wizard opens (language, theme, report header and how to start); it can be reopened from Help → Start wizard.

4. Finding and connecting instruments

Over the network (LXI): Instruments → Search on the network (Ctrl+Shift+L) finds LAN instruments by VXI-11 broadcast and mDNS (and, if checked, by scanning the subnet on ports 5025, 111 and 4880), asks them *IDN? and adds them to the list. The addresses are saved for the next searches. An IP can also be typed in.

Instrument list
Instrument list.
  1. Choose the VISA backend:
    • Keysight IO Libraries: the normal choice. GPIB (82357B), USB and LAN. It also looks for USB instruments using the WinUSB driver (see code 48).
    • pyvisa-py: without Keysight drivers (USB with WinUSB/libusb, LAN, serial).
    • Simulated: no hardware.
  2. Press Search instruments. An Interface Clear is sent to the GPIB bus first to free it. Each instrument gets a few seconds to answer; the same button cancels the search.
  3. Double-click an instrument (or select several and press Connect selected). Connect all recognised opens every instrument that has a panel.

USB plug and play

Every 3 seconds OSA Lab checks whether a USB instrument has been plugged in or removed, without touching the GPIB bus. New ones appear in the list by themselves; unplugged ones (if not open) disappear. For GPIB press Search.

Addresses that don't respond

Keysight VISA lists the GPIB addresses saved in Connection Expert even if the instrument is off. OSA Lab hides them and the status bar says which. Tick Show addresses that don't respond to see them.

Manual resource

Type a VISA address (e.g. GPIB0::7::INSTR or TCPIP0::192.168.1.50::inst0::INSTR) and press Open.

Prologix and AR488 GPIB adapters

Prologix GPIB-USB, GPIB-ETHERNET and AR488 (Arduino) adapters do not use VISA: Instruments → Prologix / AR488 GPIB adapters. Add the adapter (COM port or IP), press Test adapter and Search addresses (tries *IDN? and ID? from 1 to 30) and save. With F5 they appear as PROLOGIX::COM5::12::INSTR and work like any other GPIB instrument (several instruments on the same adapter share the connection). Those that do not identify themselves are typed by hand in «GPIB addresses». An 82357B and one or more Prologix/AR488 can be used at the same time.

Serial port (RS-232 or USB-serial adapter)

Serial port
Serial port settings.

COM ports show up as Serial port COMn. Double-click to configure it: choose a profile (HP/Agilent: 9600 baud, 8 bits, no parity, 2 stop bits, DTR/DSR; Keithley: 9600 8N1, CR terminator…), press Test (*IDN?) and then Connect. The settings are saved for that port, so next time the instrument identifies itself. Right-click → Configure serial port… to change them.

Korad/Tenma and Riden supplies don't speak SCPI: choose their profile (or the matching Protocol) and OSA Lab treats them like any other supply. Owon XDM meters use the "Owon XDM (115200 8N1)" profile. The Fluke 8808A uses its own profile ("Fluke 8808A / 45"): it echoes and replies with the prompts => (OK), ?> (invalid command) and !> (cannot execute now), which OSA Lab handles. The Hioki instruments have their own profiles (3157: CR LF and RTS/CTS; 3332: LF; set the 3332 to Co. mode, not Pr.). The 66xxB/C also have RS-232 (66xxA are GPIB only).

On HP/Agilent instruments select the RS-232 interface in the instrument's I/O menu and use a null-modem cable.

5. Workspace

When an instrument is opened, OSA Lab only reads its state: it never changes setpoints or outputs on its own. Restoring a workspace does not re-apply setpoints either, only the monitoring.

6. Plot and statistics

Almost every panel has a trend plot with its toolbar:

ControlWhat it does
WindowVisible time: All, 30 s, 2 min, 10 min, 1 h.
UnitDraws only the series in that unit (one consistent Y axis) or All.
Y axisAuto (follows the reading), Auto from 0 or Manual (fixed minimum and maximum, e.g. 0–150 °C).
FreezeStops the plot while logging continues.
● Log CSVWrites every reading to a CSV in the data folder.
CursorsTwo draggable vertical lines: value of each series at C1 and C2, difference, mean between them and slope per minute (drift). Freezes the plot.
Compare…Overlays the same readings from a recorded session (dashed line, aligned at the start): before/after a change.
Export / PNG / ClearSaves everything collected as CSV, the plot as an image, or starts over.

Below it, the statistics table: last value, minimum, maximum, mean, σ and number of readings. Tick or untick a series to show or hide it. Drag a column border to widen it; the width is remembered.

7. Saving the data

You don't need to remember anything: with File → Record the session automatically (on by default) every reading from every instrument in Live, the calculated channels and the scope measurements are written to disk as they arrive, in OSALab\sesiones\sesion_YYYYMMDD_HHMMSS.csv. Even if the program closes or the power goes, what was read is kept. The status bar (bottom right) shows ● Recording session · N readings.

8. Custom labels

You can give each instrument and each reading your own name, e.g. Supply 1 for the E36313A and Output 1 voltage for its CH1 6V V. The label shows up everywhere: window title, readings-panel tiles, plot legend and table, combined log, sequencer and CSV headers (next to the original name).

9. DC supply

DC supply
Keysight E36313A: each channel in its front-panel colour.

10. Multimeter

Multimeter
34401A in Live.

11. Oscilloscope

Oscilloscope
DSO1014A with CH1, CH2 and MATH.

12. Data acquisition (34970A / Keithley 2700)

Data acquisition
34970A with its detected cards.
  1. On connection the installed cards and their channels are detected.
  2. Tick Use on the channels you want, give them a Label (e.g. Transformer) and choose the Function (V DC, K/J/T thermocouple, Pt100, NTC, Ω, I…) and NPLC.
  3. Apply configuration, then Single scan or ▶ Continuous scan with its interval.
  4. Save config / Load config store the channel table as JSON.

The Keithley 2700 also has a Multimeter (front) tab for the front terminals. Front and cards share the same internal DMM, so they are never both in Live at the same time.

13. Electronic load (Chroma 63600)

Electronic load
One card per detected module.

14. AC source (Chroma 61600)

15. Function generator

FFT analyzer (35670A)

35670A panel: noise density with log sweep, bands and a reference (simulated).

Measures noise spectral density (V/√Hz) or the spectrum (Vrms per line). With Log sweep it measures three 1600-line spans (400 Hz, 6.4 kHz and 102.4 kHz) and joins them: 0.25 Hz resolution at the bottom and up to 102 kHz at the top. It gives the integrated RMS noise over the bands you type (e.g. 10-100k; 10-1k; 1k-100k) and the spot noise at the frequencies you choose. It takes a preamplifier gain (divided out) and subtracts the instrument's own noise floor (measured with the input shorted) in quadrature. Curves can be kept as references or saved to CSV for comparison. With two identical preamplifiers (one per channel), Cross-correlation CH1×CH2 mode averages the cross spectrum: each preamplifier's own noise cancels out and the supply's noise remains; the dashed red curve is the limit reached with those averages. The two-channel preamplifier is in hardware/LNA_2CH (Fusion 360 project). Results are published as readings. How to set the measurement up: see the power supply characterization guide.

66xx and E364x supplies

Network analyzer (8711/8712/8713/8714)

Parameter (S11, S21; S12 and S22 on ES models), start and stop frequency (accepts 300k, 10M, 1.3G), points, IF bandwidth, power and averaging. Sweep makes a single sweep and Continuous repeats. The analyzer sends the complex data already corrected by its calibration, and the panel computes the formats: dB magnitude, phase, unwrapped phase, group delay, SWR, linear magnitude, R + jX impedance and the Smith chart.

Calibration is done on the analyzer itself (OSA Lab uses the corrected data).

Power meter (Hioki 3332)

Voltage, current, active, apparent and reactive power, power factor, phase angle, frequency and integration (Ah, Wh), in large tiles and on the plot. V and I ranges (or AUTO), rectifier mode (RMS, MEAN, MEAN + filter) and integration (start, stop, reset). Useful for the efficiency and no-load power of a supply: pick its "Active power" as the input power in Characterize power supply.

Ground bond (Hioki 3157)

Test current (3–31 A), upper and lower limits (in mΩ, up to 2 Ω) and time. START sends the settings and starts the test; the result is shown large (PASS / FAIL) with the measured resistance, and is kept in a history with the serial number of the device under test, exportable to CSV. Each result is published as a reading.

The test clip carries high current: connect it before pressing START and do not touch it during the test.

16. SCPI console

SCPI console
SCPI console of the E36313A.

Each instrument has a SCPI console tab to send commands directly. If the command ends with ? the answer is read back. ↑ ↓ browse the history. Errors empties the instrument's error queue and Diagnostics (on some instruments) tests which queries it answers.

17. Readings panel

Readings panel
Free layout: different sizes and one tile in alarm (red).

Tools → New readings panel (Ctrl+L). Shows the readings you choose, from any instrument, as big tiles in a single window. You can have several panels and move them to another monitor.

  1. Put the instruments in Live (or use ▶ Live on their instruments).
  2. + Add readings and pick one or more from the list.
  3. Right-click a tile for: label, colour, significant digits, limits (the tile turns red if the reading goes out of range), reset min/max or remove.

Layout

If a tile stops receiving readings it turns grey and says for how long. The panel only displays: it never talks to the instruments.

Grid layout
Grid layout.

18. Combined log

Combined log
Readings from several instruments on one plot.

Puts readings from different instruments on one plot and into a single wide CSV (one row per interval, one column per series). Tick the series in the list on the left (they appear when the instrument is in Live), choose the Interval and press ● Record. Max age: if a series has no recent reading, its cell is left empty. Type a note and press Mark to leave an event mark in the CSV (e.g. "load 2 A").

19. Test sequencer

Sequencer
Load step test with safety limits.

Tools → Test sequencer (Ctrl+T). Automates long tests: sets instruments, waits, checks and logs, while watching limits all the time.

Step types

StepWhat it does
Set instrumentDC supply (setpoint, outputs), load (mode and setpoint, ON/OFF), AC source, generator or a free SCPI command to any instrument.
Wait / holdWaits a time (s, min, h) and optionally logs mean/min/max over that interval.
Steps (sweep)Repeats a setting with several values (1 ; 2 ; 3 or 0.5:0.5:3), holding each one for a time and logging at the end.
Log readingsSaves a row with the current values.
Check readingChecks that a reading is between minimum and maximum; if not, aborts or logs FAIL and continues.
Message / pauseStops until you press Continue (e.g. to move a probe).
Ramp (over time)Moves a setpoint from one value to another over a time (e.g. supply 0→12 V in 2 s, or load 0→5 A in 10 min), updating every N s.
Wait until…Waits until a reading (or a calculated channel) is above or below a value, with a maximum time. E.g. battery discharge until < 3.0 V.
Steps step
Steps: CC load at 1, 2 and 3 A, 30 min each.

Example: load step test

  1. Connect the supply, the load and the instrument measuring temperatures, and put them in Live.
  2. Steps: Set supply to 5 V → Set outputs ON → Set load ON → Steps on the load (CC, values 1 ; 2 ; 3, 30 min each) → Set loads OFF.
  3. In Monitoring and logging, + Add readings: output voltage, current, temperatures. Give them a minimum/maximum (in base units: 0.5 = 500 m) and choose Abort or Warn only.
  4. ▶ Run. The bar shows the step, the time left and the total.

Safety

Example: battery test

  1. In Tools → Calculated channels create "Charge Ah = ∫ I dt" with the load current.
  2. Steps: Set load CC 1 A → Set load ON → Wait until battery voltage < 3.0 V (max 10 h) → Set load OFF → Log readings.
  3. Monitor voltage, current, the Ah channel and temperature (with a safety limit).
Wait until
"Wait until…" step.

Results

Each run creates secuencias/<name>_<date>.csv in the data folder (; separator, opens directly in Excel): one row per setting and per logged point, with mean, minimum and maximum of every reading. Sequences are saved as .seq.json and also with the workspace.

With Create a PDF report when finished a PDF report is also created next to the CSV: result, steps, limits, plots of the logged readings and the results table (red rows = failures or abort). If notifications are set up, you get a message when it finishes or aborts.

20. Analysis tools

In the Tools menu.

Bode plot

Bode
Response of a low-pass filter (simulated).

Measures the frequency response of a circuit with any supported generator and oscilloscope (Ctrl+B, or the button on the scope panel).

  1. Connect the generator to the circuit input and feed that same signal to a scope channel (reference, e.g. CH1). The circuit output goes to another channel (e.g. CH2).
  2. Choose start and stop frequencies (k, M accepted), points per decade and amplitude.
  3. ▶ Measure. At each frequency the timebase and, if ticked, each channel's V/div are adjusted. Amplitude and phase are computed by fitting a sine to each trace, so noise barely matters.

When done it shows the low-frequency gain, the −3 dB frequency and, if 0 dB or −180° are crossed, the phase and gain margins (useful for regulator loop stability). Export CSV and PNG.

While measuring, the scope's Live is stopped so it doesn't change the timebase.

Calculated channels

Calculated channels
Load power and energy.

Formulas with readings from any instrument (Ctrl+K): power a*b, efficiency 100*(a*b)/(c*d), ΔT a-b, gain db(a/b)… Each letter is assigned to a reading. With Integral it accumulates over time in hours: ∫ I → Ah, ∫ V·I → Wh (Reset integrals to start again). The result appears as the "Calculated" instrument: it can go on tiles, the combined log, the XY plot and the sequencer, with limits. Saved with the workspace.

XY plot

XY
Power versus load current.

One reading against another: efficiency versus current, Vout versus Vin… X axis… and + Y series…; each new Y reading is plotted with the latest X value. Export to CSV or PNG.

Histogram

Histogram
Histogram button on any plot's toolbar.

On any plot, the Histogram button shows the distribution of the series selected in the table, with mean, σ and peak-to-peak: useful to see a measurement's noise and stability.

Live oscilloscope screen

Live screen button on the scope panel: a copy of the instrument's own screen that refreshes by itself (adjustable rate), with a button to save the image.

Arbitrary waveform

Arbitrary waveform
Arbitrary waveform editor (33120A/33220A).

Arbitrary waveform… button on the generator: type a formula in t (0 to 1 = one period), pick an example or import a CSV, check the preview and press Send to generator and enable.

Python console

Python console
Console with the open instruments.

To write your own scripts with the instruments already open (Ctrl+Shift+P): inst['Supply 1'] gives the driver (by window name or label), read('source / series') the last reading. Each command runs in its own thread; Stop interrupts it.

Notifications (sound, Telegram, e-mail)

Notifications
Notification settings.

To find out away from the bench when a sequence finishes or aborts, or a tile goes into alarm. Telegram: create a bot with @BotFather, paste its token and your chat ID. E-mail: SMTP server with an app password. Send test notification to check.

Characterize power supply

Power supply characterization: load regulation and transient (simulated).

Tools → Characterize power supply (Ctrl+Shift+C). A wizard that, with the electronic load, the input source and the oscilloscope, runs:

Readings (Vout, Iout, input power, temperatures) are chosen from the instruments in Live, so any multimeter or acquisition channel works. Safety limits (minimum Vout, maximum temperature), and the load is turned off at the end or on stop. It creates a CSV and a PDF report in OSALab\caracterizacion. Help → Guide: characterizing power supplies explains each measurement, the setup and which instrument to use.

Ripple and noise with the oscilloscope

Tools → Ripple and noise with the oscilloscope (Ctrl+Shift+R). Sets the channel to AC and 20 MHz, the preset timebase (100 Hz mains, switching, spikes), takes N captures and gives the worst peak-to-peak, the mean RMS and the main spectral tones (Hann-window FFT). Reference for comparison and CSV export.

Protections (interlocks)

Tools → Protections. Rules that always watch the readings, with or without a sequence: "heatsink T > 85 °C for 2 s", "Vout < 4.5 V", or "reading stops arriving for more than 30 s". Action: turn off all outputs (supplies, loads, AC source and generators), stop the sequence, or notify only; it always notifies (sound, Telegram, e-mail). The status bar shows how many are active. They are saved with the workspace. The manual stop for everything is Instruments → STOP (Ctrl+Shift+X).

Remote control from phone

Tools → Remote control from phone. Starts a small web server on the local network: from the phone's browser (same Wi-Fi) you see all readings live, and a STOP button turns off all outputs. PIN protected; it does not go out to the Internet. The first time, Windows asks about the firewall: allow private networks only.

Instrument explorer (new driver)

For instruments without a driver. Connect it (it opens with the SCPI console), then in Tools → Instrument explorer press Probe commands: it sends typical SCPI queries for each family (queries only, nothing is changed) and records which ones answer. Then Generate driver writes a Python draft with the right base class and the commands that worked; it is saved in OSALab\drivers_nuevos to review and add (see CONTRIBUTING.md).

Certification tests (CE / UL)

Tools → Certification tests (CE / UL) (Ctrl+Shift+E). Safety and EMC pre-compliance testing of power supplies to IEC/EN/UL 62368-1, 61010-1, 60335-1 or 60601-1:

  1. Fill in the equipment data (rated voltages, current and power, class I/II, circuit protection, maximum ambient temperature…), choose the standard and press Generate the test plan.
  2. Each test has four tabs: Connection and procedure (diagram of where each lead goes), Parameters and limits (editable), Run (choose the instruments and start) and Result (table, PASS/FAIL, remarks and photos).
  3. Automatic: AC/DC hipot, insulation, ground bond and touch/leakage current with the Omnia (or ground bond with the Hioki 3157); input with AC source + power meter; heating with thermocouples until steady state and correction to the maximum ambient; simulated faults (power and temperature log); conducted emissions with LISN and spectrum analyzer, with the CISPR limits drawn (with an E7401A–E7405A, doubtful peaks are measured automatically with quasi-peak and average); current harmonics (EN 61000-3-2, oscilloscope with current probe) and external power supply ecodesign (EU 2019/1782: average efficiency and no-load power).
  4. Before each high-voltage or high-current test it asks you to confirm the safety conditions.
  5. Save stores the project (.osacert, in OSALab\certificacion) and PDF report creates the report with the diagrams, parameters, measurements, instruments and calibrations.

HP 3585A. It does not answer *IDN?: in the instrument list, right-click its GPIB address (11 from the factory; enable "Show addresses that do not answer") → Assign model… → HP 3585A. Set it up on the front panel (START 150 kHz, STOP 30 MHz, RBW 30 kHz, dB scale, 50 Ω input); OSA Lab reads the settings from the screen text and trace A.

It is a pre-compliance test: values are typical ones and those marked "verify" depend on tables in the standard. How to connect each test, which equipment is needed and the values of each standard are in the certification test guide.

Production test bench

Tools → Production test bench (Ctrl+Shift+F). End-of-line test for series production:

  1. Create the product profile: input voltage, instruments and steps with their parameters and limits (double-click the cell; JSON format, e.g. {"lo": 29.7, "hi": 30.3}). Available steps: ground bond and hipot (Omnia or Hioki 3157), no-load consumption, output voltage at a given current, load regulation, ripple and noise (oscilloscope, AC + 20 MHz), efficiency and overcurrent protection trip point. Save it as .osaprod.
  2. Type or scan the serial number and press Enter (a barcode reader works). PASS/FAIL appears in large letters with the detail of each step.
  3. Each unit is stored in OSALab\produccion\produccion.db (SQLite) and its PDF certificate is created with the measurements and the instruments used, with their calibration date from the inventory. Optional: 62 × 29 mm label with QR for units that pass.
  4. Below: today's units, first-pass yield, history, open certificates and export the history to CSV (one column per measurement).

It warns you if a serial number is repeated. At the end it turns off the load and, optionally, the AC source. The safety steps use the same code as the certification tests; the EUT must be able to switch from the AC source to the Omnia (relay fixture or a separate station).

Inventory and calibrations

Tools → Inventory and calibrations (Ctrl+Shift+I). List of your instruments with serial number, last calibration, due date, laboratory, certificate number and file. Add the connected instruments fills them in from *IDN?. Connecting an instrument whose calibration has expired shows a warning (and a status bar note if it expires within 30 days). Certification reports and production certificates take the calibration date from here. CSV import and export.

Telemetry from your boards over a serial port

Connect your board's UART (or its USB-CDC) and, in the port settings, choose the My board's telemetry profile (115200 8N1, LF). Every line the firmware sends becomes readings, like those of an instrument: plot, log, session, protections and sequencer.

Battery test

Tools → Battery test (Ctrl+Shift+A). Choose the chemistry (Li-ion, LiFePO4, NiMH, lead-acid), the cells in series and the capacity: the cut-off and charge voltages and the currents are proposed (C/5 discharge, C/2 charge, end at C/50).

Efficiency map (Vin × load)

Measurements → Efficiency map (Ctrl+Shift+M). With a power supply on the converter input and the electronic load on its output, it steps through a list of input voltages and, for each, a list of load currents. At every point it reads Vin·Iin from the supply (or Iin with a multimeter) and Vout·Iout from the load and computes η. Result: a heat map of efficiency, losses, Vout or Pin; η–Iout curves per Vin; a table; load and line regulation, and CSV/PNG. Lists: 5, 12, 24, 0:0.25:2 (start:step:stop) or 0.1-2/8 (8 points). «Minimum Vout» moves on to the next Vin if the converter drops out.

PSRR and output noise

Measurements → PSRR and output noise (Ctrl+Shift+Y). PSRR: the generator injects a sine at the regulator input through an injector (Picotest J2120A, transformer or MOSFET stage on the DC rail); the scope measures the regulator input (at its pins) and the output, both AC-coupled. At each frequency a sine is fitted to each trace and N captures are averaged coherently (noise drops by √N); vertical scales are set automatically. PSRR = 20·log(Vin/Vout) + the gain of the preamplifier on the output, if any. Points where the output is below the measurement noise are marked «≥»: the regulator is at least that good. Reference curve loads the datasheet curve (CSV frequency;dB) for comparison.

Output noise: density in V/√Hz with the scope (Welch with Hann window over the full memory, several captures) or with the 35670A FFT analyzer. A low-noise LDO (a few µVrms) needs a 40–60 dB low-noise preamplifier and a clean supply for the setup; Measure floor with the preamplifier input shorted and it is subtracted. It gives the integrated noise in the chosen band (10 Hz–100 kHz, as manufacturers do) and the density at 10 Hz, 100 Hz, 1 kHz, 10 kHz and 100 kHz.

Characterization report

Tests → Characterization report (Ctrl+Shift+G) gathers in a PDF (or HTML) with your header the results of the open tools: characterize supply, efficiency map, ripple, PSRR, noise, Bode and I-V curves. It starts with a summary of all quantities, continues with one section per test (white-background plots and tables) and ends with the list of instruments with manufacturer, model, serial number and calibration date from the inventory. Fill in the equipment, serial number, customer and reference; To notebook copies the sections into the lab notebook to keep annotating.

Sequence templates

Tests → Sequence templates: ready-made bench sequences (DC-DC start-up and regulation, line regulation, burn-in with monitoring, power cycling, battery discharge). When you choose one, you assign the open instruments to each role (supply, load and their output or channel), the readings to monitor and the parameters (Vin, tolerance, duration…); it is loaded into the sequencer to review and run. Save the current sequence as a template turns yours into a template (instruments become roles), in OSALab\plantillas, to use on another bench or share.

I-V curves

Tools → I-V curves (Ctrl+Shift+V). Sweeps voltage (or current, with an SMU) and measures the current. Works with an SMU (Keithley 2400/2450, Keysight B29xx), with a lab supply (measuring with its readback or with a multimeter in current mode) or with the electronic load in CV for solar panels, cells and power supplies.

Lab notebook

Tools → Lab notebook (Ctrl+Shift+N). Collects in order notes, captures of any window (plots, panels, tools), the oscilloscope screen, a table with the current readings and images. It is saved as .osanote and exported to PDF or HTML (single file) with your company header (name, logo, author).

Automation API

Tools → Automation API. Enables an HTTP/JSON server (this PC only by default, with a token) to control OSA Lab from scripts: list instruments, read readings, send SCPI commands, call driver methods (set_output, measure, apply…), connect, open workspaces and STOP. The Python client tools/osalab_client.py needs nothing else; tools/test_ejemplo_api.py is a pytest example. OSALab.exe --api starts it even if it is not enabled.

User drivers (plugins)

At startup OSA Lab loads the .py files in OSALab\drivers: every class that inherits from an instrument type (PowerSupply, Multimeter, ElectronicLoad, FunctionGenerator, SourceMeter…) and has models is used with the standard panel of that type. The instrument explorer generates the draft and installs it with one button. Help → User drivers shows the loaded ones and the errors, and creates an example template.

Languages

The interface is available in Spanish, English, German, French, Italian and Portuguese (View → Language; the manuals in Spanish and English). More languages can be added with a JSON file: Help → Translate OSA Lab into another language creates the template in OSALab\i18n. Anything not translated is shown in English, so it can be done in parts.

Instruments that do not respond

Panel commands (outputs, setpoints, configure, SCPI console, safety tests, GPIB reset) run in the background and in the order you press them, with or without Live: if an instrument is off or hung, the window stays responsive and the error appears in the status bar when its timeout expires. Each GPIB bus (and each USB, LAN or serial instrument) has its own turn, so a hung instrument does not delay those on other buses or the STOP.

Modules and activation

OSA Lab starts with the base program: finding and operating instruments, readings panel, log, XY plot, calculated channels, SCPI console, sequencer and templates, STOP and protections, and inventory. Everything else is in modules that do not appear in the menus until they are activated in Help → Modules and activation with an OSA Electronics code:

ModuleIncludes
Power suppliesCharacterize supply, efficiency map, ripple and noise, PSRR and output noise, characterization report
AnalysisBode plot and I-V curves
CE / UL certificationSafety, conducted EMC, harmonics and ecodesign pre-tests
ProductionProduction test bench
BatteriesBattery test
AutomationAPI, remote control from phone, Python console, instrument explorer, user drivers
Notebook and notificationsLab notebook and notifications

A code can activate one module, a pack (electronics bench: supplies, analysis and notebook; test laboratory: certification, production and batteries) or everything (master code). If the code is issued to you, type in «User» the name or e-mail it was issued to (case and accents do not matter). Trial codes expire on the date given and the module is hidden again. A workspace that uses a module that is not activated still opens, without that tool.

Request free trial… asks osalab.io for a 30-day trial of a module (or a pack, which is reviewed by hand): you receive an e-mail to confirm your address and then the code. Recover my codes… e-mails you all the active codes for your address. Once a day, when online, OSA Lab downloads the list of revoked codes (this can be turned off in Help → About → Updates). Without internet everything keeps working: codes are checked inside the program.

MenuContents
FileNew / open / recent / save / save as workspace, session recording and export, data folder, exit.
InstrumentsSearch (F5), network search (LXI), Prologix/AR488 GPIB adapters, connect or disconnect all, Live on all, STOP (all outputs off), protections, instrument name, inventory and calibrations, reset GPIB, demo mode.
MeasurementsReadings panel, combined log, XY plot, calculated channels · Bode, ripple and noise, I-V curves, PSRR and output noise · characterize supply, efficiency map.
TestsSequencer and sequence templates · certification tests, production bench, battery test · characterization report.
ToolsLab notebook, notifications, remote control from phone, automation API · instrument explorer, user drivers, Python console · find a function (Ctrl+P).
ViewTheme, font size, language, instrument list, status bar, full screen (F11).
WindowTile, cascade, tabs, detach/attach, minimise, close, go to…
HelpManual, power supply characterization guide, certification test guide, shortcuts, program log, data folder, check for updates, about.
About
About OSA Lab.

Help → About shows the version, the OSA Electronics copyright, the components used, the list of supported instruments and the licences. Check for updates queries osalab.io (stable or beta channel; GitHub releases or your own JSON also work) and, if there is a new version, shows what's new. If the release includes the installer, Download and install downloads it, checks its SHA-256 checksum (if published), closes OSA Lab saving the workspace, installs and reopens it. It can check automatically at startup (it only offers the update when no instruments are open).

Find a function (Ctrl+P, or the button on the quick access bar): type part of the name («bode», «stop», «battery», «template»…) and press Enter; it searches all menus. The quick access bar (Search, Network, Readings panel, Sequencer, Live all, Stop Live and STOP) can be hidden in View → Quick access bar.

22. Theme, font and language

23. Files and folders

Everything is stored in the data folder %USERPROFILE%\OSALab (File → Open data folder):

*.csvPlot logs, oscilloscope captures, combined log.
sesiones\Automatic recording of every reading of each session.
secuencias\Saved sequences and their results.
*.osalabWorkspaces (JSON). With the installer, double-clicking opens OSA Lab with that workspace.
caracterizacion\CSV and PDF reports from power supply characterization.
drivers_nuevos\Driver drafts from the instrument explorer.
ultimo_espacio.jsonLast workspace (saved on exit).
osalab.logProgram log (useful for diagnosing problems).
cuelgue_*.txtIf the window blocks for more than 6 s, this records where it was waiting.

24. Troubleshooting

No GPIB instrument responds

An instrument can leave the bus stuck mid-handshake. Use Instruments → Reset GPIB bus; if that doesn't help, power-cycle the last instrument you connected, or unplug and replug the 82357B.

A USB instrument doesn't appear, not even in Connection Expert (code 48)

Some Keysight/Agilent instruments (E36313A, 34405A…) use the ausbtmc USB-TMC driver, which Windows 11 may block: Device Manager shows a yellow triangle and code 48. Fix:

  1. Download Zadig and enable Options → List All Devices.
  2. Pick the instrument by checking its USB ID (e.g. E36313A = 2A8D 1202, 34405A = 0957 0618). Don't touch the 82357B (0957 0718).
  3. Driver WinUSB → Replace Driver. OSA Lab detects it within seconds (Keysight backend).

To undo: Device Manager → the instrument → Uninstall device (ticking "delete the driver").

Windows detects nothing when plugging in a USB instrument

Try another cable (many are charge-only), another port without a hub, and check the instrument's USB mode (some scopes have Auto/Printer/Device: it must be Device).

Odd readings, or the Chroma gives no measurements

With the output OFF many AC sources return no measurements. Press Diagnostics in the SCPI console to see what it answers.

The window froze

Look at the latest cuelgue_*.txt and osalab.log in the data folder.

25. Keyboard shortcuts

Ctrl+OOpen workspace
Ctrl+SSave workspace
Ctrl+DDetach the active window (other monitor)
Ctrl+LNew readings panel
Ctrl+TTest sequencer
F2Name the active instrument
F5Search instruments
Ctrl+EExport session
Ctrl+BBode plot
Ctrl+KCalculated channels
Ctrl+Shift+CCharacterize supply
Ctrl+Shift+ECertification tests
Ctrl+Shift+FProduction bench
Ctrl+Shift+IInventory and calibrations
Ctrl+Shift+ABattery test
Ctrl+Shift+VI-V curves
Ctrl+Shift+NLab notebook
Ctrl+Shift+LSearch on the network (LXI)
Ctrl+Shift+RRipple and noise with the oscilloscope
Ctrl+Shift+XSTOP: turn off all outputs
Ctrl+Shift+PPython console
Ctrl+Shift+SSave workspace as…
Ctrl+WClose active window
F11Full screen
F1This manual