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.