Skip to content
BenchMesh

x86-64 · AppImage · .deb

Run BenchMesh on Linux

BenchMesh runs on any current x86-64 Linux. Two things need one command each, once per computer: access to USB-TMC instruments (oscilloscopes, signal generators, many supplies) and to serial ports. The app tells you when one is missing and links here.

AppImage or .deb

DownloadForUpdates
BenchMesh_<version>_amd64.AppImageAny distribution with glibc 2.35 or newer (Ubuntu 22.04, Debian 12, Fedora 36 and later)Installs updates itself
BenchMesh_<version>_amd64.debDebian, Ubuntu and derivativesThe app offers the new version; install the new .deb

Install

The AppImage needs the executable bit, then it runs from wherever it is:

Terminal
chmod +x ~/Downloads/BenchMesh_*.AppImage
~/Downloads/BenchMesh_*.AppImage

At its first start the AppImage adds itself to the applications menu (a desktop entry and icon in ~/.local/share), so the dock shows the BenchMesh icon; it updates the entry if you move the file. The .deb installs with sudo apt install ./BenchMesh_*_amd64.deb and appears in the menu by itself. Settings and recordings live in ~/.benchmesh for both.

USB instruments: “no permission to use /dev/usbtmc0”

USB-TMC instruments use the Linux kernel’s own driver - no vendor software. But Linux gives the device node (/dev/usbtmc0, /dev/usbtmc1 …) to root only, so BenchMesh shows the instrument offline with no permission to use /dev/usbtmc0 (Detect: cannot open … Permission denied). One udev rule fixes it for every USB-TMC instrument, now and later. Run in a terminal:

Terminal
echo 'SUBSYSTEM=="usbmisc", KERNEL=="usbtmc[0-9]*", MODE="0660", TAG+="uaccess"' | sudo tee /etc/udev/rules.d/70-benchmesh-usbtmc.rules && sudo udevadm control --reload-rules && sudo udevadm trigger --subsystem-match=usbmisc --action=add

The rule gives USB-TMC instruments to the user logged in at the computer (systemd’s uaccess): no group, no new login. BenchMesh retries by itself and the instrument comes online within a few seconds. Still refused? Unplug it and plug it in again.

To check, the device node now lists your user:

Terminal
ls -l /dev/usbtmc*
getfacl /dev/usbtmc0      # shows user:<you>:rw- when the rule works

A computer without a desktop login

uaccess applies to the person logged in at the screen. On a bench computer used over SSH, or running benchmesh-server as a service, give the instruments to a group instead, then log in again:

Terminal
echo 'SUBSYSTEM=="usbmisc", KERNEL=="usbtmc[0-9]*", MODE="0660", GROUP="plugdev"' | sudo tee /etc/udev/rules.d/70-benchmesh-usbtmc.rules && sudo udevadm control --reload-rules && sudo udevadm trigger --subsystem-match=usbmisc --action=add && sudo usermod -aG plugdev "$USER"

To remove the rule: sudo rm /etc/udev/rules.d/70-benchmesh-usbtmc.rules && sudo udevadm control --reload-rules.

Serial ports: “no permission to use /dev/ttyUSB0”

USB-serial instruments (most multimeters, many supplies and loads: CH340, CP210x, FTDI, CDC-ACM) appear as /dev/ttyUSB0 or /dev/ttyACM0, which belong to the dialout group. Add your user to it:

Terminal
sudo usermod -aG dialout "$USER"

Then log out and log in again - group membership is read at login. On Arch Linux the group is uucp (sudo usermod -aG uucp "$USER"). To check:

Terminal
groups                    # dialout must be listed
ls -l /dev/ttyUSB* /dev/ttyACM*

Troubleshooting

  • The AppImage does not start (“dlopen(): error loading libfuse.so.2”) - install FUSE 2: sudo apt install libfuse2 on Ubuntu 22.04, sudo apt install libfuse2t64 on Ubuntu 24.04 and later.
  • No /dev/usbtmc0 at all - check that Linux sees the instrument (lsusb) and that the driver is loaded: sudo modprobe usbtmc. Some instruments must be switched to USB-TMC (“USB device: computer”) in their own I/O menu.
  • A CH340 serial port appears and disappears at once - on Ubuntu the braille-display service brltty claims it. If you do not use a braille display: sudo apt remove brltty.
  • Port busy - another program (a vendor tool, a terminal such as screen or minicom, a second BenchMesh) holds the port. Close it; BenchMesh reconnects.
  • A generic icon in the dock - start BenchMesh 0.1.13 or later once from the AppImage: it writes ~/.local/share/applications/benchmesh.desktop. To remove BenchMesh from the menu, delete that file and ~/.local/share/icons/hicolor/256x256/apps/benchmesh.png.
  • Detached panels do not stay on top on Wayland - Wayland does not let applications do that, so the app runs through XWayland. BENCHMESH_NATIVE_WAYLAND=1 runs it on native Wayland without keep-on-top.

Instruments are recognised by their USB identity wherever they are plugged in - no per-port rules or symlinks. Something else? Ask the community.