Controllers Linux Setup - drizztdourden08/relic-of-the-past GitHub Wiki
Linux controller setup (udev rules)
SDL3 is the only input layer this app uses, on every platform, including Linux. On
Linux, its raw-HID backend needs permission to the hidraw and usb device nodes to
talk to a controller directly. Without that permission, a controller from one of the
vendors below may fall back to SDL3's standard gamepad mode (buttons and axes only) or
may not be usable at all, as the per-controller notes in
support-matrix.md describe. Xbox pads are the one exception:
they work through SDL3's standard mode without needing these rules at all.
.deb (automatic)
The .deb package installs the rules for you (post-install) and reloads udev. Just
replug the controller after installing. Nothing else to do.
AppImage / manual install
The AppImage can't run an installer step, so install the rules once by hand:
sudo cp 99-relic-controllers.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
The rules file ships in the repo at scripts/build/linux/99-relic-controllers.rules
(or copy it from the app resources). Then unplug/replug the controller (Bluetooth:
re-pair) so the new permissions apply.
What the rules grant
TAG+="uaccess" gives the logged-in desktop user read/write access (via
systemd-logind) to controllers from these vendors, over both hidraw and usb:
| Vendor | VID | Examples |
|---|---|---|
| Nintendo | 057e |
Switch Pro, Pro Controller 2, NSO GameCube, Joy-Con |
| Sony | 054c |
DualShock 4, DualSense |
| Microsoft | 045e |
Xbox (usually XInput; included for completeness) |
| 8BitDo | 2dc8 |
8BitDo pads |
If your controller has a different vendor ID, add a matching pair of lines and
reload (udevadm control --reload-rules && udevadm trigger).
Xbox controllers work without the rules through SDL3's standard gamepad mode; the rules
matter for the vendors SDL3 reads over raw hidraw/usb instead (Nintendo, Sony, 8BitDo).