Skip to content

Linux Setup

Install Playback and configure your Operator device on Linux distributions.

6 min read


Playback runs on most modern Linux distributions. You’ll need to set up permissions to allow non-root access to your Operator device.

Quick setup

Run this command in your terminal to automatically configure your system:

curl -fsSL https://www.epilogue.co/linux-setup.sh | bash

The script will detect your distribution, add your user to the correct group, and create the necessary udev rules. After running the script, reboot your system, then reconnect your Operator.

If you prefer to set things up manually, follow the instructions below.


Manual setup

System requirements

See the Downloads page for current system requirements.

Installation

  1. Download the Linux AppImage from our downloads page
  2. Make the AppImage executable:
chmod +x Playback.AppImage
  1. Run the AppImage:
./Playback.AppImage

Setting up device permissions

To use your Operator without root access, you’ll need to create udev rules and add your user to the appropriate group for your distribution.

Debian, Ubuntu, Linux Mint, Pop!_OS, and derivatives

These instructions apply to Debian-based distributions including Ubuntu, Linux Mint, Pop!_OS, elementary OS, Zorin OS, and KDE neon.

Add your user to the required groups:

sudo usermod -a -G dialout,plugdev $USER

Create the udev rules file:

sudo nano /etc/udev/rules.d/99-epilogue.rules

Add the following content:

# GB Operator
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123b", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123c", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123d", MODE="0666"

# SN Operator
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="1416", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="1417", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123e", MODE="0666"

Reload the udev rules:

sudo udevadm control --reload-rules && sudo udevadm trigger

Reboot your system for the group changes to take effect, then reconnect your Operator.

Fedora, CentOS, RHEL, and derivatives

These instructions apply to Fedora Workstation, CentOS, RHEL, AlmaLinux, and Rocky Linux.

Add your user to the dialout group:

sudo usermod -a -G dialout $USER

Create the udev rules file:

sudo nano /etc/udev/rules.d/99-epilogue.rules

Add the following content:

# GB Operator
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123b", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123c", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123d", MODE="0666"

# SN Operator
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="1416", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="1417", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123e", MODE="0666"

Reload the udev rules:

sudo udevadm control --reload-rules && sudo udevadm trigger

Reboot your system for the group changes to take effect, then reconnect your Operator.

Fedora Silverblue, Kinoite, Bazzite, and other immutable distributions

On immutable Fedora variants (including Bazzite), the dialout group exists in /usr/lib/group but not in /etc/group, so you need to add it first:

grep "^dialout:" /usr/lib/group | sudo tee -a /etc/group

Then add your user to the group:

sudo usermod -a -G dialout $USER

Create the udev rules file and reload as described in the Fedora section above.

Arch Linux, Manjaro, EndeavourOS, and derivatives

These instructions apply to Arch-based distributions including Manjaro, EndeavourOS, and Garuda Linux.

Add your user to the uucp group:

sudo usermod -a -G uucp $USER

Create the udev rules file:

sudo nano /etc/udev/rules.d/99-epilogue.rules

Add the following content:

# GB Operator
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123b", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123c", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123d", MODE="0666"

# SN Operator
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="1416", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="1417", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123e", MODE="0666"

Reload the udev rules:

sudo udevadm control --reload-rules && sudo udevadm trigger

Reboot your system for the group changes to take effect, then reconnect your Operator.

openSUSE

Add your user to the dialout group:

sudo usermod -a -G dialout $USER

Alternatively, you can use YaST to add the dialout group to your user account.

Create the udev rules file:

sudo nano /etc/udev/rules.d/99-epilogue.rules

Add the following content:

# GB Operator
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123b", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123c", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123d", MODE="0666"

# SN Operator
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="1416", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="1417", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123e", MODE="0666"

Reload the udev rules:

sudo udevadm control --reload-rules && sudo udevadm trigger

Reboot your system for the group changes to take effect, then reconnect your Operator.

Gentoo and Void Linux

Add your user to the uucp group:

sudo usermod -a -G uucp $USER

Create the udev rules file:

sudo nano /etc/udev/rules.d/99-epilogue.rules

Add the following content:

# GB Operator
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123b", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123c", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123d", MODE="0666"
SUBSYSTEM=="tty", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="123b", MODE="0666"
SUBSYSTEM=="tty", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="123c", MODE="0666"
SUBSYSTEM=="tty", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="123d", MODE="0666"

# SN Operator
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="1416", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="1417", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123e", MODE="0666"
SUBSYSTEM=="tty", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="1416", MODE="0666"
SUBSYSTEM=="tty", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="1417", MODE="0666"
SUBSYSTEM=="tty", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="123e", MODE="0666"

Note: Gentoo includes both SUBSYSTEM=="usb" and SUBSYSTEM=="tty" rules. Some Gentoo configurations (particularly with systemd) may require the tty rules for proper device permissions. The ATTRS syntax (with ‘s’) is used for tty rules to match attributes from the parent USB device.

Reload the udev rules:

sudo udevadm control --reload-rules && sudo udevadm trigger

Reboot your system for the group changes to take effect, then reconnect your Operator.

NixOS

In your /etc/nixos/configuration.nix, add your user to the required groups and configure the udev rules:

users.users.YOUR_USERNAME = {
  extraGroups = [ "dialout" "plugdev" ];
};

services.udev.extraRules = ''
  # GB Operator
  SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123b", MODE="0666"
  SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123c", MODE="0666"
  SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123d", MODE="0666"
  SUBSYSTEM=="tty", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="123b", MODE="0666"
  SUBSYSTEM=="tty", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="123c", MODE="0666"
  SUBSYSTEM=="tty", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="123d", MODE="0666"
  # SN Operator
  SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="1416", MODE="0666"
  SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="1417", MODE="0666"
  SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="123e", MODE="0666"
  SUBSYSTEM=="tty", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="1416", MODE="0666"
  SUBSYSTEM=="tty", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="1417", MODE="0666"
  SUBSYSTEM=="tty", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="123e", MODE="0666"
'';

Rebuild your system:

sudo nixos-rebuild switch

Reboot your system, then reconnect your Operator.

Steam Deck (SteamOS)

For Steam Deck setup, see our dedicated Steam Deck Setup guide.

You can also run our setup script directly on the Steam Deck. In Desktop Mode, open Konsole and run:

curl -fsSL https://www.epilogue.co/linux-setup.sh | bash

The script will automatically detect SteamOS, configure the udev rules, add you to the correct group, and set up persistence through SteamOS updates.

Other distributions

If your distribution isn’t listed above, you can determine the correct group by checking device ownership when the Operator is connected:

ls -l /dev/ttyACM0

This will show something like crw-rw---- 1 root dialout .... The group name (e.g., dialout or uucp) is what you need to add your user to:

sudo usermod -a -G GROUP_NAME $USER

Then create the udev rules as described above for your distribution.

Troubleshooting

Operator not detected?

  • Make sure you’ve completed the udev rules setup above
  • Verify you’ve logged out and back in after adding groups
  • Check that the device appears with lsusb
  • Try unplugging and reconnecting the Operator after reloading udev rules

Permission denied errors?

  • Don’t run Playback with sudo. This can cause audio issues with PulseAudio/PipeWire
  • Follow the udev rules setup to grant permissions to your regular user
  • Verify your group membership with groups $USER

AppImage won’t run?

  • Make sure you’ve made it executable with chmod +x
  • Install FUSE if needed:
    • Ubuntu 22.04 and earlier: sudo apt install libfuse2
    • Ubuntu 24.04 and later: sudo apt install libfuse2t64
    • Fedora: sudo dnf install fuse
    • Arch-based: sudo pacman -S fuse2
    • openSUSE: sudo zypper install libfuse2

Still need help? Contact our support team