Skip to content

f3ts-hardware-utils

The f3ts-hardware-utils package is a Python library for connecting to and controlling the test hardware in a FixturFab Functional Test System. It provides classes for the instruments FixturFab supports, so a test plan can drive power supplies, I/O, relays, programmers, and measurement instruments through one consistent interface. It is commonly used with our pytest-f3ts framework, but can be used independently for instrument control.

You can find the package on PyPI and the source repository on GitLab.

Prerequisites

libusb

libusb is required by pyocd, which is used for programming and debugging microcontrollers (e.g. via Segger J-Link). Installation instructions vary by operating system — see the libusb wiki.

On Windows, you can download binaries from SourceForge.

The Acroname MTM driver depends on the brainstem package, which is installed automatically with f3ts-hardware-utils.

Installation

bash
pip install f3ts-hardware-utils

Or, in a Poetry-managed project:

bash
poetry add f3ts-hardware-utils

Requires Python 3.10–3.14.

Supported Hardware

f3ts-hardware-utils ships drivers for the test hardware FixturFab supports:

InstrumentModuleDriver
Acroname Manufacturing Test Modules (MTM)mtm_utilsmtm_exec, get_voltage, get_current (wraps the Acroname Brainstem API)
Feasa LED AnalyzersfeasaFeasa
FixturCtrl (programmable USB hub + cycle counter)ffcFixturCNTL
FixturIO (Teensy-based digital/analog I/O module)ffioFixturIO
FixturRelay (8-channel solid-state relay module)ffssrFixturSSR
Segger J-Link programmersjlinkJLink
Rigol power supplies & programmable loadsrigolDP711, DP712, DP821, DP832, DL3021
USB relay hardwarerelaysUSBRelay

For the deep, buyer-facing instrument reference (FixturCtrl, FixturIO, supported vendors), see the Shop → Instrumentation docs.

Usage

Each instrument is a class you instantiate, open(), use, and close(). For example, the FixturCtrl board:

python
from f3ts_hardware_utils.ffc import FixturCNTL

fixtur_cntl = FixturCNTL()
fixtur_cntl.open()

# ... interact with the FixturCtrl board ...

fixtur_cntl.close()

With pytest-f3ts

The package registers a session-scoped pytest fixture, fixtur_cntl, that opens a FixturCNTL connection for the duration of the test session and closes it on teardown. Request it directly in a test:

python
def test_power_rail(fixtur_cntl):
    # fixtur_cntl is a connected FixturCNTL instance
    ...

See the pytest-f3ts documentation for how hardware utilities fit into a full test plan.