HID: asus: fix ROG Ally joystick ring LEDs, add strobe/direction - #3
Open
kndclark wants to merge 3 commits into
Open
HID: asus: fix ROG Ally joystick ring LEDs, add strobe/direction#3kndclark wants to merge 3 commits into
kndclark wants to merge 3 commits into
Conversation
NeroReflex
force-pushed
the
ally
branch
4 times, most recently
from
July 26, 2026 01:49
f759008 to
bbd3c71
Compare
NeroReflex
force-pushed
the
ally
branch
2 times, most recently
from
July 26, 2026 16:51
7c00659 to
9bc9553
Compare
kndclark
force-pushed
the
ally-led-fixes
branch
3 times, most recently
from
July 26, 2026 21:43
a59abf3 to
308d8df
Compare
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>
The multicolor LED always exposes six components, three for the primary color and three for the background color used by two-color effects. Userspace that expects a plain RGB device cannot interpret that, and the SteamOS color and brightness controls stop working on the ROG Ally as a result. Let the hardware description say how many components a device exposes, report three for the Ally, and drive num_colors and the color_set attributes from it. Devices that need the background color keep exposing all six. Tested on a ROG Ally X. Signed-off-by: Khamunetri Clark <khamunetriclark@gmail.com>
A long press of the left front button makes the firmware emit a ctrl-alt-del key sequence, which is detected and rewritten in place so the generic parser reports it as a single key instead. The report is then treated as fully handled and withheld from the parser, so the long press produces no event at all. Only the gamepad reports have to be kept away from the parser, as it would otherwise create a second, overlapping gamepad for them. Let the keyboard reports continue on to it. Tested on a ROG Ally X: a long press of the left front button emits KEY_F20 again, with a matching release. Signed-off-by: Khamunetri Clark <khamunetriclark@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.