AppImage or .deb
| Download | For | Updates |
|---|---|---|
BenchMesh_<version>_amd64.AppImage | Any distribution with glibc 2.35 or newer (Ubuntu 22.04, Debian 12, Fedora 36 and later) | Installs updates itself |
BenchMesh_<version>_amd64.deb | Debian, Ubuntu and derivatives | The app offers the new version; install the new .deb |
Install
The AppImage needs the executable bit, then it runs from wherever it is:
chmod +x ~/Downloads/BenchMesh_*.AppImage
~/Downloads/BenchMesh_*.AppImageAt 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:
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=addThe 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:
ls -l /dev/usbtmc*
getfacl /dev/usbtmc0 # shows user:<you>:rw- when the rule worksA 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:
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:
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:
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 libfuse2on Ubuntu 22.04,sudo apt install libfuse2t64on 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
brlttyclaims it. If you do not use a braille display:sudo apt remove brltty. - Port busy - another program (a vendor tool, a terminal such as
screenorminicom, 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=1runs 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.