Skip to content

ROG Xbox Ally: Steam Client shows 4 paddle buttons (2 non-functional), likely same root cause as hid-asus-ally Legion Go S identity workaround (#2371) #2838

Description

@cyruzin

Your system information

  • SteamOS version: 3.8.28
  • Kernel version: 6.18.50
  • Steam client version (build number or date): 1788652215
  • Device: ASUS ROG Xbox Ally (base model, Z2A)
  • Opted into SteamOS beta?: No
  • Opted into Steam client beta?: No
  • Have you checked for system updates?: Yes
  • GPU: AMD (integrated, Radeon RDNA2, Ryzen Z2A APU)

Please describe your issue in as much detail as possible:

The Steam Client's Controller Configuration for the built-in ROG Xbox Ally controller shows 4 extended/paddle button slots (L4, R4, L5, R5), even though this device only has 2 physical rear paddles. On the Device Support debug screen, all four slots are exposed as bindable inputs, but only 2 of them ever register true when physically pressed. The other 2 never trigger any input.

When launching a game (tested with Resident Evil 7 Biohazard), Steam Input loads a modified "Official Layout" whose diagram displays 4 paddle positions, with L5/R5 pre-bound to Left/Right Stick Click by default. This exactly matches the Lenovo Legion Go S's controller layout, which does have 4 rear paddles, rather than the ROG Xbox Ally's actual 2-paddle layout.

I originally filed this as a Steam Client issue (ValveSoftware/steam-for-linux#13652), since that's where the symptom is visible. However, I suspect the root cause may actually sit here, in SteamOS or the kernel driver stack, based on a very similar precedent. Issue #2371 in this repo describes the hid-asus-ally driver's RGB joystick LEDs only being recognized by the Steam Client after renaming the LED class device from ally:rgb:joystick_rings to go_s:rgb:joystick_rings. That is, intentionally borrowing the Legion Go S's device identity as a stopgap, because the Ally doesn't have a native profile yet.

If the same approach was used for the controller's own HID identification, not just the RGB LEDs, that would explain why Steam Input treats the Ally's built-in controller as if it were a Legion Go S for the purposes of button layout and glyphs, including the 4 paddles that only exist on that device, not the Ally.

If this theory is correct, the real fix would need to happen at the driver or SteamOS level, giving the Ally controller its own distinct identity instead of impersonating the Legion Go S, rather than only in the Steam Client's layout database.

Steps for reproducing this issue:

  1. On a ROG Xbox Ally (base model), go to Settings > Controller > [Ally controller] > Device Support (or equivalent debug/binding screen), and note that L4, R4, L5, and R5 all appear as available inputs.
  2. Physically press each of the 2 rear paddles and observe that only 2 of the 4 listed slots register input. The other 2 never change from false.
  3. Launch a game (e.g. Resident Evil 7 Biohazard) and open Controller Settings > Current Button Layout. The "Official Layout" diagram and Quick Settings panel display all 4 extended button slots (L4/R4/L5/R5) as configurable, with L5/R5 pre-bound to Left/Right Stick Click by default, despite only 2 physical paddles existing on the device.
  4. Compare with issue [ROG Ally / Ally X] hid-asus-ally: patch to enable joystick RGB LED controls in Game Mode (stopgap) #2371 in this repo, which documents a related identity workaround (RGB LED naming) for the same device.

Related issues:

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions