FreeSync won't enable on hybrid graphics laptop IdeaPad Gaming 3 15ACH6 82K200TERA (AMD+NVIDIA)

Hi everyone,

I have a Lenovo IdeaPad Gaming 3 15ACH6 (82K200TERA) laptop with:

  • AMD Ryzen 5 5600H (integrated Radeon Vega graphics)

  • NVIDIA GeForce RTX 3060 Mobile (6 GB)

  • 32 GB RAM

  • 15.6" 120Hz display (BOE NV156FHM-NX1 panel)

I’m running EndeavourOS (fully updated), kernel 6.18.13-arch1-1, and KDE Plasma (Wayland session). I noticed that FreeSync does not work, even though it works perfectly in Windows (dual boot confirmed).

Problem Description

The built-in display is connected to the AMD iGPU. The panel’s EDID contains Display supports continuous frequencies, so VRR should be supported. However, the amdgpu driver does not create /sys/class/drm/card*/eDP-*/vrr_capable. Visual tests (VRRTest) show that FreeSync is not active – frame rates drop and stuttering appears when lowering FPS.

The main issue: the driver ignores my custom EDID and always uses the ACPI-provided version, as seen in dmesg:

text

amdgpu 0000:06:00.0: amdgpu: [drm] Using ACPI provided EDID for eDP-1

What I’ve Tried (Detailed Steps)

  1. Extracted the original EDID using get-edid | edid-decode – it’s valid and shows VRR capability.

  2. Converted the EDID to binary and placed it in /lib/firmware/edid/boe-nv156fhm-nx1.bin (permissions 644).

  3. Added kernel parameters in /etc/default/grub:

    text

    drm.edid_firmware=eDP-1:edid/boe-nv156fhm-nx1.bin drm_kms_helper.edid_firmware=eDP-1:edid/boe-nv156fhm-nx1.bin video=eDP-1:e amdgpu.dc=1 amdgpu.ignore_acpi=1
    

    (I kept existing parameters unchanged.)

  4. Configured amdgpu module in /etc/modprobe.d/amdgpu.conf:

    text

    options amdgpu freesync_video=1 dc=1
    
  5. Included the EDID in initramfs using dracut (/etc/dracut.conf.d/edid.conf with install_items+=" /lib/firmware/edid/boe-nv156fhm-nx1.bin "). Regenerated with sudo dracut --force, and verified the file is present (lsinitrd).

  6. Updated GRUB (sudo grub-mkconfig -o /boot/grub/grub.cfg) and rebooted.

  7. Checked kernel command line – parameters are present, including amdgpu.ignore_acpi=1. However, dmesg still shows the ACPI EDID message. No “Invalid firmware EDID” errors.

  8. Verified freesync_video parameter – it’s set to 1 (cat /sys/module/amdgpu/parameters/freesync_video), but vrr_capable remains absent.

  9. Tried different combinations (e.g., using only drm_kms_helper.edid_firmware, different ordering), but the result is the same.

  10. Attempted to use amdgpu.ignore_acpi=1 – it appears in /proc/cmdline but does not prevent the ACPI EDID from being used.

Additional Information

  • FreeSync works in Windows, so hardware supports it.

  • Adaptive Sync is enabled in KDE System Settings (set to “Automatic”).

  • No error messages related to EDID or amdgpu in dmesg apart from the ACPI notice.

Questions

  • Is there any way to force the amdgpu driver to use my custom EDID instead of the ACPI one? Perhaps a way to disable ACPI EDID for a specific connector?

  • Could this be a kernel regression or a missing quirk for the BOE NV156FHM-NX1 panel in 6.18.13? I’ve seen patches for similar BOE panels in earlier kernels (Framework 13/16 fixes). Should I try the LTS kernel (linux-lts) or a newer mainline kernel from AUR?

  • How can I verify which EDID the driver is actually using, besides the log message? (e.g., through debugfs or another interface)

  • Are there alternative kernel/module parameters that can forcibly enable VRR without relying on the EDID?

Any help or ideas would be greatly appreciated! I can provide additional logs if needed. Thanks in advance.

[SOLVED]

The trick is to use the correct display core feature mask that re-enables the old behaviour and allows VRR to work on Wayland.

Step-by-step:

  1. Edit GRUB configuration
    Open a terminal and run:

    bash

    sudo nano /etc/default/grub
    
  2. Find the line starting with GRUB_CMDLINE_LINUX_DEFAULT=.
    It will look something like:

    text

    GRUB_CMDLINE_LINUX_DEFAULT='nowatchdog nvme_load=YES resume=UUID=... nvidia_drm.modeset=1 loglevel=3'
    
  3. Add the magic parameter
    Append amdgpu.dcfeaturemask=0x200 at the end, inside the quotes, with a space before it.
    The result should be:

    text

    GRUB_CMDLINE_LINUX_DEFAULT='nowatchdog nvme_load=YES resume=UUID=... nvidia_drm.modeset=1 loglevel=3 amdgpu.dcfeaturemask=0x200'
    
  4. Save and exit (Ctrl+O, Enter, Ctrl+X).

  5. Update GRUB:

    bash

    sudo grub-mkconfig -o /boot/grub/grub.cfg
    
  6. Reboot and make sure you select Plasma (Wayland) at the login screen.

  7. Verify the parameter is applied:

    bash

    cat /proc/cmdline
    

    You should see amdgpu.dcfeaturemask=0x200 at the end.

  8. Test FreeSync
    Install vrrtest from AUR:

    bash

    yay -S vrrtest-git
    

    Run it:

    bash

    vrrtest
    

    If you see a perfectly smooth moving rectangle without tearing or stuttering, FreeSync is working! :tada:

I thought that the parameter would have done the trick. amdgpu.freesync_video=1 But maybe you needed the amdgpu.dcfeaturemask=0x200 to control graphical instability.