How to Fix Screen Flickering Issue on Fedora 38 with Intel Integrated Graphics 620 (ThinkPad X270)

haomin
3 min readApr 24, 2023

Recently I purchased a used ThinkPad X270 to play around with Linux and I landed on using Fedora 37 with KDE.

Fedora 37 (I later updated to Fedora 38 to see if the issue was fixed — it is not) worked flawlessly on my ThinkPad, the X270 I am using has the following spec:

  • i7–7600U
  • Intel 620 Graphics
  • 16 GB RAM / 256 GB SSD
neofetch — on ThinkPad X270

However, after using the laptop for a while, I noticed there are some very minor but visible flickering on the LCD panel. Especially when displaying darker images.

I was very worried that this is a hardware issue since I purchased this laptop used on eBay for only 129$.

However, while I was exploring the BIOS to see if some settings are making the display flicker (power save measures), I noticed that there is no flickering on the display when in BIOS, which means this is just a software issue.

After researching the topics a bit, I found a thread on Ask Ubuntu forums talking about a similar issue.

It turns out that there are some power safe measures in the intel graphics driver causing this flickering issue. And here are the commands, and steps to turn it off on Fedora 38:

NOTE: The following instructions only works with i915 driver.

1. Verify your driver first:

Make sure you are actually using the i915 driver.

lspci -k | grep -A 2 VGA

# output:
# 00:02.0 VGA compatible controller: Intel Corporation HD Graphics 620 (rev 02)
# Subsystem: Lenovo Device 5062
# Kernel driver in use: i915 <----THIS CONFIRMS YOUR DRIVER

2. Once you confirmed that you are using i915 driver, you can edit your grub config in the following dir etc/default/grub :

cat etc/default/grub

And you will see the following output:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
#######################
# NOTICE THIS LINE:
# Append the STRING after GRUB_CMDLINE_LINUX using a space to seperate arguments:
# and add "i915.enable_psr=0"
#######################
GRUB_CMDLINE_LINUX="rd.luks.uuid=luks-bfaa87d9-1ae7-4671-980b-115ecb09c84b rhgb quiet i915.enable_psr=0"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

Edit the GRUB_CMDLINE_LINUX to add "i915.enable_psr=0" to it, and using a space to seperate values in string. This argument will disable the PSR (Panel Self-Refresh) feature of the i915 driver, this PSR is also causing issues on some Windows machine too, but they can use GUI to turn it off.

3. After finishing editing the grub you will now need to generate a new grub config and apply it to the system:

On Fedora, it uses grub2 so we need to use the following command:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

4. And the last step is just to reboot the system with the new change in effect. We will notice that the flickering is no longer there.

Fedora 38 is great, I have being using it as my daily driver on the ThinkPad X270. For this guide, I referenced the question asked on Ask Ubuntu, and I used ChatGPT to help me understand some of the commands.

--

--