Skip to content

v0.6.0.5 — gyro bug-fix round: recenter-on-engage, Steam Controller v1 gyro parity, grip enablers

Choose a tag to compare

@Patola Patola released this 26 Jul 22:22
· 72 commits to main since this release

Bug-fix release on top of v0.6.0.4, closing every gyroscope bug reported against it — including three found by a user (thank you for the reports!) — and completing the Steam Controller v1 gyro overhaul: all supported controllers now share one hardware-verified gyro code path.

Changes

Gyroscope (all controllers)

  • Absolute (tilt) gyro re-centers at every activation. The neutral pose is captured the moment you press the gyro-enable button — rotating while disengaged no longer carries a stale offset into the next engage, and cycling the enable button no longer "moves the origin". Deterministic and Steam-like; found on the v1 but fixed for every controller (the bug lived in the shared layer).
  • The "Recenter Gyro" special action actually recenters. Lean-to-turn (relative gyro → mouse) now has a real neutral reference — captured at gyro activation and re-captured by Recenter Gyro. (On the laser-pointer mouse, recenter doing nothing is intended: a rate-driven cursor has no center.)
  • "Mouse (Desktop)" pitch is no longer inverted ("Joystick or Mouse" tab) — it now uses the same hardware-calibrated sign table as everything else.

Steam Controller v1

  • Full gyro parity. The v1's hardware quaternion (measured from held-pose captures: identical axis convention to the SC2's) is now converted in the driver to the same euler representation the DS4/SC2 use — fixing relative-mouse (pitch inverted, roll/yaw drifting left) and putting the v1 on the single shared gyro path: absolute, relative, tilt, lean-to-turn and laser mouse all verified on real hardware, including dual-controller multi-controller operation.

Steam Controller 2 (and Steam Deck)

  • Gyro can be enabled by the capacitive grips: new "Left/Right Grip Touched" entries in the gyro-enable lists — the natural "aim while gripping" gesture. The lower rear paddles (L5/R5) are also selectable now.
  • The rear paddles are named L4/L5/R4/R5 (their physical labels) in the gyro, chord/modeshift and binding editors — while the v1 keeps its classic "Left/Right Grip" naming, and controllers don't show buttons they don't have anymore (no phantom "Grip Touched" on a v1).

Other fixes

  • A DualShock 4 connected over Bluetooth is named "DualShock 4" in the controller list (was: generic "Controller").
  • The daemon no longer crashes when an input device node vanishes mid-detection (e.g. a Bluetooth pad reconnecting) — a hotplug race, now skipped quietly.
  • Merged upstream: the Wayland OSD-keyboard crash fix (equivalent to ours), CI updates.

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.)