ASUS Zenbook UM5606
| Hardware | PCI/USB ID | Working? |
|---|---|---|
| Touchpad | PS/2 | Yes |
| Touchscreen & stylus | PS/2 | Yes |
| Keyboard | PS/2 | Yes |
| GPU | 1002:150e |
Yes |
| NPU | 1022:17f0 |
Yes |
| Webcam | 3277:0059 |
Yes |
| ALS | Yes | |
| Bluetooth | 13d3:3608 |
Yes |
| SD-card reader | 17a0:9755 |
Yes |
| Audio | 1022:15e3 |
Yes |
| Wireless | 14c3:7925 |
Yes |
| Thunderbolt | 1022:151c |
Yes |
| TPM | 1022:17e0 |
Yes |
| Fans | Yes |
This page is for the ASUS Zenbook S 16 (UM5606/UM5606WA), although this may help for other 2024 ASUS laptops with the Ryzen 9 AI chips (HX 365/370) such as the ASUS Vivobook S 16 (M5606) and the ProArt P16 (H7606/H7606WV).
Installation
When booting into the Arch Linux ISO, press e to edit the chosen boot option and add the amdgpu.dcdebugmask=0x600 kernel parameter to prevent freezing during installation. A similar setting may or may not be needed after installation, see #Power management.
Accessibility
The UEFI may be difficult to navigate using screen readers, and it may be difficult to see the boot menu edit options when inputting the temporary kernel parameter. If necessary, you should proceed with the assistance of a sighted person.
Firmware
fwupd shows the CPU/GPU, TPM, SMU, UEFI firmware, NVMe, System firmware (which can have an attestation added), and the webcam. Most of them show as updatable, but no OTA updates have been released as of the time of writing.
There is an important UEFI update that has been posted on ASUS's website -- to apply it, download the "BIOS for ASUS EZ Flash Utility" (not "for Windows") file, extract the contents to a FAT32 formatted USB drive, reboot and go into the firmware setup, and then go into the "EZ Flash" menu. The update can be found here: [1]
Power management
Linux ≥6.14rc1 is needed to alleviate most power management problems, including high power usage during suspend and random freezing/hanging.
The ProArt P16 (H7606) may have high power usage during suspend, as observed with AMD Debug Tools. This can be improved with udev rules to set power management to auto:
/etc/udev/rules.d/50-asus-usb-power.rules
# Enable autosuspend for all USB devices, including ASUS ITE device
ACTION=="add", SUBSYSTEM=="usb", ATTR{power/control}="auto"
# Specific rule for ASUS ITE Device if needed
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="19b6", ATTR{power/control}="auto"
You can also set acpi_mask_gpe=0x04 to prevent wakeup from the lid switch
Panel Self Refresh
Random freezing/hanging may persist despite upgrading to a 6.14 release candidate kernel due to a known issue with PSR2-SU on Strix Point APUs. PSR2-SU should be disabled by default in future kernels, it can be disabled in the meantime by setting amdgpu.dcdebugmask=0x200, which will disable PSR2-SU but keep legacy PSR enabled. PSR status can be confirmed using
# cat /sys/kernel/debug/dri/1/eDP-1/psr_state
6
which should not return a non-negative value (note that compositor options and misbehaving applications may also interfere with PSR). If you continue to encounter issues, set amdgpu.dcdebugmask=0x600 as in the installation, which will entirely disable PSR. amdgpu.sg_display=0 may also need to be set if you encounter issues with external monitors.
If you are using KDE, you need to edit the plasma-kwin_wayland.service user unit and add this to the configuration:
~/.config/systemd/user/plasma-kwin_wayland.service.d/override.conf
[Service] Environment="KWIN_DRM_DISABLE_TRIPLE_BUFFERING=1"
Fan control
The firmware supports four fan profiles: standard, quiet, high-performance, and full-performance. Out of the box, it's set to standard, but this can be changed with asus-5606-fan-state-gitAUR.
Wake from suspend
There is currently known a problem when waking up from suspend (s2idle) that the screen will freeze for about 10 seconds. This problem is currently caused by the mt7925e kernel module failing to properly re-initialize the MT7925 wireless card after resuming. This has been fixed in Linux ≥6.14-rc1.
However, as a temporary workaround for older kernel, you can unbind the device from the driver before suspending and later rebind it after resuming. This can be achieved using the following two systemd service units:
unbind-wifi-before-suspend.service
[Unit] Description=Unbind Wi-Fi PCI device before suspend Before=suspend.target [Service] Type=oneshot ExecStart=/bin/bash -c "echo "0000:c3:00.0" > /sys/bus/pci/drivers/mt7925e/unbind" RemainAfterExit=false [Install] WantedBy=sleep.target
bind-wifi-after-resume.service
[Unit] Description=Bind Wi-Fi PCI device after resume After=suspend.target [Service] Type=oneshot ExecStart=/bin/bash -c "echo "0000:c3:00.0" > /sys/bus/pci/drivers/mt7925e/bind" RemainAfterExit=false [Install] WantedBy=suspend.target
Reduce idle power at 2880x1800@120 Hz (MCLK/FCLK stuck high)
ATNA60CL10-0 before applying this workaround. Using incorrect timings or EDID may damage your panel.The UM5606 laptop's internal eDP panel (model ATNA60CL10-0) has two default modes 2880x1800@60 Hz and 2880x1800@120 Hz, with the former one encoded in the Detailed Timing Descriptor (DTD) of the base EDID block and the latter one in the displayID extension block. While the 2880x1800@120 Hz mode offers a smoother experience, it uses a very small vertical blanking (vblank) interval, which may cause the AMDGPU display driver to keep GPU memory clock (MCLK) and fabric clock (FCLK) at a higher DPM state even at idle/light load, significantly increasing power consumption. This issue contributes one of the most damaging factors to battery life when using the laptop on battery at 120 Hz. With the issue solved and other power management improvements in place (e.g. Power-saver profile, Panel self-refresh), idle/light-load power consumption at 120 Hz can be reduced to around 6-8 Watts, presenting a very competitive battery life.
Concretely, the symptoms are:
- With mode 2880x1800@120 Hz, the MCLK stays at around 800 MHz at idle as can be observed using amdgpu_top, even though the Strix Point APU's lowest MCLK state is 400 MHz.
- With mode 2880x1800@60 Hz, the MCLK drops to 400 MHz at idle as expected.
- The issue persists across Wayland and X11 sessions.
This issue matches exactly what is described in this gist about small vblank intervals preventing MCLK/FCLK from down-scaling. Thus, a workaround is to use a custom modeline or a custom EDID that increases vertical blanking while staying within the panel's advertised maximum pixel clock of 660 MHz.
The EDID info of the panel can be checked using read-edid with edid-decode (from package v4l-utils):
# get-edid | edid-decode
In summary, the stock 2880x1800@120 Hz mode has the following timing:
- Horizontal: Hfront=32, Hsync=8, Hback=60, Hwidth=2880, Hpol=Neg; => hblank=100
- Vertical: Vfront=8, Vsync=8, Vback=8, Vheight=1800, Vpol=Neg; => vblank=24 (very tight vblank)
- Pixel clock: 652.264 MHz => 120 Hz refresh rate
A known good timing is as follows, with vblank increased to 40:
- Horizontal: Hfront=32, Hsync=8, Hback=60, Hwidth=2880, Hpol=Neg; => hblank=100 (same as stock)
- Vertical: Vfront=8, Vsync=8, Vback=24, Vheight=1800, Vpol=Neg; => vblank=40
- Pixel clock: 657.984 MHz => 120 Hz refresh rate (within panel limit)
The following two subsections describe how to implement this timing in X11 and Wayland sessions respectively.
Workaround for X11 sessions
For X11 sessions, it is possible to simply use a custom modeline with xrandr to increase vblank for solving the MCLK/FCLK scaling issue.
Add the custom modeline:
$ xrandr --newmode "2880x1800_120_vb40" 657.984 2880 2912 2920 2980 1800 1808 1816 1840 -hsync -vsync
Associate the new mode with the eDP output (replace with the actual output name, but it should be "eDP" anyway):
$ xrandr --addmode eDP "2880x1800_120_vb40"
Set the eDP output to use the new mode:
$ xrandr --output eDP --mode "2880x1800_120_vb40"
Workaround for Wayland sessions
For Wayland sessions it can be hard to set a custom modeline. So instead, a custom EDID binary can be created and loaded via the kernel command line. While the previous gist suggest using wxedidAUR for custom EDID creation, the wxedid tool is in fact insufficient for this case as the 120 Hz mode is stored in the displayID extension block, which wxedid cannot edit.
Create a custom EDID binary:
- One method is using CRU (Custom Resolution Utility) on Windows:
- Edit the internal panel's preferred timing to use hblank=100 and vblank=40 at 120 Hz.
- Export the modified EDID as a binary
edid_mclk_fix.binfile.
- If you are comfortable downloading a pre-made EDID binary, you can download it from here.
Install the custom EDID binary into the firmware search path:
# mkdir -p /lib/firmware/edid # cp edid_mclk_fix.bin /lib/firmware/edid/ # chmod 644 /lib/firmware/edid/edid_mclk_fix.bin
Add the kernel parameter (adjust connector name if needed):
drm.edid_firmware=eDP-1:edid/edid_mclk_fix.bin
You can confirm the connector name using ls -1 /sys/class/drm | grep -E 'card[0-9]+-eDP'. Say the output is card1-eDP-1, then the connector name is eDP-1.
Ensure the EDID blob is available at boot (initramfs):
- mkinitcpio:
/etc/mkinitcpio.conf
FILES=(... /lib/firmware/edid/edid_mclk_fix.bin)
- Then regenerate the initramfs.
- dracut:
/etc/dracut.conf.d/10-edid.conf
install_items+=" /lib/firmware/edid/edid_mclk_fix.bin "
- Then regenerate the initramfs.
Reboot and verify the absence of EDID load errors:
# dmesg | grep -iE 'edid|edid_firmware|Requesting EDID firmware|failed'
Verify MCLK can downclock at idle at 120 Hz using amdgpu_top.
Audio
Linux ≥6.13 is needed to get audio fully working without sounding tinny.
Wireless
Wireless may be unstable. If you're experiencing issues, switch from wpa_supplicant to iwd, then create this file and reload units:
/etc/systemd/system/iwd.service.d/dependencies.conf
[Unit] After=sys-devices-pci0000:00-0000:00:02.3-0000:c3:00.0-net-wlan0.device Wants=sys-devices-pci0000:00-0000:00:02.3-0000:c3:00.0-net-wlan0.device
iwd without this device-specific dependency works reliably without delaying the boot process.
Also, this device path is specific to the ASUS Zenbook S 16 and will likely be different on other models. If you need to add a similar dependency, you must determine your own device-specific path using readlink -f /sys/class/net/wlan0.NPU
Currently Linux ≥6.14rc1, xrt-npu-gitAUR, and amdxdna-driver-binAUR are all needed to get the NPU to work. Tested against the AMD XDNA Linux driver's provided example on the arch-linux branch of ThatOneCalculator's fork.
ALS
The Ambient Light Sensor (ALS) works out of the box on GNOME, and on wlroots/smithay compositors with wlumaAUR and this configuration:
~/.config/wluma/config.toml
[als.iio]
path = "/sys/bus/iio/devices"
thresholds = { 0 = "night", 2 = "dark", 5 = "dim", 8 = "normal", 13 = "bright", 15 = "outdoors" }
[[output.backlight]]
name = "eDP-1"
path = "/sys/class/backlight/amdgpu_bl1"
capturer = "none"
Function keys
| Key | Visible?1 | Marked?2 | Effect |
|---|---|---|---|
Fn+Esc |
No | Yes | Enables Fn lock |
Fn+F1 |
Yes | Yes |
XF86AudioMuteToggle
|
Fn+F2 |
Yes | Yes |
XF86AudioLowerVolume
|
Fn+F3 |
Yes | Yes |
XF86AudioRaiseVolume
|
Fn+F4 |
No3 | Yes | Adjusts keyboard backlight |
Fn+F5 |
Yes | Yes |
XF86MonBrightnessDown
|
Fn+F6 |
Yes | Yes |
XF86MonBrightnessUp
|
Fn+F7 |
Yes | Screen mirroring icon |
Super+P
|
Fn+F8 |
Yes | Smiley face icon |
Super+.
|
Fn+F9 |
Yes | Yes |
XF86AudioMicMute
|
Fn+F10 |
Yes | Yes |
XF86Webcam
|
Fn+F12 |
Yes | Icon that looks like ⫽] |
XF86Launch1
|
Fn+P |
Yes | No |
Pause
|
Fn+B |
Yes | No |
Pause
|
Fn+K |
Yes | No |
ScrollLock
|
Fn+F |
Yes | No | Unknown (scancode 240) |
Fn+C |
Yes | No |
XF86Launch1
|
- The key is visible to
xev,showmethekey,screenkey, and similar tools - The physical key has a symbol on it, which describes its function
- The key isn't visible to keycode viewer tools, but it sends a signal that D-Bus picks up on, and GNOME sees it (and shows the OSD popup). The signal looks like this:
signal time=XXXXXXXXX.XXXXXX sender=:1.44 -> destination=(null destination) serial=XXX path=/org/freedesktop/UPower/KbdBacklight; interface=org.freedesktop.UPower.KbdBacklight; member=BrightnessChanged int32 3
- Where the
int32can be a value between 0 and 3, denoting which of the four brightness levels the keyboard backlight has been set to (0 = off, 1 = low, 2 = medium, 3 = high).
- Where the