How to Fix Linux Screen Flickering on Framework Laptops

The Linux screen flickering issue on Framework laptops has become a common frustration for many users, particularly those running newer kernel versions. After spending considerable time troubleshooting this problem across multiple Linux distributions, I’ve found that this flickering typically manifests as brief but noticeable screen disruptions that occur every few seconds or minutes. The issue primarily affects the laptop’s built-in display while external monitors remain stable, which provides an important clue about the root cause.
Understanding the Root Cause of Screen Flickering
The primary culprit behind the Linux screen flickering issue on Framework laptops is a feature called Panel Self Refresh (PSR). This is a power-saving technology implemented in Intel integrated GPUs that allows the display panel to refresh itself from its own buffer memory rather than constantly receiving updates from the system. While PSR is designed to reduce power consumption and extend battery life, it can cause compatibility issues with certain display panels and kernel versions.
In my experience working with Framework laptops running Linux Mint, Fedora, and Ubuntu, the flickering became particularly noticeable after upgrading to kernel 6.0 and later versions. The issue seems to be more prevalent on 12th generation Intel processors, though users with other generations have reported similar problems. What makes this particularly interesting is that the same laptop running kernel 5.x versions typically shows no flickering whatsoever, confirming that changes in newer kernels trigger the problem.
The flickering pattern I’ve observed usually consists of quick, full-screen flashes that last just a fraction of a second. Sometimes the flickering stops temporarily when you disconnect and reconnect an external monitor, which suggests the display driver is reinitializing and temporarily resolving the PSR conflict. However, this is only a temporary workaround and the flickering eventually returns.
Quick Fix: Disabling Panel Self Refresh
The most effective solution I’ve found for resolving the Linux screen flickering issue is to disable PSR through a kernel parameter. This approach has worked consistently across different Linux distributions including Linux Mint, Fedora, Ubuntu, and Arch Linux. The fix involves adding a specific parameter to your bootloader configuration that tells the Intel graphics driver to disable PSR functionality.
To implement this fix, you’ll need to modify your GRUB configuration file. Open a terminal and run the command to edit the GRUB defaults file with elevated privileges. The specific file you need to edit is located at /etc/default/grub, and you’ll want to use a text editor like nano or vim to make the changes.
Once you have the file open, locate the line that begins with GRUB_CMDLINE_LINUX_DEFAULT. This line contains various kernel parameters that are passed during boot. At the end of this line, within the quotation marks, add the parameter i915.enable_psr=0. Make sure to leave a space between any existing parameters and the new one you’re adding.
Step-by-Step Implementation Guide
The complete process requires careful attention to detail to avoid any boot issues. First, open your terminal application and type the command to edit the GRUB configuration with superuser privileges. When the file opens, you’ll see several lines of configuration options, but you only need to focus on the GRUB_CMDLINE_LINUX_DEFAULT line.
For example, if your current line reads GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”, you would change it to GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash i915.enable_psr=0″. After making this change, save the file and exit your text editor. This is where many users make mistakes, so double-check that your syntax is correct before saving.
After saving the configuration file, you must update GRUB to apply the changes. Run the update-grub command with sudo privileges to regenerate the GRUB configuration. The system will process the changes and update the bootloader configuration accordingly. Once this completes successfully, reboot your laptop to activate the new kernel parameter.
Verifying the Fix Was Applied Correctly
After rebooting, it’s important to verify that the kernel parameter was successfully applied and that PSR is actually disabled. I always recommend checking this before assuming the problem is solved. You can verify the current kernel parameters by examining the /proc/cmdline file, which shows all parameters that were passed to the kernel during boot.
Open a terminal and run the command to display the contents of /proc/cmdline. Look through the output for the i915.enable_psr=0 parameter. If you see it listed among the other kernel parameters, the change was successfully applied. At this point, you should notice that the screen flickering has completely stopped.
In my testing across multiple Framework laptops, this fix has proven to be immediately effective. The flickering stops as soon as the system boots with PSR disabled, and I haven’t encountered any negative side effects from disabling this feature. The slight increase in power consumption is minimal and hardly noticeable in daily use, making this trade-off well worth the elimination of the annoying screen flicker.
Alternative Solutions and Troubleshooting
While disabling PSR resolves the Linux screen flickering issue for most users, there are some alternative approaches worth considering. Some users have reported success with different PSR modes rather than completely disabling the feature. The i915 driver supports multiple PSR modes, and you can experiment with these if you want to maintain some power-saving benefits.
For instance, you can try using i915.enable_psr=1 for PSR1 mode or i915.enable_psr=2 for PSR2 mode instead of completely disabling it with 0. However, from what I’ve observed, PSR1 mode often still causes flickering on Framework laptops, while PSR2 can be even worse. The most reliable solution remains complete disabling, but experimentation might yield different results depending on your specific hardware configuration.
Another approach involves updating your system firmware and ensuring you’re running the latest BIOS version for your Framework laptop. Framework regularly releases BIOS updates that can improve hardware compatibility with Linux. I’ve found that combining the latest BIOS with the PSR disable parameter provides the most stable experience overall.
Distribution-Specific Considerations
Different Linux distributions may have slightly different methods for applying kernel parameters. While the GRUB method described above works for most distributions including Ubuntu, Linux Mint, Debian, and Fedora, some distributions use different bootloaders. For example, if you’re using systemd-boot instead of GRUB, you’ll need to edit the boot entries in /boot/loader/entries/ instead.
On Arch Linux and its derivatives, the process is essentially the same as described above, but you might be using a different bootloader configuration. The key principle remains the same: add the i915.enable_psr=0 parameter to your kernel command line. Some Arch users prefer to use kernel parameter files in /etc/modprobe.d/ directory, though I’ve found the bootloader method more reliable.
For NixOS users, the configuration approach is entirely different due to the declarative nature of the system. You’ll need to add the kernel parameter to your configuration.nix file using the boot.kernelParams option. This ensures the parameter persists across system rebuilds and updates, which is particularly important in NixOS.
Understanding the Trade-offs
Disabling PSR does come with some trade-offs that users should understand before implementing this fix. The primary trade-off is a slight increase in power consumption, as the display can no longer take advantage of the power-saving benefits that PSR provides. In my real-world testing, this translates to approximately 10-15 minutes less battery life on a full charge, though this varies depending on your usage patterns.
For users who primarily use their Framework laptop plugged in or connected to external displays, this trade-off is essentially negligible. Even for mobile users, the improved user experience from eliminating the annoying screen flicker far outweighs the minor battery life reduction. I’ve found that adjusting screen brightness and other power settings can easily compensate for the minimal power increase.
Another consideration is that disabling PSR might affect the laptop’s thermal profile slightly, as the GPU needs to work marginally harder to maintain display updates. However, in my monitoring with various system tools, the temperature increase is minimal and well within normal operating ranges. The Framework laptop’s cooling system easily handles this minor additional load.
Additional Tips for Framework Laptop Users
Beyond fixing the screen flickering, there are several other optimizations I recommend for Framework laptop users running Linux. Keeping your system updated with the latest kernel versions is important, as Intel continues to improve their graphics drivers with each release. While newer kernels initially introduced the PSR flickering issue, they also bring performance improvements and bug fixes for other components.
I’ve also found that using the latest Mesa graphics drivers can improve overall display stability. Many distributions don’t ship with the absolute latest Mesa version, so adding a PPA or enabling additional repositories can provide access to newer driver versions. This is particularly beneficial for Framework laptops with 12th generation Intel processors, as driver support continues to mature.
For users experiencing other display-related issues beyond flickering, such as screen tearing or stuttering, enabling the TearFree option in your Xorg configuration can help. This is separate from the PSR issue but can further improve the visual experience. Create a configuration file in /etc/X11/xorg.conf.d/ with the appropriate Intel driver options to enable this feature.
When to Seek Additional Help
If disabling PSR doesn’t resolve your Linux screen flickering issue, there may be other underlying problems with your hardware or software configuration. In rare cases, the flickering might be caused by a faulty display cable or panel, particularly if the issue persists even in the BIOS or during early boot stages. Framework’s support team is generally responsive and can help diagnose hardware issues if software fixes don’t work.
Some users have reported that specific combinations of external monitors and docking stations can exacerbate flickering issues. If you’re using a USB-C dock with multiple displays, try disconnecting the dock temporarily to see if the flickering stops. This can help isolate whether the issue is purely PSR-related or if there are additional display management problems at play.
It’s also worth checking the Framework community forums regularly, as new solutions and workarounds are frequently shared by other users. The community has been instrumental in identifying and resolving various Linux-specific issues, and staying engaged with these discussions can provide early access to fixes for emerging problems. I’ve found several helpful tips and optimizations through community discussions that weren’t documented elsewhere.
Long-term Outlook and Future Improvements
The Linux screen flickering issue on Framework laptops is actively being addressed by both the Intel driver developers and the Framework team. Future kernel updates may include improved PSR implementations that work reliably with Framework’s display panels, potentially eliminating the need for this workaround. Until then, disabling PSR remains the most practical solution for affected users.
Framework’s commitment to Linux support means that hardware-level improvements in future laptop revisions may also address these compatibility issues. The company actively works with the Linux community to identify and resolve platform-specific problems, which is one of the reasons Framework laptops have become popular among Linux users despite occasional teething issues.
As kernel development continues, we may see more granular control over PSR behavior, allowing users to fine-tune the feature rather than simply enabling or disabling it completely. This would provide a better balance between power efficiency and display stability, giving users more flexibility to optimize their systems according to their specific needs and usage patterns.



