Laptop screen has output, but does not refresh properly with Intel Iris Xe iGPU


I installed NixOS on a Dell Latitude 9430, but the output I get on the laptop screen (2560x1400 resolution) is not functional.

I do get some output - and it is in the correct screen resolution, color etc., but the picture is not refreshed, often for minutes, sometimes for just seconds. And when it is, it sometimes does not refresh the whole screen, but just a horizontal line wherever the mouse cursor is at.

This behavior does not happen on an external monitor connected via HDMI or with the internal display when using Windows 11. It does happen when using other distributions, I have tried the live versions of Pop!Os and EndeavourOS. Also, it does happen in tty1.

Attempts to solve the problem that I tried:

  • forcing the kernel to use the iGPU, which is the only thing mentioned about Intel Graphics on (i915.force_probe=46a8)

  • including the default.nix for Intel GPUs from the nixos-hardware repo on GitHub, and setting the default driver to both i915 and xe (and updgrading the kernel to 6.9.3, so that the xe driver can function)

  • i915.enable_guc=3, like in the nixos-hardware repo for the Dell Latitude 7430

  • enabling fwupd and executing fwupdmgr update and fwupdmgr upgrade

  • using both the the options modesetting and intel for services.xserver.videoDrivers

Running xrandr calls the display (or port?) eDP-1, so it is connected via DisplayPort.

I’d appreciate all attempts or ideas to fix the problem, because Linux is currently unusable for me on the laptop.

Okay, solved it :slight_smile:

The solution was disabling Panel Self Refresh with i915.enable_psr=0 like in the “Screen flickering” section of the Arch Wiki page on Intel graphics. Not sure if that will cause any problems as it is a power saving feature, so I’ll have to see how much it impacts battery life and I’ll also inform myself a little about the psr in i915, because i915.enable_psr=1 also seems to work, while i915.enable_psr=2 does not.