Skip to content
rommeswi edited this page Dec 22, 2023 · 5 revisions

grub Issues with UEFI

On the Surface Pro 8 it may be necessary to downgrade the UEFI version before installing distributions that use grub to boot (e.g., Ubuntu, Fedora). If you only see a Windows logo when trying to boot, you are probably affected. Distributions that use systemd-boot (e.g., Arch, Manjaro) are not affected. For detailed information, see issue #1179.

Enable 120Hz and Solve Screen Flickering

By default, it seems that the upstream kernel (which based by many Linux distribution's kernel and linux-surface kernel) have implement something that change into this behaviour. (see #905 comment)

This instruction will enable 120Hz for SP8, and at the same time solve screen flickering issue. However 60Hz will be no longer available (you'll need to undo the instruction 11. to 13. to use 60Hz if needed).

In summary, you'll need to generate a working EDID, add it in initramfs, and then modify GRUB config to override the default EDID.

To Generate EDID

  1. Switch to X11 if you haven't done so (120Hz will work on Wayland but the EDID tool only support X11)
  2. Download this tool (Credit: https://www.monitortests.com/forum/Thread-Custom-Resolution-Utility-CRU)
  3. Install wine (the above tool is written for Windows but works fine under wine)
  4. Run "CRU.exe" using wine.
  5. Follow the instruction 1. and 2. in here to modify EDID.
  6. Click "Export..." and save the EDID to somewhere you can easily find. Whatever name is ok. (e.g. edid.bin)

To Add EDID Into initramfs

  1. Make a directory /usr/lib/firmware/edid
  2. Put your generated EDID into /usr/lib/firmware/edid (i.e. /usr/lib/firmware/edid/edid.bin)
If you're running Arch:
  1. Open /etc/mkinitcpio.conf and modify the FILES line like this: FILES="/usr/lib/firmware/edid/edid.bin"
  2. Run sudo mkinitcpio -P to add EDID into initramfs
If you're running Fedora/CentOS/RHEL:
  1. Create a file /etc/dracut.conf.d/99-local.conf and put this into the file and save: install_items+=" /usr/lib/firmware/edid/edid.bin " (Note that do not ommit the extra spaces between quotation marks)
  2. Run sudo dracut --regenerate-all --force to add EDID into initramfs

To Configure GRUB

  1. Open /etc/default/grub and add drm_kms_helper.edid_firmware=eDP-1:edid/edid.bin to GRUB_CMDLINE_LINUX_DEFAULT (create one if this line doesn't exist) and save.
If you're running Arch:
  1. Run sudo update-grub to apply GRUB configuration.
If you're running Fedora/CentOS/RHEL:
  1. Run sudo grub2-mkconfig to apply GRUB configuration.

Finally Reboot and Check Result

  1. sudo reboot (or any other way you like)
  2. You should see your Surface Pro 8 running in 120Hz immediately after reboot. If so, you can now switch to Wayland if you wish.

For more details and the discussion please visit issue #825.

Clone this wiki locally