July 2022 Update

Transmission begins: Hi, fluke here!

It's been a while.. Last update from me was 2021-09-12..

🔗Kernel

As many of you may know, a whole lot of patches for ROG laptops were upstreamed around the last update blog:

  • panel_od sysfs method (overdrive)
  • dgpu_disable sysfs method
  • egpu_enable sysfs method
  • platform_-profile support
  • custom fan-curves for 2021-2022 G14-G15 devices

🔗dGPU and eGPU control

The dgpu_disable stuff was mostly intended as a way to see what state the dgpu ACPI stuff is in, but you could also use it to enable or disable the dgpu - just not reliably. Since that patch was merged I was provided info by ASUS on the steps actually required to use the ACPI method, so now I can implement this correctly in kernel (soon!).

We have also seen cases of folks with an egpu on the X13 laptop using the egpu_enable method to get it working also. But, again though, I need to do similar work to the above. And then refactor support of these in supergfx.

🔗Custom fan-curves

Not actually much to say, except that folks are using them, and apparently without issues!

🔗asusctl

So.. a lot has happened in asusctl. It's a bit hard to enumerate, so here are the highlights.

  • GA402 matrix display
  • LED zones
  • LED power
  • AniMe Matrix improvements
  • logind requirement
  • Many more laptop LED support records
  • User laptop LED config
  • Async internals

🔗GA402 AniMe Matrix support

The fancy (and cool) display on the lid of some of these laptops in a smidge wider, and a bit taller than the GA401 version. And both use the same EC and same ID over USB. With plenty of help from I-Al-Istannen, we now have this working well! I-Al-Istannen completed the diagonal (pixel perfect) part - this is the format that the ASUS gifs use, and what allows a slanted but pixel-perfect image. And together we got the generic image component in asusctl working also - this is the bit that samples and displays a generic image.

It's pretty awesome TBH. And along the way we've tried to improve the documentation in asusctl of various bits.

🔗LED zones

On some models there is control for lid-logo and lightbars, along with 4 horizontal groups of LED in keyboard. Up until now support was rather lacking. That is, until MNS26 provided a whole lot of comprehensive wireshark captures. So now there is proper support for:

  • Keyboard zones 1-4
  • Lid logo
  • Lightbar with two LED

And each of these can have a factory preset applied. From what I understand, the same preset must apply to all? But different colours can be applied.

🔗LED power control

Not actually sure how to classify this. There is the ability to set enabled or disabled for each of the zones above, including single-zone keybaords:

  • Boot time - run or show an animation on boot
  • Awake - enable or disable the LED zone while device is awake
  • Sleep - enable or disable the LED zone while device is suspended (and plugged in)
  • Shutdown time - run or show an animation on shutdown (unsure of effect)

This support was able to be written thanks to MNS26 gathering a wireshark capture for every individual option on every individual zone - this is time consuming work but is the only way to crack these things open.

NOTE: this currently applies only to the later model keyboards. I do have captures and preliminary work for full support of the 0x1866 keyboard thanks to wireshark captures from mpiffault and I will try to get this support finished this week.

🔗General work

A few small fixes in AnimeMatrix support, but more specifically there is now support for running sequence blocks on boot, shutdown, suspend, and wake. So go mad with customization! This requires logind (and therefore systemd).

Additionally thanks to logind we now have charge control and laptop LED mode reloading on suspend and wake. This should also work for hibernation.

GA402R, GU502LV, G512, G513IC, G513QM, GX703HS, G513IM all now have LED support records (the thing that tells us what modes the LEDs support). There is now a total of 55 laptop models in the defaults, some are specific models, and some slightly more broad globs of a model (e.g, GA401Q is glob, while GA401QM is specific). That's a lot of concrete data for us, and will come in very handy for the eventual GUI app which will need to know what laptop supports what to display the correct UI for it.

Users can now add a new file /etc/asusd/asusd-user-ledmodes.toml where they can set LED support for there model without worry that updates will overwrite customiation to asusd-ledmodes.toml. If you use this, please provide the file to asusctl so it can be added to the defaults.

The internals of asusctl were rewritten to use async and the smol crate. This has in many cases dramatically improved things, and enabled me to use zbus 2.3 and the logind-zbus crate I maintain. Some more complex behaiour can be used now.

There is more work on asusctl to come in the next few days.

🔗Community

We now have a (very) small team of us who are working with ASUS to determine a more cohesive goal - I was already under NDA with them which enables me to have direct access to the ROG engineering team, but I just barely have time to keep on top of it. So to help with this some of our lovely people over in the discord server who help with things there already are helping to facilitate better communication and management - with SammiLucia operating as a team lead for us (we need a name don't we?). Our goal is to get the impormation required to fix various issues as they come up.

🔗Website

We also finally found the time to make a few additions to our website and fixed some of the responsive UX.

🔗contribution banners

A new page element was created to make the contribution possibilities more obvious and transparent.

Usually we first have a hint how to contribute directly via code, debugging, documentation or in other various ways that benefits everyone and help the project grow organically.

Secondly we now also have a more prominent section for the donation options. We often got a call in our Discord Community where one could spend a dime because they don't have the time to contribute in other ways but really want to give something back.

The money we receive goes directly into development and helps us to get the hands on devices to reverse engineer critical components.

🔗Third Party page

We always wanted to honour and showcase third party contributions that are based on our achievements and build something on top of it.

There already is a fine selection and we welcome every new contribution - be sure to create a merge request for the website or get in touch with us.

🔗asusctl-gex page

As asusctl-gex is an official part of the project we now have a dedicated page to create more awareness for it. People using GNOME will receive a widget that will always be in sync with the supergfxctl and asusctl API.

It is still in active development and we hopefully have some new features to announce at some point.

Has this post helped you?

If this site helps you and you want to contribute we welcome you to help with development, search for issues, join the discord, and add to this website.

You can also donate

Your support on Pateron or Paypal helps us buy ASUS devices for development to support new features and drivers.
Patreon button image or PayPal button image