benchControlPlatform
Docs

Platforms

Every statement here is marked. Tried: it was run. Not tried: it was read in the code or in a crate's source or documentation and has not been run.

TriedNot tried

macOS

  • Tried

    The platform the app is used with the instruments and tested on.

  • Tried

    Settings: ~/Library/Application Support/benchControlPlatform/settings.toml. Also tried: the copy of the file from the folder of the old name, homeControlPlatform, into the new folder, with the old file left unchanged.

  • Tried

    Serial ports: macOS lists every USB serial device twice, as /dev/cu.* and /dev/tty.*. The IPS3608 auto-detection by USB ID (2E3C:5740) prefers the /dev/cu.* port.

  • Tried

    FNB58: hidapi opens HID devices exclusively on macOS. While the app holds the meter, no other program can open it: close the app before the FNB58 hardware tests and run them one at a time (cargo test fnb58_ -- --ignored --test-threads=1).

Linux

Build

sudo apt-get install pkg-config libudev-dev
  • Tried

    The build packages on Debian.

  • Not tried

    The same package names on Ubuntu.

  • Not tried

    A build without a C compiler. hidapi compiles C code, so a C compiler is needed (build-essential); the image used had one. A build without the X11 development files was not tried either.

  • Tried

    The binary links no library besides libudev.so.1 and the C runtime (checked with readelf -d).

  • Not tried

    X11 and Wayland are loaded when the app runs, and the save dialog uses the XDG desktop portal instead of GTK (read in the crates).

  • Tried

    On 2026-11-14 at commit 669de92, in the Docker image rust:1.94.1 (Debian 13.4, aarch64): cargo fmt --check passed, cargo build --locked built, cargo clippy --locked --all-targets -- -D warnings passed without a warning, and cargo test --locked gave 394 passed, 0 failed, 3 ignored (the hardware tests). The image has neither rustfmt nor clippy; rustup component add rustfmt clippy adds them. The run, from the repository root:

    docker run --rm -v "$PWD":/src:ro -e CARGO_TARGET_DIR=/tmp/target -w /src rust:1.94.1 bash -c '
      set -eux
      apt-get update
      apt-get install -y --no-install-recommends pkg-config libudev-dev
      rustup component add rustfmt clippy
      cargo fmt --check
      cargo build --locked
      cargo clippy --locked --all-targets -- -D warnings
      cargo test --locked'
  • Not tried

    x86_64.

Running the app

Running the app on Linux was not tried: it was started neither on a desktop nor under an X server, and no instrument was connected. Everything in this list was read in the code and the crates.

  • Not tried

    Desktop: the app draws with wgpu and is built with X11 and Wayland support. It needs a desktop with X11 or Wayland and a GPU driver that wgpu can use.

  • Not tried

    Save dialogs go through the XDG desktop portal and fall back to zenity. Without the portal and without zenity, the dialog does not open and nothing is saved.

  • Not tried

    Settings: $XDG_CONFIG_HOME/benchControlPlatform/settings.toml, by default ~/.config/benchControlPlatform/settings.toml.

  • Not tried

    Serial ports: /dev/ttyUSB* (USB serial adapters) and /dev/ttyACM* (USB CDC devices). On Debian and Ubuntu they belong to the group dialout, so the user needs to be in it (sudo usermod -aG dialout "$USER", then log in again).

  • Not tried

    IPS3608 auto-detection: there is no /dev/cu.* on Linux, so it takes the first port with the USB ID 2E3C:5740.

  • Not tried

    FNB58: hidapi opens the meter through /dev/hidraw*. These nodes usually belong to root, so a normal user needs a udev rule for 2E3C:5558:

    # /etc/udev/rules.d/70-fnirsi-fnb58.rules
    SUBSYSTEM=="hidraw", ATTRS{idVendor}=="2e3c", ATTRS{idProduct}=="5558", MODE="0660", TAG+="uaccess"

    Then sudo udevadm control --reload-rules && sudo udevadm trigger, and plug the meter in again. Whether a second program can open the meter while the app holds it was not tried either.

Windows

  • Not tried

    Not supported and not tried: no build, no test, no run.

Check a platform

Run these four commands on the platform; each must pass. cargo deny is a tool of its own (cargo install cargo-deny --locked). The pipeline runs the same four in the image rust:1.94.1.

cargo fmt --check
cargo clippy --locked --all-targets -- -D warnings
cargo test --locked
cargo deny check licenses
  • Tried

    On macOS all four pass.

  • Tried

    In the Linux container the first three passed.

  • Not tried

    cargo deny in the Linux container.

cargo test skips the hardware tests; they are marked ignored and need the instrument.

Condensed from docs/platforms.md in the repository.