no second (external) screen on early boot process with HDMI

I’ve a notebook in a dockingstation with an attached external monitor. When I used the old monitor via VGA, everything worked fine. Now with a new monitor attached to HDMI, I can’t see the boot process until encrypted devices are setted up (see boot process below).
It works neither with HDMI on dockingstation (via DVI-HDMI adapter, see Hardware configuration below), nor HDMI directly plugged into the laptop. Also digital sound doesn’t work via HDMI, I’ve to use the analogue sound via an extra cable (but this seems to be a common problem…).

Maybe there is a restriction from the graphics adapter (inbuild Intel HD Graphics 3000, see below) or laptop hardware (<HDMI 1.3, see xrandr output below) or monitor (HDMI 1.4)?
Any idea?

Hardware configuration:

  • notebook with VGA and HDMI output, Intel HD Graphics 3000 based on CPU Intel Core i5-2520M 2.50 GHz
  • dockingstation with VGA and DVI-D output (HDMI over DVI-D)
  • external monitor with HDMI, VGA and DisplayPort input
    external monitor is connected via a DVI-HDMI adapter (on dockingstation) and HDMI cable

Boot process:
laptop screen only:

  • grub2, initial boot from unencrypted /boot/efi
  • password request for encrypted partitions (LVM with /(root), /home, swap)
  • boot screen comes up, selection of openSUSE
  • loading initial ramdisk
  • boot.log starts (OK - Started Show Plymouth Boot Screen…)
    second (external) screen comes up, first entries I can see from boot.log:
  • OK - Started File System Check on /dev/mapper/system-root
  • Mounting /sysroot…
  • OK - Mounted /sysroot

I tried the following:

  • putted ‘video=LVDS-1:e video=HDMI-2: D’ into kernel command line, but didn’t work
  • connected the external monitor directly to the laptop via HDMI (without docking station), didn’t work
  • changed the HDMI adapter and cable, didn’t work

What’s also strange:
The notebook itself has a VGA and HDMI connector, the dockingstation a VGA and DVI-D.
xrandr -q says (in dockingstation with new monitor, no DVI but two HDMI!?):
Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
LVDS1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 260mm x 160mm
1280x800 58.48*+
(and more…)
DP1 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
HDMI2 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 530mm x 300mm
1920x1080 60.00*+ 50.00 59.94
(and more…)
VGA1 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

comparing this with laptop standalone is nearly the same, except it’s HDMI1:
HDMI1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 530mm x 300mm
1920x1080 60.00*+ 50.00 59.94 …
HDMI2 disconnected (normal left inverted right x axis y axis)

VGA is analog - It sends signals all the time - All chipsets that do VGA automatically sends signals - even if the monitor cannot support that resolution.
HDMI is digital and will not send signals until it see the EDID from the Monitor/TV tells it what format it needs - some drivers allow you to overwrite the EDID but not until the Linux Kernel finished loading the drivers.
Unless the Laptop BIOS enables the HDMI on power up (I don’t think that it sees the docking station). You will not see anything until the docking station is asked for EDID buy the video driver.

My Dell Laptop is connected via HDMI and on initial power up - no HDMI video until Linux initializes the HDMI port. Or reboots - I sometimes get the Dell logo and see the boot on the HDMI connected monitor/TV - not every time.

It’s common for xrandr to report output names that do not match the output connector types. These are from three of my Intel IGP PCs:

## big41 modesetting driver
# DVI connector alias	CRTC HDMI-1
# VGA connector alias	CRTC VGA-1

## ab250 modesetting driver
# DP connector alias	CRTC DP-1
# DVI connector	alias	CRTC HDMI-3
# HDMI connector alias	CRTC HDMI-2
# VGA connector alias	CRTC DP-2
# CRTC HDMI-1 phantom/unused
# DP MST daisy chain DP CRTCs DP-1-1 (end) & DP-1-8 (between)

