Draft: HID: asus: Ally X SteamOS LED multicolor + FF/haptics support - #1
Open
kndclark wants to merge 16 commits into
Open
Draft: HID: asus: Ally X SteamOS LED multicolor + FF/haptics support#1kndclark wants to merge 16 commits into
kndclark wants to merge 16 commits into
Conversation
kndclark
force-pushed
the
ally-x-steamos-led-ff
branch
7 times, most recently
from
July 19, 2026 15:14
c71e84f to
83de6c5
Compare
kndclark
force-pushed
the
ally-x-steamos-led-ff
branch
from
July 19, 2026 16:08
83de6c5 to
7725498
Compare
NeroReflex
force-pushed
the
ally
branch
2 times, most recently
from
July 19, 2026 17:57
0c4e546 to
4606846
Compare
The ROG ally needs to have the EC string sent back after resuming from s2idle since the USB device can be turned completely off by the firmware when mcu_powersave firmware-attribute is set to 1. This may also be true for other laptops and certain features might stop working after the device exit from sleep. Signed-off-by: Denis Benato <denis.benato@linux.dev>
Implement the core functionality for ASUS handhelds: - extend functionality of hid-asus if driver is enabled - initialise the device to a "ready" state - implement Ally X input mapping - emit a single proper event for AC button long press Signed-off-by: Khamunetri Clark <khamunetriclark@gmail.com> Signed-off-by: Denis Benato <denis.benato@linux.dev> Signed-off-by: Matthew Schwartz <matthew.schwartz@linux.dev> Signed-off-by: Luke Jones <luke@ljones.dev>
Add the base configuration structures for the gamepad configuration, detect capabilities and initialize the device in a known state. Signed-off-by: Denis Benato <denis.benato@linux.dev> Signed-off-by: Luke Jones <luke@ljones.dev>
ASUS ROG Ally handhelds support the vibration strength to be configured: add sysfs attributes to allow userspace configure motors vibration intensity. Signed-off-by: Denis Benato <denis.benato@linux.dev> Signed-off-by: Luke Jones <luke@ljones.dev>
ROG Ally devices supports configuring joysticks inner and outer range: add sysfs attributes to allow userspace modifying the sensitivity of those controllers. Signed-off-by: Denis Benato <denis.benato@linux.dev> Signed-off-by: Luke Jones <luke@ljones.dev>
ROG Ally devices allows configuring inner and outer ranges for triggers buttons on the back: allow userspace to configure the sesitivity by exposing sysfs attributes. Signed-off-by: Denis Benato <denis.benato@linux.dev> Signed-off-by: Luke Jones <luke@ljones.dev>
ROG Ally devices allow configuring the anti-deadzone parameter for the resistive joysticks devices as over time those develops drift, therefore allow userspace to configure the anti-deadzone by exposing relevant sysfs attributes. Signed-off-by: Denis Benato <denis.benato@linux.dev> Signed-off-by: Luke Jones <luke@ljones.dev>
ROG ally devices allows configuring the response curve of both joysticks, therefore add the ability of userspace to modify the response curve by exposing relevant sysfs attributes. Signed-off-by: Denis Benato <denis.benato@linux.dev> Signed-off-by: Luke Jones <luke@ljones.dev>
ROG ally devices supports a feature called turbo buttons that allows the user to quickly toggle button state by keeping a button pressed, therefore allow userspace to configure the feature by exposing relevant sysfs attributes. Signed-off-by: Denis Benato <denis.benato@linux.dev> Signed-off-by: Khamunetri Clark <khamunetriclark@gmail.com> Signed-off-by: Luke Jones <luke@ljones.dev>
Add support for buttons remapping: the ability to assign different button events to each one of the physical button on the device. Signed-off-by: Luke Jones <luke@ljones.dev> Signed-off-by: Denis Benato <denis.benato@linux.dev>
ROG Ally devices can emulate either a mouse+keyboard (desktop mode) or an gamepad device (xbox360 controller in ROG ally and a custom DInput device on newer models): add support for switching the current controller mode. Signed-off-by: Luke Jones <luke@ljones.dev> Signed-off-by: Denis Benato <denis.benato@linux.dev>
Unlike ROG ally the X version and following ones uses DInput protocol and the force feedback needs to be implemented as its protocol is vendor-specific, therefore add support for FF_RUMBLE with magnitude scaling on a work-queue based approach to avoid using possibly sleeping calls in atomic context. Signed-off-by: Denis Benato <denis.benato@linux.dev> Signed-off-by: Khamunetri Clark <khamunetriclark@gmail.com> Signed-off-by: Luke Jones <luke@ljones.dev>
kndclark
force-pushed
the
ally-x-steamos-led-ff
branch
2 times, most recently
from
July 19, 2026 21:22
2d1d440 to
5ff6e40
Compare
Add multicolor LED class support for the ROG Ally X joystick ring LEDs: - Multicolor LED class device for the joystick ring LEDs - RGB effect modes: static, breathing, color cycle, rainbow - Effect speed control and hardware brightness levels - Proper suspend/resume with deferred LED restoration - Persist LED config to MCU non-volatile storage once per suspend (avoids flash wear from committing on every brightness change) Signed-off-by: Khamunetri Clark <khamunetriclark@gmail.com>
The Ally MCU supports a strobe (rapid on/off) lighting effect on the joystick ring LEDs, selected via hardware effect byte 0x0a on the B3 config report. Expose it as a new value in the RGB effect enum and add a wire-byte mapping table so the compact sysfs effect index stays decoupled from the non-sequential hardware values. Signed-off-by: Khamunetri Clark <khamunetriclark@gmail.com>
The Ally MCU can smoothly crossfade the joystick ring LEDs between a primary and a background color when running the breathing effect, by supplying background RGB values in offsets 10-12 of the B3 config report. Add a "color2" sysfs attribute to configure the background color and feed it into the effect packet when breathing is active. Signed-off-by: Khamunetri Clark <khamunetriclark@gmail.com>
Dynamic effects (color cycle/chroma, rainbow) can run in either direction on the Ally joystick rings. Replace the hardcoded forward direction byte with a configurable value exposed through a "direction" sysfs attribute (reverse/forward), defaulting to forward. Signed-off-by: Khamunetri Clark <khamunetriclark@gmail.com>
kndclark
force-pushed
the
ally-x-steamos-led-ff
branch
from
July 19, 2026 21:33
5ff6e40 to
acde563
Compare
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
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.
Add SteamOS-oriented features for the ROG Ally X handheld:
LED subsystem:
Force feedback / haptics:
Input handling fixes: