Skip to content

HID: asus: fix ROG Ally joystick ring LEDs, add strobe/direction - #3

Open
kndclark wants to merge 5 commits into
NeroReflex:allyfrom
kndclark:ally-led-fixes
Open

HID: asus: fix ROG Ally joystick ring LEDs, add strobe/direction#3
kndclark wants to merge 5 commits into
NeroReflex:allyfrom
kndclark:ally-led-fixes

Conversation

@kndclark

Copy link
Copy Markdown

First patch fixes the joystick ring on top of the multi-zone rework. hardware tested on an Ally X across all modes and suspend/resume. The remaining three restore effects that the rework didn't carry over: strobe, a background color for breathing, and direction for animated effects.

kndclark added 4 commits July 26, 2026 12:23
The joystick ring brightness fell back to the last non-zero level when the
stored value was zero. The stored value is only ever zero because
userspace set it there, so the fallback overrode a deliberate userspace
choice. Restore the stored brightness as-is and drop the tracking field.

Signed-off-by: Khamunetri Clark <khamunetriclark@gmail.com>
Animated effects can run in either direction, and the direction byte of
the effect report is already tracked per zone, but there is no way for
userspace to change it, so it stays on the default. Add a "direction"
attribute (reverse/forward) and its "direction_index" companion so the
animation can be reversed.

Signed-off-by: Khamunetri Clark <khamunetriclark@gmail.com>
The Ally X gamepad interface delivers 16 byte input reports: the report
id followed by six 16-bit axes and three button bytes. The report struct
declared a fourth button byte that does not exist on the wire, so the
size check introduced alongside it required 17 bytes and rejected every
report. The events then fell through to the generic HID parser, whose
descriptor-derived gamepad exposes a different button set, scrambling
the buttons seen by userspace.

Size the struct to match the wire and pin it to the report size define
so the two cannot drift apart again.

Signed-off-by: Khamunetri Clark <khamunetriclark@gmail.com>
When the firmware answers neither capability query every effect with a
name is exposed, including many the hardware cannot run. The Ally
firmware implements no capability query, so userspace was offered the
full effect list. Let the hardware description name the supported
effects and use it as the fallback, keeping the permissive behavior for
devices without a mask.

Signed-off-by: Khamunetri Clark <khamunetriclark@gmail.com>
Doubling the multicolor subleds to carry the background color produces a
six component multi_intensity with duplicated color indexes, which
userspace cannot interpret as an RGB device: the SteamOS color and
brightness controls stop working entirely. Present the standard three
component RGB device instead.

Signed-off-by: Khamunetri Clark <khamunetriclark@gmail.com>
@kndclark kndclark changed the title HID: asus: fix ROG Ally joystick ring LEDs, add strobe/color2/direction HID: asus: fix ROG Ally joystick ring LEDs, add strobe/direction Jul 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant