Skip to content

v0.6.0.7 — Steam Controller 2: right touchpad, gyro orientation, d-pad OSD; DualSense gyro fix

Latest

Choose a tag to compare

@Patola Patola released this 10 Aug 07:35
· 16 commits to main since this release

Bug-fix release on top of v0.6.0.6, focused on the Steam Controller 2: the right touchpad now behaves like a touchpad, the gyro's orientation data actually streams, and the d-pad navigates the OSD. Also fixes a DualSense gyro regression introduced in v0.6.0.6.

Note on the project: development now happens directly on this fork's main branch. The pull request against upstream sc-controller was closed, so main has been brought up to date with a month of work that lived on a side branch. Nothing was dropped in the process.

Changes

Steam Controller 2

  • The right touchpad is treated as a touchpad again (#6, #9). Trackball mode, per-pad sensitivity and pad haptic feedback were all silently disabled on the right pad — adjusting any of those settings did nothing at all. The controller flag meaning "has a right stick instead of a touchpad" was set on a controller that has both, so four separate places skipped the pad handling entirely. Trackball rolls, friction and sensitivity respond, and pad feedback fires. (This also repaired the same three behaviours on the Steam Deck's right pad, which was affected in three of those four places.)
  • Gyro orientation data now streams (#3). The configuration block sent at connect enabled the raw rates and the accelerometer but not the controller's fused orientation quaternion, and nothing ever wrote that register afterwards. Anything reading rotation rather than rate therefore did nothing: absolute (tilt) gyro, lean-to-turn gyro→mouse, and every Tilt binding. Rate-driven bindings worked, which is what made this so confusing to pin down. It appeared to work for some people only because Steam had already switched the quaternion on and the controller kept that state.
  • The d-pad navigates OSD menus (#8). Menus accepted d-pad input only in the form the DualShock 4 sends it (a hatswitch reported as the left pad). The SC2 and the Deck have a real separate d-pad and were ignored. Radial menus never accepted d-pad input on any controller; they do now.

DualSense / PS5

  • Fixes a gyro regression from v0.6.0.6: in absolute mode yaw and roll read inverted, and in relative mode the axes bled into one another — a yaw binding drifted diagonally, pitch moved sideways. Orientation was derived by decomposing a quaternion into euler angles, which is a sequential decomposition: once one axis was off-neutral, rotating about another moved all three outputs (pitching 20° then yawing 40° leaked 13° into roll). Each axis is now integrated independently, as the DualShock 4 already did. Gimbal lock near ±90° of pitch goes away with it.

Project

  • Links now point at this fork. The About dialog was fetching release notes from upstream's tag page, which does not have our releases (Failed to read release notes at …/C0rn3j/sc-controller/…); that, the bug-report link, the source-code link, the AppImage metadata and the README badges/clone URLs now all reference this repository. Links that credit the original authors, and wiki links (this fork's wiki is not populated yet), deliberately still point upstream.

Gyro (all controllers)

  • "Mouse (Emulate Stick)" now emulates a stick. All three mouse modes in the "Joystick or Mouse" tab behaved identically — none gave cursor velocity proportional to how far you tilt. Emulate Stick now does, which is what its name always implied. Existing profiles are not modified and keep their current behaviour.

Still open

  • Haptics on the SC2 are weak (#7). Feedback now fires and responds to its settings, but the driver can only emit a single click per event; continuous variable rumble ("HD rumble") is not implemented yet.
  • The DualSense's raw gyro scale constant is still unverified, and its orientation has no accelerometer fusion, so pitch and roll drift slowly during sustained motion.

Which AppImage do I download?

  • …-x86_64.AppImage → a normal PC (Intel/AMD desktop or laptop, and the Steam Deck). If you're not sure, this is the one you want.
  • …-aarch64.AppImage → ARM devices only (Raspberry Pi, ARM boards, etc.). It will not run on a normal PC.

There's a single build, made on Ubuntu 22.04 (jammy); it runs on Ubuntu 22.04+, Debian 12+, Arch, Fedora and anything newer.

⚠️ AppImage users: install the udev rules first

The AppImage cannot install the udev rules it needs, so a detected controller will appear to do nothing (no device access, and the virtual gamepad at /dev/uinput can't be created) until you install them. This is needed only for the AppImage — the Arch and other distro packages already include these rules.

Steam Deck (SteamOS): you can skip all of this — SteamOS already ships udev rules for Steam devices, so the AppImage works out of the box.

Download the attached 69-sc-controller.rules, then:

sudo cp 69-sc-controller.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm trigger

(Log out and back in — or replug the controller — afterwards.)