This repository contains a specialized version of the hid-asus kernel driver, optimized for the ASUS ROG Ally X on SteamOS. It builds upon the upstream work by Denis (NeroReflex) and Luke Jones, adding critical features for handheld usability and SteamOS integration.
Compared to the base hid-asus driver, this version introduces the following functional updates:
- Integrated Effects: Implements the
0x5A/0x5DLED protocol directly into the driver, enablingStatic,Breathe,Chroma, andRainbowanimations. - Multicolor Class Integration: Exposes LEDs via the standard
led_classdev_multicolorinterface, allowing native control of intensity and color components. - Persistence Cache: Added logic to cache unscaled color intensity and global brightness, ensuring LED states survive system-wide dimming events.
- Sysfs Collision Guards: Includes specific logic to handle the
left_joystick_axisgroup collision present on Valve's patched Neptune kernels, ensuring the customization menu remains visible. - Standardized Attributes: Exposes
rgb_mode,rgb_speed, andrgb_brightnessas standard attributes on the LED device, matching the paradigm used in mainline handheld drivers.
- Asynchronous Initialization: Replaced blocking
msleepcalls with an asynchronousdelayed_workqueue (1.5s window). This prevents the driver from blocking the kernel's resume path while ensuring the MCU is ready before receiving configuration. - Resume State Restoration: Implemented automatic restoration of LED effects and brightness upon wake-up, bypassing the "resume-to-off" behavior common on handheld MCUs.
- Double-Mapping Suppression: Updated
asus_raw_eventto return-1for Ally vendor reports. This prevents duplicate input reporting where the system would otherwise map the same button twice (once via the HID core and once via the driver). - Resume Force-Release: Added a safety mechanism to clear the state of all vendor buttons (Armoury Crate, Command Center) during hardware re-initialization.
- User deck password set: SteamOS requires a password for
sudoactions. - Persistent storage: It is recommended to clone this repository to
/home/deck/to preserve it during system updates.
The included install.sh script handles filesystem unlocking, out-of-tree building (using asus-wmi-stub), and module reloading automatically.
cd ally_module
sudo ./install.shTip
SteamOS Updates: When SteamOS performs a system update, your filesystem and drivers are reset. Simply re-run sudo ./install.sh to restore these enhancements.
Based on the ASUS HID driver work by Luke Jones, Denis (NeroReflex), and Derek J. Clark. Special thanks to the ROG Ally reverse-engineering community.