Appearance
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-utilsOr, in a Poetry-managed project:
bash
poetry add f3ts-hardware-utilsRequires Python 3.10–3.14.
Supported Hardware
f3ts-hardware-utils ships drivers for the test hardware FixturFab supports:
| Instrument | Module | Driver |
|---|---|---|
| Acroname Manufacturing Test Modules (MTM) | mtm_utils | mtm_exec, get_voltage, get_current (wraps the Acroname Brainstem API) |
| Feasa LED Analyzers | feasa | Feasa |
| FixturCtrl (programmable USB hub + cycle counter) | ffc | FixturCNTL |
| FixturIO (Teensy-based digital/analog I/O module) | ffio | FixturIO |
| FixturRelay (8-channel solid-state relay module) | ffssr | FixturSSR |
| Segger J-Link programmers | jlink | JLink |
| Rigol power supplies & programmable loads | rigol | DP711, DP712, DP821, DP832, DL3021 |
| USB relay hardware | relays | USBRelay |
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.