May 2021 Update

Transmission begins: Hi, fluke here!

The big ticket item in the last few weeks has been the various kernel patches. These are as follows, including the statuses and links to upstream submission. Unless otherwise stated you should assume patches will be available in the 5.13.x series kernel.

🔗 HID: asus: filter G713/G733 key event to prevent

The G713 and G733 both emit an unexpected keycode on some key presses such as Fn+Pause. The device in this case is emitting two events on key down, and 3 on key up, the third key up event is report ID 0x02 and is unfiltered, causing incorrect event.

Status: Accepted and merged

https://www.spinics.net/lists/linux-input/msg72896.html

🔗 HID: asus: Filter keyboard EC for old ROG keyboard

Older ROG keyboards emit a similar stream of bytes to the new N-Key keyboards and require filtering to prevent a lot of unmapped key warnings showing. As all the ROG keyboards use QUIRK_USE_KBD_BACKLIGHT this is now used to branch to filtering in asus_raw_event.

Status: Accepted and merged

https://www.spinics.net/lists/linux-input/msg71942.html

🔗 HID: asus: Add support for 2021 ASUS N-Key keyboard

Some new 2021 version of ASUS gamer laptops are using an updated N-Key keyboard with the PID of 0x19b6. This version is using the same init sequence and brightness control as the 0x1866 keyboard.

Status: Accepted and merged 5.12 series onwards

https://www.spinics.net/lists/linux-input/msg71941.html

🔗 ALSA: hda/realtek: GA503 use same quirks as GA401

The GA503 has almost exactly the same default setup as the GA401 model with the same issues. The GA401 quirks solve all the issues so we will use the full quirk chain.

Status: Accepted and merged 5.11 series onwards

https://www.spinics.net/lists/alsa-devel/msg125300.html

🔗 ACPI: video: use native backlight for GA401/GA502/GA503

Force backlight control in these models to use the native interface at /sys/class/backlight/amdgpu_bl0.

Status: Accepted and merged

https://www.spinics.net/lists/linux-acpi/msg100635.html

🔗 Remove GA14/15 quirks to acpi/video_detect

Part of the "use native backlight" patch series.

Status: Accepted and merged

https://www.spinics.net/lists/platform-driver-x86/msg25494.html

🔗 ALSA: hda: fixup headset for ASUS GX502 laptop

The GX502 requires a few steps to enable the headset i/o: pincfg, verbs to enable and unmute the amp used for headpone out, and a jacksense callback to toggle output via internal or jack using a verb.

Status: Accepted and merged 5.11 series onwards

https://www.spinics.net/lists/alsa-devel/msg115227.html

🔗 HID: ASUS: Add support for ASUS N-Key keyboard

The ASUS N-Key keyboard uses the productId of 0x1866 and is used in almost all modern ASUS gaming laptops with slight changes to the firmware. This patch enables: Fn+key hotkeys, keyboard backlight brightness control.

Additionally this keyboard requires the LED interface to be initialized before such things as keyboard backlight control work.

Status: Accepted and merged 5.11 series onwards

https://www.spinics.net/lists/linux-input/msg69661.html

🔗 Other patches in progress

🔗 GA401Q series suspend issues

ASUS have disabled the S3 suspend on these models and the kernel now needs to use s2idle to suspend. This seems to be the trend for many other brands also. With stock kernels less than 5.13 suspend is likely to fail, and definitely fails with 5.11 or less.

There are many fixes on the way in to the kernel for these issues and I'd expect it to become a non-issue in 5.13 series.

🔗 asus-wmi: Add dgpu disable method

In Windows the ASUS Armory Crate progrm can enable or disable the dGPU via a WMI call. This functions much the same as various Linux methods in software where the dGPU is removed from the device tree.

However the WMI call saves the state of dGPU enabled or not and this then changes the dGPU visibility in Linux with no way for Linux users to re-enable it. We expose the WMI method so users can see and change the dGPU ACPI state.

The patch will default to dGPU enabled to prevent any user confusion or requirement to manually enable, especially because the dGPU does work well in Linux with none of the issues that plague Windows.

Status: Not yet submitted upstream, requires more testing but will aim to get in to 5.13 kernel.

If you wish to test a new fedora rog kernel will be available soon containing the patch. It should be enough to install the kernel, boot it, and check that nvidia works. Do note that boot can take up to ten seconds longer if you've enabled "iGPU On" in Windows.

You can check status with cat /sys/bus/platform/devices/asus-nb-wmi/dgpu_disable. 0 returned means the dGPU is enabled and will be visible under lspci.

You can also disable the dgpu this way:

echo 1 |sudo tee /sys/bus/platform/devices/asus-nb-wmi/dgpu_disable

WARNING: if the nvidia or nouveu driver is loaded this will hard lock your system. In the next version of the patch I may well disable the ability to set it at all and rely on a default boot behaviour only to prevent all possible issues such as this.

https://gitlab.com/asus-linux/fedora-kernel/-/blob/rog/0001-asus-wmi-Add-dgpu-disable-method.patch

🔗 asus-wmi: Add panel overdrive functionality

Some laptops have a function to make the internal display panel change pixels a little faster in an effort to reduce ghosting effects. I'm quite honestly unable to verify this works, and is actually available on the laptops that this patch picks up. Use the provided fedora rog kernel (NOTE: as of 21:00NZT the new builds just started and take ~6 hours to complete).

https://gitlab.com/asus-linux/fedora-kernel/-/blob/rog/0001-asus-wmi-Add-panel-overdrive-functionality.patch

Test with:

echo 1 |sudo tee /sys/bus/platform/devices/asus-nb-wmi/panel_od
echo 0 |sudo tee /sys/bus/platform/devices/asus-nb-wmi/panel_od

And please notify me luke@ljones.dev or in discord of the results for you for each command.

🔗 End

Once 5.13.0 kernel is released you should no-longer require a custom kernel or the dkms modules. If you are currently using fedora or arch I strongly suggest you use the custom kernels provided and remove the dkms modules.

If you think I've missed anything important please ping me (on discord).