protonscr

Steam Input: "Gyro to Mouse" and "As Mouse" stopped working with a PS5 DualSense controller as of Dec 12, both Stable and Beta

steamclosed General controller / Steam InputFlathub-provided steam package
ValveSoftware/steam-for-linux#10295 · opened 2023-12-13 by garrett · updated 2023-12-18 · 4 comments · github
Ggarrett 2023-12-13 github

Your system information

  • Steam client version (build number or date): steam-runtime_0.20231024.64411
  • Distribution (e.g. Ubuntu): Flatpak; Freedesktop SDK 23.08 (Flatpak runtime) (64 bit)
  • Opted into Steam client beta?: No (although I've tried the beta too)
  • Have you checked for system updates?: Yes
  • Steam Logs: steam-logs.tar.gz
  • GPU: AMD AMD Radeon Graphics (radeonsi, raphael_mendocino, LLVM 17.0.6, DRM 3.54, 6.6.3-200.fc39.x86_64), on Wayland

Please describe your issue in as much detail as possible:

I had been using Gyro to Mouse ever since it's been available. Prior to that, I've been using As Mouse. They both stopped working suddenly, as of the latest update.

Gyro to Joystick still works, and I see the gyro active in the gyro calibration under settings, so this is some kind of Steam Input mapping between gyro and mouse no longer working.

Steps for reproducing this issue:

  1. Run a game (preferably an FPS "shooter" or some other first person game) with Steam Input, with a PS5 controller. (Other gyro enabled controllers may also be affected, but I've only tried a PS5 DualSense thus far.)
  2. Select "Gyro to Mouse"
  3. Try to move the controller to move the camera. It no longer works.

Other information

I saw two points in the release notes related to Linux, Steam Input, and PS controllers; it's possible there was an unintended bug introduced due to one of these:

Steam Input

  • Fixed an issue on Linux that could cause gamepad input to stop in games after a controller disconnect or during suspend on Deck.
  • The new default PlayStation Controller behavior where Steam Input was enabled in games without PS controller support store tags will now only be active on games that have filled out the survey to say they do not have PS Controller support. This will be revisited when there is better coverage for the PS controller data.

I've tried changing all sorts of settings in the Controller section of the Steam Settings window; nothing seemed to work.

Ggarrett 2023-12-14 github

I just tried a Nintendo Switch Pro controller, and it has the same effect with gyro, where "Gyro to Joystick" works, but "Gyro to Mouse" and "As Mouse" does not.

Ggarrett 2023-12-15 github

Update: I was having problems in Wayland (GNOME specifically), where it previously worked prior to the update. I tried out Xorg, and Gyro to Mouse works there — still with the Steam Flatpak from Flathub.

However, as everything is moving to Wayland and dropping X, this could only be considered a temporary workaround.

But this means something recently changed in the way Steam Input converts gyro to mouse inputs which is affecting Wayland.

Ggarrett 2023-12-17 github

Summary:

  1. Not Steam
  2. Not Flatpak
  3. Not portals (directly)
  4. Likely related libei, an virtualization input library... else kernel or Xwayland changes.

But it's working now! Thanks for your time.


Debugging details:

I noticed that something in the testing branch of Fedora Silverblue makes things work as expected again. After running the command to rebase (much like switching branches in git, but at the operating system level), I see that there are several packages which have been updated between versions. I've switched branches between release and testing a couple times to make sure it is indeed something broken in Fedora 39 release versus something that's staged to be an update (in testing).

The most likely culprits would be:

  • kernel 6.6.6-200.fc39 -> 6.6.7-200.fc39
  • libei 1.2.0-1.fc39 -> 1.2.0-2.fc39
  • xorg-x11-server-Xwayland 23.2.2-1.fc39 -> 23.2.3-1.fc39

Of the above shorter list, "libei" is for handling virtual input devices in Wayland. The update states "Handle OEFFIS_DEVICE_ALL_DEVICES correctly". It looks like it wasn't passing all devices in to Wayland input devices (I think, but I could be wrong) and there's a patch in the new version that adjusts it. My guess is that this is the culprit.

As for the others; kernel changes can affect things, and the Xwayland changes might also affect things too.

FWIW: I had previously thought it might be xdg-desktop-portal and xdg-desktop-portal-gnome due to conincidental timing, but those are no longer in the list between stable (which doesn't work here) and testing (which does).

garrett@heatwave ~> sudo rpm-ostree rebase fedora:fedora/39/x86_64/testing/silverblue
[sudo] password for garrett: 
2 metadata, 0 content objects fetched; 788 B transferred in 1 seconds; 0 bytes content written
Checking out tree 2667e28... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates fedora rpmfusion-nonfree-steam updates-archive
Importing rpm-md... done
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2023-03-14T10:57:01Z solvables: 4
rpm-md repo 'updates' (cached); generated: 2023-12-17T01:27:24Z solvables: 16193
rpm-md repo 'fedora' (cached); generated: 2023-11-01T00:12:39Z solvables: 70825
rpm-md repo 'rpmfusion-nonfree-steam' (cached); generated: 2023-08-10T16:27:35Z solvables: 2
rpm-md repo 'updates-archive' (cached); generated: 2023-12-17T01:47:39Z solvables: 17267
Resolving dependencies... done
Relabeling... done
Applying 2 overrides and 317 overlays
Processing packages... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Freed: 8.9 MB (pkgcache branches: 0)
Upgraded:
  bluez 5.70-5.fc39 -> 5.71-1.fc39
  bluez-cups 5.70-5.fc39 -> 5.71-1.fc39
  bluez-libs 5.70-5.fc39 -> 5.71-1.fc39
  bluez-obexd 5.70-5.fc39 -> 5.71-1.fc39
  cldr-emoji-annotation 1:44-1.fc39 -> 1:44.1-1.fc39
  cldr-emoji-annotation-dtd 1:44-1.fc39 -> 1:44.1-1.fc39
  cups 1:2.4.7-4.fc39 -> 1:2.4.7-5.fc39
  cups-client 1:2.4.7-4.fc39 -> 1:2.4.7-5.fc39
  cups-filesystem 1:2.4.7-4.fc39 -> 1:2.4.7-5.fc39
  cups-ipptool 1:2.4.7-4.fc39 -> 1:2.4.7-5.fc39
  cups-libs 1:2.4.7-4.fc39 -> 1:2.4.7-5.fc39
  dbus-broker 33-2.fc39 -> 34-1.fc39
  ibus 1.5.29~rc2-4.fc39 -> 1.5.29~rc2-5.fc39
  ibus-gtk3 1.5.29~rc2-4.fc39 -> 1.5.29~rc2-5.fc39
  ibus-gtk4 1.5.29~rc2-4.fc39 -> 1.5.29~rc2-5.fc39
  ibus-libpinyin 1.15.5-1.fc39 -> 1.15.6-1.fc39
  ibus-libs 1.5.29~rc2-4.fc39 -> 1.5.29~rc2-5.fc39
  ibus-setup 1.5.29~rc2-4.fc39 -> 1.5.29~rc2-5.fc39
  kernel 6.6.6-200.fc39 -> 6.6.7-200.fc39
  kernel-core 6.6.6-200.fc39 -> 6.6.7-200.fc39
  kernel-modules 6.6.6-200.fc39 -> 6.6.7-200.fc39
  kernel-modules-core 6.6.6-200.fc39 -> 6.6.7-200.fc39
  kernel-modules-extra 6.6.6-200.fc39 -> 6.6.7-200.fc39
  libcap 2.48-8.fc39 -> 2.48-9.fc39
  libei 1.2.0-1.fc39 -> 1.2.0-2.fc39
  libeis 1.2.0-1.fc39 -> 1.2.0-2.fc39
  libhandy 1.8.2-2.fc39 -> 1.8.2-5.fc39
  libnl3 3.8.0-2.fc39 -> 3.9.0-1.fc39
  liboeffis 1.2.0-1.fc39 -> 1.2.0-2.fc39
  librsvg2 2.57.0-1.fc39 -> 2.57.1-1.fc39
  opensc 0.23.0-5.fc39 -> 0.24.0-1.fc39
  osinfo-db 20231027-1.fc39 -> 20231215-1.fc39
  passt 0^20231119.g4f1709d-1.fc39 -> 0^20231204.gb86afe3-1.fc39
  passt-selinux 0^20231119.g4f1709d-1.fc39 -> 0^20231204.gb86afe3-1.fc39
  podman 5:4.8.1-1.fc39 -> 5:4.8.2-1.fc39
  python-unversioned-command 3.12.0-1.fc39 -> 3.12.1-1.fc39
  python3 3.12.0-1.fc39 -> 3.12.1-1.fc39
  python3-libs 3.12.0-1.fc39 -> 3.12.1-1.fc39
  python3-rpm 4.19.0-1.fc39 -> 4.19.1-1.fc39
  qadwaitadecorations-qt5 0.1.3-2.fc39 -> 0.1.3-4.fc39
  qemu-guest-agent 2:8.1.1-1.fc39 -> 2:8.1.3-1.fc39
  qemu-user-static 2:8.1.1-1.fc39 -> 2:8.1.3-1.fc39
  qemu-user-static-aarch64 2:8.1.1-1.fc39 -> 2:8.1.3-1.fc39
  qemu-user-static-alpha 2:8.1.1-1.fc39 -> 2:8.1.3-1.fc39
  qemu-user-static-arm 2:8.1.1-1.fc39 -> 2:8.1.3-1.fc39
  qemu-user-static-cris 2:8.1.1-1.fc39 -> 2:8.1.3-1.fc39
  qemu-user-static-hexagon 2:8.1.1-1.fc39 -> 2:8.1.3-1.fc39
  qemu-user-static-hppa 2:8.1.1-1.fc39 -> 2:8.1.3-1.fc39
  qemu-user-static-loongarch64 2:8.1.1-1.fc39 -> 2:8.1.3-1.fc39
  qemu-user-static-m68k 2:8.1.1-1.fc39 -> 2:8.1.3-1.fc39
  qemu-user-static-microblaze 2:8.1.1-1.fc39 -> 2:8.1.3-1.fc39
  qemu-user-static-mips 2:8.1.1-1.fc39 -> 2:8.1.3-1.fc39
  qemu-user-static-nios2 2:8.1.1-1.fc39 -> 2:8.1.3-1.fc39
  qemu-user-static-or1k 2:8.1.1-1.fc39 -> 2:8.1.3-1.fc39
  qemu-user-static-ppc 2:8.1.1-1.fc39 -> 2:8.1.3-1.fc39
  qemu-user-static-riscv 2:8.1.1-1.fc39 -> 2:8.1.3-1.fc39
  qemu-user-static-s390x 2:8.1.1-1.fc39 -> 2:8.1.3-1.fc39
  qemu-user-static-sh4 2:8.1.1-1.fc39 -> 2:8.1.3-1.fc39
  qemu-user-static-sparc 2:8.1.1-1.fc39 -> 2:8.1.3-1.fc39
  qemu-user-static-x86 2:8.1.1-1.fc39 -> 2:8.1.3-1.fc39
  qemu-user-static-xtensa 2:8.1.1-1.fc39 -> 2:8.1.3-1.fc39
  rpm 4.19.0-1.fc39 -> 4.19.1-1.fc39
  rpm-build-libs 4.19.0-1.fc39 -> 4.19.1-1.fc39
  rpm-libs 4.19.0-1.fc39 -> 4.19.1-1.fc39
  rpm-plugin-selinux 4.19.0-1.fc39 -> 4.19.1-1.fc39
  rpm-sign-libs 4.19.0-1.fc39 -> 4.19.1-1.fc39
  rsvg-pixbuf-loader 2.57.0-1.fc39 -> 2.57.1-1.fc39
  selinux-policy 39.2-1.fc39 -> 39.3-1.fc39
  selinux-policy-targeted 39.2-1.fc39 -> 39.3-1.fc39
  toolbox 0.0.99.4-5.fc39 -> 0.0.99.4-8.fc39
  xorg-x11-server-Xwayland 23.2.2-1.fc39 -> 23.2.3-1.fc39
Changes queued for next boot. Run "systemctl reboot" to start a reboot
Ggarrett 2023-12-18 github

Another update: Confirmed that libei was the culprit.

I rebased to the stable branch of Fedora Linux 39 Silverblue, then ran rpm-ostree override replace https://bodhi.fedoraproject.org/updates/FEDORA-2023-793e0e06ae (to layer the pending change on top of stable) and rebooted. With the updated libei, gyro to mouse with Steam Input in Steam from Flatpak on Wayland works again.

Nothing extracted yet.