Skip to content

v0.3.0 — Linux serial port permissions

Latest

Choose a tag to compare

@dotKa dotKa released this 10 Aug 15:22

Linux serial port permissions

On Linux a USB-DMX interface shows up as /dev/ttyUSB* or /dev/ttyACM*, but the
device node is owned by a group (usually dialout). A user outside that group can
see the device and still not open it — the open fails with EACCES.

Until now ArtNet2USB reported that as "device not connected", which sent people
looking for a cable fault instead of the one-command fix. That is fixed.

What changed

Real permission checks. Devices are no longer assumed usable just because they
were listed. Each port is checked without opening it, so live DMX output is never
disturbed. The CLI and the desktop app share a single implementation.

The real error survives. A failed start now reports the actual cause:

ERROR: Serial port permission denied
    Device detected at /dev/ttyUSB0 but permission was denied.
    EACCES: permission denied, open '/dev/ttyUSB0'

    Your user is not in the "dialout" group, which owns the serial device.
    Run:
      sudo usermod -aG dialout <user>

    Then log out and log back in (or reboot) for the group to take effect.
    Do not run ArtNet2USB itself with sudo.

doctor is now a preflight check.

artnet2usb-cli doctor

Checks whether a USB serial device is present, whether its node still exists,
whether you can read and write it, whether you are in the owning group, whether
another process is holding the port, and whether saved routes still match a
connected device. Legacy /dev/ttyS* ports are ignored.

fix-permissions added.

artnet2usb-cli fix-permissions

Linux only — does nothing on macOS or Windows. Adds your user to the serial
device group, asking first. Only the usermod call is elevated; ArtNet2USB is
never meant to run as root, and the command never suggests running the CLI under
sudo.

Desktop app. When a device is visible but not accessible, a
Serial Port Permission Required notice appears with a Fix Permission
button. It elevates only the group change (via pkexec) — the app keeps running
as your normal user — and then tells you to log out and back in. Available in all
five UI languages.

Also fixed

--version was hardcoded in the source and had drifted from the package version
(0.3.0 builds reported 0.2.0). It is now read from the package version.

doctor used to scan every serial port. Since /dev/ttyS0..3 exist on nearly
every PC and are root-owned, that produced false errors and even suggested
joining the root group. It now looks at USB interfaces only.

Downloads

Desktop app — single file, nothing to install:

Platform File
Linux x86_64 Relackout-ArtNet2USB-0.3.0-x86_64.AppImage
Linux arm64 Relackout-ArtNet2USB-0.3.0-arm64.AppImage
macOS Apple Silicon Relackout-ArtNet2USB-0.3.0-arm64.dmg
macOS Intel Relackout-ArtNet2USB-0.3.0-x64.dmg

CLI — standalone binary, no Node.js required:

Platform File
Linux x64 artnet2usb-cli-0.3.0-linux-x64
Linux arm64 artnet2usb-cli-0.3.0-linux-arm64
macOS Apple Silicon artnet2usb-cli-0.3.0-macos-arm64
macOS Intel artnet2usb-cli-0.3.0-macos-x64

Windows builds are not part of this release.

On Linux, make the AppImage or CLI binary executable after downloading:
chmod +x <file>