## gb250 modesetting driver
# DP connector alias	CRTC DP-1
# DVI connector alias	CRTC HDMI-2
# HDMI connector alias	CRTC HDMI-1
# VGA connector alias	CRTC DP-2
# CRTC HDMI-3 phantom/unused
# DP MST daisy chain DP CRTCs DP-1-1 (end) & DP-1-8 (between)

Your unhyphenated output names indicates the DDX employed is provided by package xf86-video-intel. It’s possible switching to an alternate DDX could change the behavior. Switching to it can normally be done simply by removing the xf86-video-intel package with zypper or YaST. If it doesn’t help, re-install it, or not. Whether one is better than the other can only be determined by trial on a system by system basis.

thanks for the quick answers

What I understood from larryr is, that I need the kernel to ‘switch on’ the external monitor, if it’s a HDMI.

What I wrote on the beginning is not correct. My old monitor wasn’t plugged in via VGA but DVI-D and it worked at boot start. So it was digital and it’s said, that DVI-D is (more or less!) compatible to HDMI(1.0?). But maybe not.

It’s possible to switch on the external output in BIOS ‘Select display terminal’ (Auto->External DVI, no HDMI!), but it doesn’t work too (comment in BIOS says: ‘This setting is not effective after operation system starts up’).

So maybe I’ve to live with this slightly uncomfortable ‘feature’.

additional:
As I said for boot process, first entries I can see from boot.log on external HDMI screen is ‘OK - Started File System Check on /dev/mapper/system-root
But as far I can recognize it’s the moment when ‘OK - Started Plymouth switch root service’ the external screen comes up. maybe it’s one of the lines before which ‘switches on’ the external HDMI.

