September 2021 Update

Transmission begins: Hi, fluke here!

First off, patch statuses:

These patches are accpeted upstream.

🔗 asus-wmi: Add panel overdrive functionality

This shows up as /sys/devices/platform/asus-nb-wmi/panel_od if your laptop supports it. It is meant to help prevent ghosting.

🔗 asus-wmi: Add dgpu disable method`

This shows up as /sys/devices/platform/asus-nb-wmi/dgpu_disable if your laptop supports it. In general it is not an easy setting to use as it brutally removes the dgpu from the system without notifying the kernel, as such, you need to ensure that drivers using the dgpu are unloaded. Additionally it is unreliable so shoud be treated more as a "Did Armoury Crate diable the dGPU" check when diagnosing why the dGPU might not be available in Linux.

🔗 asus-wmi: Add egpu enable method

This shows up as /sys/devices/platform/asus-nb-wmi/dgpu_disable if your laptop supports it. To be used by systems with an eGPU. You will need to first unload the nvidia drivers, then toggle this on, and then reload the drivers. Keep in mind that toggling this switch also disabled the dGPU.

🔗 HID: asus: Prevent Claymore sending suspend event

It looks like ASUS is using a generic MCU across many products and laptops. This MCU spits out a stream of all sorts of events and ASUS HID driver is interpreting some of these events incorrectly.

🔗 asus-wmi: Add support for platform_profile

This is a multilayered change. The main thing it does is enable the use of "fan modes" by power-profiles. It effectively ties /sys/devices/platform/asus-nb-wmi/throttle_thermal_policy to power profiles that will show up as displayed in these images on next Fedora 35 and/or Gnome 41 releases:

Power profiles in Gnome menu

Power profiles in Gnome Settings

Power-profiles is going to be a standard component very soon, and it enables a lot more than just what this patch does - it can enable nvme and pci power saving if available, or change CPU governors etc (I'm not 100% on the list of things it will do as it is still in development).

This patch also means that because power-profiles is now able to be used, the existing (3.x.x) asusctl profiles stuff causes conflicts with power-profiles (and was blocked if asusctl was running). So the profile stuff is now stripped out and reduced to simple setting of profile on boot, or changing via asusctl command line if you are not using Gnome or other DE that exposes power-profiles. That means: no CPU turbo enable/disable, no frequency adjustments, no custom profiles.

These patches are still WIP or waiting for acceptance.

🔗 asus-wmi: Add support for custom fan curves

This is also a big change. The patch exposes the ability to set fan curves (if supported) for both CPU and GPU fans in a consistent standardised API in the asus-wmi kernel driver. Any application that can read/write this can use it.

If supported, the following will be available under hwmon (/sys/devices/platform/asus-nb-wmi/hwmon/hwmon<N>):

  • pwm1_enable, pwm2_enable, these accept 1 = manual mode (fan curve), 2 = auto (factory default for power profile), 3 = 2, plus reset fan curve to default.
  • pwm<F>_auto_point<N>_pwm where F = fan number, N = point on curve (1 to 8)
  • pwm<F>_auto_point<N>_temp where F = fan number, N = point on curve (1 to 8)

The _auto_point are 0-255 in value. The pwm is actually a percentage - 100 scaled to 255. Which is a little annoying but required due to the API spec, and due to ASUS doing percentage in ACPI tables.

A fan curve will apply on any power profile. But! If you use option 3 for pwm<N>_enable then the fan curve defaults that are restored will be the ones that are factory default for the power profile mode you are in (there are 3).

As such, fan curves in asusctl will change a bit, and this is a little tricky to do with a decent userspace API.

** I will update this blog post over the course of the day here. Am publishing it now so people can get a better idea of what is happenign at the moment**

** Note: graphics control was split out of asusctl in to supergfxctl**