The ROG Ally (and RGB)

I recently invested in a ROG Ally to begin properly supporting it under Linux. The patch for this is a little way off being mainlined as I'm looking at different ways to actually do this functionality in a way that I can add some other ROG things like LED control, AniMe Matrix display and some other stuff. The patch so far has:

  • add xpad mode
  • add deadzones
  • add anti-deadzones
  • add gamepad button remapping
  • add gamepad mapping reset for xpad and wasd modes
  • add turbo mode for individual buttons
  • add joystick response curves
  • add vibration intensity settings
  • add calibration setting

Of note is the final item "calibration setting". From what I understand there is a baseline set in production, and the values used in a calibration are a deviation of this - I now have the method to fetch these values so I will be trialling calibration methods. This patch is still in testing in the ChimeraOS discord, and likely also in Nobara Steam Deck edition. Once I get the last pieces in place I will begin upstream submission (in case I wasn't clear).

The final step might be to adjust this patch so that the ROG stuff is an additional kernel module loaded by the "hid-asus" module if required. But I dunno, in practice the extra compiled size is tiny in relation to all other things.

So after the above I will likely begin working on adding some methods to better and easier control the LEDs - but there is two big problems (or a few depending on how you look at it)

  1. Every laptop has different basic modes built in
  2. Every laptop has different "advanced/aura-sync" ability (such as multizone vs per-key) it means I need to turn this in to bitmasks, add every record here, and add a way for users to add/adjust their model if it doesn't exist in the known list.

I don't know how I want to approach this yet... do I try to move this functionality in to the kernel, or do I support only one single basic mode (static). I added similar control for the TUF laptops already which looks like:


$ cat kbd_rgb_mode_index

$ cmd mode red green blue speed

note that this isn't the LED Multicolor class that the kernel has - I tried that and it was a journey. I will revisit it however, maybe I've learned something in the last year that might help. Lastly, I'm adding some extra WMI methods soon. You can see the table of WMI methods I've built up here. These were discovered through reverse engineering using ghidra and cutter. Oh and this leads me to the on-going tablet issues, I will begin to work on these again soon.

PS: of special note is that 2023 laptops using Cirrus amps have now been fixed, or if not fixed in these patches the framework is at least added for fixing them. See the patch series by Cirrus here. This patch series has landed in 6.7.0-rc8, I am unsure if it will hit the stable branches, typically sound patches like this do but the amount of work done here might negate that.

Legal Matters

ASUS and ROG Trademark is either a US registered trademark or trademark of ASUSTeK Computer Inc. in the United States and/or other countries.

Reference to any ASUS products, services, processes, or other information and/or use of ASUS Trademarks does not constitute or imply endorsement, sponsorship, or recommendation thereof by ASUS.

The use of ROG and ASUS trademarks within this website and associated tools and libraries is only to provide a recognisable identifier to users to enable them to associate that these tools will work with ASUS ROG laptops.

Privacy Policy

We use Matomo

Matomo is an open source web analytics platform. A web analytics platform is used by a website owner in order to measure, collect, analyse and report visitor data for purposes of understanding and optimizing their website.

Purpose of the processing

Matomo is used to get an idea how our website is used by our users so we can optimize things further so that the user may find the most relevant information more quickly.

Data Matomo is processing

  • User IP address
  • Optional User ID
  • Date and time of the request
  • Title of the page being viewed
  • URL of the page being viewed
  • Referrer URL
  • Screen resolution being used
  • Time in local user’s timezone
  • Files that were clicked and downloaded
  • Links to an outside domain that were clicked
  • Page generation time
  • User location: country, region, city, approximate latitude and longitude
  • Main Language of the browser being used
  • User Agent of the browser being used

Pick up the one you are using:

  • Cookies
  • IP address
  • User ID
  • Custom Dimensions
  • Custom Variables
  • Location of the user

And also:

  • Date and time
  • Title of the page being viewed
  • URL of the page being viewed
  • URL of the page that was viewed prior to the current page
  • Screen resolution
  • Time in local timezone
  • Files that were clicked and downloaded
  • Link clicks to an outside domain
  • Pages generation time
  • Country, region, city
  • Main Language of the browser
  • User Agent of the browser

This list can be completed with additional features such as:

  • Form interactions
  • Media interactions
  • A/B Tests

The processing of personal data with Matomo is based on legitimate interests

If you wish us to not process any personal data with Matomo, you can opt-out from it at any time. There will be no consequences at all regarding the use of our website.

You can withdraw at any time your consent by clicking here

The right to lodge a complaint with a supervisory authority

If you think that the way we process your personal data with Matomo analytics is infringing the law, you have the right to lodge a complaint with a supervisory authority.

We are not doing any profiling.