ASUS ROG Ally gamepad support lands in hid-asus
Denis Benato's v7 series brings years of out-of-tree Ally controller work into the mainline ASUS HID driver.
A long-running out-of-tree driver for ASUS ROG Ally handhelds is finally headed into the mainline kernel's ASUS HID stack. Denis Benato has posted version 7 of a series that extends hid-asus with full gamepad support for the Ally and Ally X, work that has already shipped for years in SteamOS and other distributions.
The series covers the practical gaps that made stock Linux awkward on these devices. After s2idle, the Ally's embedded controller can power the USB side completely off when firmware powersave is enabled; the driver now reinitializes reports on resume so controls keep working. It also adds force feedback (including vendor-specific rumble on Ally X and later DInput models), gamepad-versus-desktop mode switching, turbo buttons, and button remapping, plus sysfs knobs for vibration intensity, stick and trigger ranges, anti-deadzone compensation for drifting joysticks, and response curves.
Benato reworked earlier code from Luke Jones so it could land upstream without breaking existing hid-asus behavior such as keyboard backlight control. Shared configuration state is kept across EC re-enumeration so users do not fall back to factory defaults after suspend. LED support is deliberately left out for a later series that will unify ASUS LED handling once a richer userspace capability interface is ready.
For handheld Linux users, the practical result is mainline support for the controller features they have been configuring through vendor or distro patches, reducing the need for separate out-of-tree modules on Ally hardware.