Jump to content

ASUS ProArt P16 H7606WP

From ArchWiki


Hardware PCI/USB ID Working?
GPU (AMD) 1002:150e Yes
GPU (NVIDIA) 10de:2d18 Yes
Internal display eDP, Samsung ATNA60HR07-0 Yes1
Wi-Fi 14c3:7925 Yes
Bluetooth 13d3:3602 Yes
Audio 1022:15e3 Yes
Webcam 3277:0059 Untested
Touchpad I2C 093A:3014 Yes
ASUS DialPad I2C 093A:3014 Untested
Touchscreen I2C 2575:0E00 Untested
Stylus I2C 2575:0E00 Untested
SD card reader 17a0:9767 Untested
NPU 1022:17f0 Untested
  1. On linux 7.2.9 the panel stays frozen unless amdgpu.dcdebugmask=0x410 is set. See #Internal panel.

This article covers the ASUS ProArt P16 H7606WP (GeForce RTX 5070, 10de:2d18). The ASUS ProArt P16 H7606WV is a different laptop (GeForce RTX 4060, 10de:28a0, touchpad 2808:0234).

The observations below are from linux 7.2.9, an Xorg SDDM greeter, and Hyprland. Those are not requirements of the model.

lspci shows the Radeon 890M at 65:00.0 as a Display controller (class 0380), and the RTX 5070 at 64:00.0 as a VGA controller (class 0300). The AMD device is the one wired to the internal panel.

Graphics

The AMD GPU is driven by mesa. The NVIDIA GPU works with nvidia-open-dkms and nvidia-utils, plus the headers for the running kernel, such as linux-headers. Use the DKMS package. A prebuilt nvidia-open module that exists for only one installed kernel is enough, on that kernel, for nvidia-drm to create a DRM device.

Leave NVIDIA modesetting enabled (options nvidia_drm modeset=1). Do not add nvidia, nvidia_modeset, nvidia_uvm, or nvidia_drm to the MODULES array in mkinitcpio.conf. The kms hook already adds DRM drivers that are present while the image is built.

CUDA and nvidia-smi talk to the driver directly. Do not export __NV_PRIME_RENDER_OFFLOAD or __GLX_VENDOR_LIBRARY_NAME for the whole session. For one OpenGL application, see PRIME#PRIME render offload.

Display servers stay on the AMD GPU

With nvidia_drm.modeset=1, nvidia-drm can take the first DRM device node, and the Xorg configuration shipped by nvidia-utils can send the greeter there. The RTX 5070 has no tested display connected to it, so the greeter is invisible. Pin both the Xorg greeter and Hyprland to the Radeon.

AutoAddGPU and AutoBindGPU are ServerFlags options. In ServerLayout they are ignored, X opens the NVIDIA device, and that secondary screen aborts the server. Driver "amdgpu" requires xf86-video-amdgpu, which is not needed here. The working driver is modesetting.

The BusID below is the PCI address of 1002:150e in decimal. On this machine 65:00.0 is PCI:101:0:0. Confirm with lspci -d 1002:150e before copying it.

/etc/X11/xorg.conf.d/10-amdgpu-primary.conf
Section "ServerFlags"
    Option "AutoAddGPU" "false"
    Option "AutoBindGPU" "false"
EndSection

Section "ServerLayout"
    Identifier "layout"
    Screen 0 "amd"
EndSection

Section "Device"
    Identifier "amd"
    Driver "modesetting"
    BusID "PCI:101:0:0"
EndSection

Section "Screen"
    Identifier "amd"
    Device "amd"
EndSection

Hyprland reads AQ_DRM_DEVICES as a colon-separated list, so a PCI path such as /dev/dri/by-path/pci-0000:65:00.0-card is split and the compositor fails in CBackend::create(). Card numbers also swap between the two GPUs. Give the AMD device a stable symlink and point Hyprland at that. The same approach is documented on the Hyprland multi-GPU page.

/etc/udev/rules.d/99-amd-igpu.rules
KERNEL=="card*", KERNELS=="0000:65:00.0", SUBSYSTEM=="drm", SYMLINK+="dri/amd-igpu"

Reload the rule and check the link:

# udevadm control --reload
# udevadm trigger --subsystem-match=drm
$ ls -l /dev/dri/amd-igpu

For a Hyprland session started by uwsm, set the variable in the compositor environment file, not in the Hyprland configuration:

~/.config/uwsm/env-hyprland
export AQ_DRM_DEVICES=/dev/dri/amd-igpu
Warning lspci -d ::0300 on this laptop matches the NVIDIA VGA device, not the Radeon. Match 1002:150e or the 65:00.0 sysfs path.

External displays

Two DisplayPort monitors attached at the same time were driven by the AMD GPU (a 3440x1440 panel and a 1920x1080 panel), including the SDDM greeter.

The HDMI connector is registered on the NVIDIA device 0000:64:00.0. No display was attached to it, and USB4 display output was not tested. Do not assume the HDMI routing from the ASUS ProArt P16 H7606WV page.

Internal panel

The panel is a Samsung Display ATNA60HR07-0, 2880x1800, preferred mode 120 Hz, on the AMD eDP connector. Its EDID AMD vendor block advertises Panel Replay.

On linux 7.2.9, with amdgpu.dcdebugmask unset, the panel stops updating at the initramfs passphrase prompt. The console cursor freezes, the backlight stays on, and the kernel still reports the connector as connected, enabled, and DPMS On. DisplayPort monitors on the same AMD GPU keep updating. linux 6.18.55-lts did not do this. The range was not bisected, and 0x10 and 0x400 were not tested separately.

Add this to the kernel parameters. /sys/module/amdgpu/parameters/dcdebugmask then reads 1040.

amdgpu.dcdebugmask=0x410

0x10 is DC_DISABLE_PSR (PSR and PSR-SU). 0x400 is DC_DISABLE_REPLAY. The cost is that those panel power-saving features stay off. See the report and the captured EDID: drm/amd#5971.

Warning With limine-entry-tool, KERNEL_CMDLINE[linux]+=... replaces the whole kernel command line when that key has no previous value. That drops the existing parameters, including the LUKS device. Set the full KERNEL_CMDLINE[linux]=... line.

Audio

The analog device is the AMD HD Audio controller 1022:15e3. The codec reports as a Realtek ALC285 (10ec:0285, subsystem 1043:1e63). The PCI device name string says ALC245. Playback works with PipeWire and no extra configuration.

Touchpad

The touchpad is a PixArt ASCP1A01:00 device, 093A:3014, exposed as a normal libinput touchpad. It is not the 2808:0234 device described on the ASUS ProArt P16 H7606WV page. No extra driver was required for pointer input.

The ASUS DialPad function on this device was not set up.

Bluetooth

Bluetooth is the MediaTek combo adapter 13d3:3602, not the 0489:e11e adapter on the ASUS ProArt P16 H7606WV page. It works with the kernel driver and BlueZ. Pairing was tested. Audio playback over Bluetooth was not.