boot.log:
[0;32m OK [0m] Started Show Plymouth Boot Screen.
[0;32m OK [0m] Started Forward Password Requests to Plymouth Directory Watch.
[0;32m OK [0m] Reached target Paths.
[0;32m OK [0m] Found device HGST_HTS721010A9E630 LVM.
Starting Cryptography Setup for cr_ata-HGST_HTS721010A9E630_JS1007620GB3DY-part3…
[0;32m OK [0m] Found device HGST_HTS721010A9E630 EFI.
[0;32m OK [0m] Started Cryptography Setup for cr_ata-HGST_HTS721010A9E630_JS1007620GB3DY-part3.
[0;32m OK [0m] Reached target Local Encrypted Volumes.
[0;32m OK [0m] Found device /dev/system/swap.
Starting Resume from hibernation using device /dev/system/swap…
[0;32m OK [0m] Started Resume from hibernation using device /dev/system/swap.
[0;32m OK [0m] Reached target Local File Systems (Pre).
[0;32m OK [0m] Found device /dev/mapper/system-root.
[0;32m OK [0m] Reached target Initrd Root Device.
[0;32m OK [0m] Started dracut initqueue hook.
[0;32m OK [0m] Reached target Remote File Systems (Pre).
[0;32m OK [0m] Reached target Remote File Systems.
Starting File System Check on /dev/mapper/system-root…
[0;32m OK [0m] Started File System Check on /dev/mapper/system-root.
Mounting /sysroot…
[0;32m OK [0m] Mounted /sysroot.
[0;32m OK [0m] Reached target Initrd Root File System.
Starting Reload Configuration from the Real Root…
[0;32m OK [0m] Reached target Local File Systems.
[0;32m OK [0m] Reached target System Initialization.
[0;32m OK [0m] Reached target Basic System.
[0;32m OK [0m] Started Reload Configuration from the Real Root.
[0;32m OK [0m] Reached target Initrd File Systems.
[0;32m OK [0m] Reached target Initrd Default Target.
Starting Cleaning Up and Shutting Down Daemons…
[0;32m OK [0m] Stopped target Remote File Systems.
[0;32m OK [0m] Stopped target Remote File Systems (Pre).
[0;32m OK [0m] Stopped dracut initqueue hook.
[0;32m OK [0m] Stopped target Timers.
[0;32m OK [0m] Stopped target Initrd Default Target.
[0;32m OK [0m] Stopped target Initrd Root Device.
[0;32m OK [0m] Stopped target Basic System.
[0;32m OK [0m] Stopped target Sockets.
[0;32m OK [0m] Stopped target System Initialization.
[0;32m OK [0m] Stopped target Swap.
[0;32m OK [0m] Stopped Apply Kernel Variables.
[0;32m OK [0m] Stopped Load Kernel Modules.
[0;32m OK [0m] Stopped udev Coldplug all Devices.
[0;32m OK [0m] Stopped dracut pre-trigger hook.
[0;32m OK [0m] Stopped target Local Encrypted Volumes.
Stopping udev Kernel Device Manager…
[0;32m OK [0m] Stopped target Paths.
[0;32m OK [0m] Stopped target Slices.
[0;32m OK [0m] Stopped target Local File Systems.
[0;32m OK [0m] Stopped target Local File Systems (Pre).
Starting Plymouth switch root service…

I suppose that the problem is maybe in the combination of GRUB2 and EFI.

With EFI, boot starts in the EFI partition (later mounted as /boot/efi) with a very small grub.cfg (SUSE specific? as /boot/efi/EFI/opensuse/grub.cfg).
content of /boot/efi/EFI/opensuse/grub.cfg:

set btrfs_relative_path=“yes”
cryptomount -u 347d974a37734ad0b263d9d7ab3d64fc
search --fs-uuid --set=root ed6a960a-53b8-4a08-b583-92c271a0793e
set prefix=(${root})/boot/grub2
source “${prefix}/grub.cfg”

Then GRUB2 asks for password of encrypted partions (LVM with root resp. /boot) and keeps on with /boot/grub2/grub.cfg.

For the GRUB2 video modules, there are two opportunities:
/usr/share/grub2/i386-pc/video.lst: modules vbe, vga, video_bochs and video_cirrus
/usr/share/grub2/x86_64-efi/video.lst: modules efi_gop and efi_uga

GRUB2 with EFI uses in my case efi_gop. GRUB-Shell command videoinfo says:

grub> videoinfo
List of supported video modes:
Adapter ‘EFI GOP driver’

  • 0x000 1024 x 768 x 31…

This is too poor resp. not supported by my HDMI monitor.

I tried to put extra lines to /boot/efi/EFI/opensuse/grub.cfg
set gfxmode=1920x1080
insmod gfxterm

but this don’t help.

So I assume, the poor driver /usr/share/grub2/x86_64-efi/efi_gop.mod is the problem.

Any idea where I could address a demand for better resolutions for this driver?

Instead of video=HDMI-2: D’ on kernel command line you could try video=HDMI2:1920x1080D’ or video=HDMI2[noparse]:D[/noparse]’. When using modesetting DDX, CTRC names have the hyphens, but when using the intel DDX, there is no hyphen. video=HDMI-2: D’ I think is invalid due to the whitespace you included.

Hello mrmazda,

thanks for your answer. But this wouldn’t work, cause it’s too late. It would be in the kernel line, so lately called after boot menu. The early request for password (from GRUB2 EFI boot) or the boot menu itself wouldn’t be effected :frowning:

Grub handles video for its menu completely independently from how the kernel and X do.

Hello mrmazda,

as I know, video in GRUB is influenced by the variable gfxmode (e.g. set gfxmode=auto). GRUB2 docu says:
*If this variable is set, it sets the resolution used on the ‘gfxterm’ graphical terminal. Note that you can only use modes which your graphics card supports via VESA BIOS Extensions (VBE), so for example native LCD panel resolutions may not be available. The default is ‘auto’, which selects a platform-specific default that should look reasonable. Supported modes can be listed by ‘videoinfo’ command in GRUB.
*What videoinfo in my case says is above. I tried different things for gfxmode to ‘trigger’ my external HDMI, but it didn’t work.
And still my problem is that ‘early’ GRUB2 EFI don’t use the variable (I tried it also, see above).

So I assume it’s either what larryr said at the beginning (I need the kernel to ‘switch on’ the external monitor - late) or GRUB video is too poor to use the external HDMI.
But maybe I will address it to the GRUB people to get an answer.