1

My PC specs:

  • Motherboard: Asus Maximus V Gene
  • CPU: Intel Core i7 3770
  • GPU: nVidia GeForce GTX 780 Ti
  • Monitor: SAMSUNG C27JG50QQI 27" 144Hz

OS:

  • Arch Linux 5.3.7-arch1-1-ARCH

I have to use DisplayPort connection, because my GPU can provide 144 Hz frequency only thru this connection.

My problem is that I can't see anything on monitor until OS booted. But when GRUB loaded I can see black screen with backlight. Monitor works (power led not blinking), but it shows nothing.

When OS loaded, everything works perfect. If I try to connect second monitor via HDMI, DP-monitor will sleep (power led is blinking) until OS booted; and on the second (HDMI) monitor I can see everything: BIOS, GRUB, etc.

The problem manifests itself exclusively when connected via DisplayPort. Any other GPU interfaces works well.

BIOS mode is UEFI and Legacy both enabled. Motherboard and GPU BIOS is default and I don't want to update them. I dont't need to change BIOS settings regulary, but I want to see GRUB menu.

How can I try to configure GRUB to load any driver or special mode to fix this problem?

Here is my current GRUB config:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
insmod part_gpt
insmod part_msdos
if [ -s $prefix/grubenv ]; then
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="0"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_msdos
insmod ext2
set root='hd0,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,msdos5' --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  64927bd4-fea7-4e9c-9a30-18bd16b6f52a
else
  search --no-floppy --fs-uuid --set=root 64927bd4-fea7-4e9c-9a30-18bd16b6f52a
fi
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=en_US
  insmod gettext
fi
terminal_input console
terminal_output gfxterm
insmod part_msdos
insmod ext2
set root='hd0,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,msdos5' --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  64927bd4-fea7-4e9c-9a30-18bd16b6f52a
else
  search --no-floppy --fs-uuid --set=root 64927bd4-fea7-4e9c-9a30-18bd16b6f52a
fi
insmod gfxmenu
loadfont ($root)/boot/grub/themes/Vimix/unifont-regular-16.pf2
insmod jpeg
insmod png
set theme=($root)/boot/grub/themes/Vimix/theme.txt
export theme
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
  set timeout=5
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-64927bd4-fea7-4e9c-9a30-18bd16b6f52a' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos5'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,msdos5' --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  64927bd4-fea7-4e9c-9a30-18bd16b6f52a
    else
      search --no-floppy --fs-uuid --set=root 64927bd4-fea7-4e9c-9a30-18bd16b6f52a
    fi
    echo    'Loading Linux linux ...'
    linux   /boot/vmlinuz-linux root=UUID=64927bd4-fea7-4e9c-9a30-18bd16b6f52a rw  quiet video=DP-1:e
    echo    'Loading initial ramdisk ...'
    initrd  /boot/intel-ucode.img /boot/initramfs-linux.img
}
submenu 'Advanced options for Arch Linux' $menuentry_id_option 'gnulinux-advanced-64927bd4-fea7-4e9c-9a30-18bd16b6f52a' {
    menuentry 'Arch Linux, with Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-64927bd4-fea7-4e9c-9a30-18bd16b6f52a' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos5'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,msdos5' --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  64927bd4-fea7-4e9c-9a30-18bd16b6f52a
        else
          search --no-floppy --fs-uuid --set=root 64927bd4-fea7-4e9c-9a30-18bd16b6f52a
        fi
        echo    'Loading Linux linux ...'
        linux   /boot/vmlinuz-linux root=UUID=64927bd4-fea7-4e9c-9a30-18bd16b6f52a rw  quiet video=DP-1:e
        echo    'Loading initial ramdisk ...'
        initrd  /boot/intel-ucode.img /boot/initramfs-linux.img
    }
    menuentry 'Arch Linux, with Linux linux (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-64927bd4-fea7-4e9c-9a30-18bd16b6f52a' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos5'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,msdos5' --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  64927bd4-fea7-4e9c-9a30-18bd16b6f52a
        else
          search --no-floppy --fs-uuid --set=root 64927bd4-fea7-4e9c-9a30-18bd16b6f52a
        fi
        echo    'Loading Linux linux ...'
        linux   /boot/vmlinuz-linux root=UUID=64927bd4-fea7-4e9c-9a30-18bd16b6f52a rw  quiet video=DP-1:e
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initramfs-linux-fallback.img
    }
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###


### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry "Windows 10" --class windows --class os {
insmod ntfs
set root='(hd0,1)'
search --no-floppy --fs-uuid --set E2D01551D0152CF3
chainloader +1
}
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
1

Unfortunately, the GPU BIOS has a built-in priority order in which it probes the output connectors in order to find the "primary" display at boot time. The first connected display will get the boot messages, and any other displays will get no picture until the OS is loaded and its GPU drivers activate the other connectors.

Changing the priority order would require changing the GPU BIOS. Apparently some GPU vendors have made custom BIOS versions on request sometimes in the past, as the required change seems to not be very complex.

But the fact that the DisplayPort-connected monitor wakes up seems to indicate that its presence at least is detected correctly. It might be that the 144 Hz capabilities confuse the BIOS and it fails to configure the DisplayPort output for proper signal.

The first 144 Hz flat-screen computer displays seem to have arrived to the market in year 2012; the GeForce 700 series was released just one year later, so I think the 144 Hz-capable displays were still quite rare at that time, and the GPU BIOS of the 700 series might well have some bugs in 144 Hz support.

Hypothetically, adding a driver to GRUB would be as simple as dropping a driver module (let's call it video_nvidia.mod) to /boot/grub/i386-pc, adding insmod video_nvidia to your GRUB configuration, and then adding any configuration settings the module might support. But the problem is, as far as I know, nobody has yet made such a driver for GRUB!

  • Yes, I agree. I also doubt that such drivers exist. It just surprised me that at the time of the GRUB working, if the DP monitor is the only one, then it is "trying" to show something. I thought that at least something could be done to get it works fine... – ZPro Oct 23 at 19:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.