From 2cd4b1b3adae8f52589239765f9f3b465f7802f5 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Tue, 25 Mar 2025 08:26:32 -0400 Subject: [PATCH] fix(linux): update sunshine rules (#3748) Co-authored-by: ABeltramo --- docs/troubleshooting.md | 10 ++++++++++ .../linux/flatpak/scripts/remove-additional-install.sh | 2 +- src/platform/linux/input/inputtino_gamepad.cpp | 2 +- src_assets/linux/misc/60-sunshine.rules | 9 +++++++++ 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 1ba8d6e0..8bd22eed 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -118,6 +118,16 @@ system. You may also want to enable decoders, however that is not required for S ``` } +### Input not working +After installation, the `udev` rules need to be reloaded. Our post-install script tries to do this for you +automatically, but if it fails you may need to restart your system. + +If the input is still not working, you may need to add your user to the `input` group. + +```bash +sudo usermod -aG input $USER +``` + @note{Other build options are listed in the [meson options](https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/meson_options.txt) file.} diff --git a/packaging/linux/flatpak/scripts/remove-additional-install.sh b/packaging/linux/flatpak/scripts/remove-additional-install.sh index 0d13baeb..27d7af03 100644 --- a/packaging/linux/flatpak/scripts/remove-additional-install.sh +++ b/packaging/linux/flatpak/scripts/remove-additional-install.sh @@ -8,4 +8,4 @@ echo Sunshine User Service has been removed. # Udev rule flatpak-spawn --host pkexec sh -c "rm /etc/udev/rules.d/60-sunshine.rules" -echo Mouse permission removed. Restart computer to take effect. +echo Input rules removed. Restart computer to take effect. diff --git a/src/platform/linux/input/inputtino_gamepad.cpp b/src/platform/linux/input/inputtino_gamepad.cpp index b5ef01dd..16ecc56f 100644 --- a/src/platform/linux/input/inputtino_gamepad.cpp +++ b/src/platform/linux/input/inputtino_gamepad.cpp @@ -43,7 +43,7 @@ namespace platf::gamepad { } auto create_ds5() { - return inputtino::PS5Joypad::create({.name = "Sunshine DualSense (virtual) pad", .vendor_id = 0x054C, .product_id = 0x0CE6, .version = 0x8111}); + return inputtino::PS5Joypad::create({.name = "Sunshine PS5 (virtual) pad", .vendor_id = 0x054C, .product_id = 0x0CE6, .version = 0x8111}); } int alloc(input_raw_t *raw, const gamepad_id_t &id, const gamepad_arrival_t &metadata, feedback_queue_t feedback_queue) { diff --git a/src_assets/linux/misc/60-sunshine.rules b/src_assets/linux/misc/60-sunshine.rules index 5d4445c7..52e53345 100644 --- a/src_assets/linux/misc/60-sunshine.rules +++ b/src_assets/linux/misc/60-sunshine.rules @@ -1,2 +1,11 @@ +# Allows Sunshine to acces /dev/uinput KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess" + +# Allows Sunshine to access /dev/uhid KERNEL=="uhid", TAG+="uaccess" + +# Joypads +KERNEL=="hidraw*" ATTRS{name}=="Sunshine PS5 (virtual) pad" MODE="0660", TAG+="uaccess" +SUBSYSTEMS=="input", ATTRS{name}=="Sunshine X-Box One (virtual) pad", MODE="0660", TAG+="uaccess" +SUBSYSTEMS=="input", ATTRS{name}=="Sunshine gamepad (virtual) motion sensors", MODE="0660", TAG+="uaccess" +SUBSYSTEMS=="input", ATTRS{name}=="Sunshine Nintendo (virtual) pad", MODE="0660", TAG+="uaccess"