plymouth splash screen shows vendor logo at incorrect aspect ratio (EFI-boot)

Polishing some things here on Tumbleweed KDE, EFI-booted Hewlett-Packard EliteBook machine. Such are these days … :\

What I observe: On this EFI-booted machine, Tumbleweed shows a plymouth splash screen with the machine’s vendor logo, spinner, and Tumbleweed “infinity logo + text” at boot and shutdown. The vendor logo (circular hp logo) is shown with grossly incorrect aspect ratio, while the circular spinner and the Tumbleweed logo/text are shown correctly.

What I researched: Starting from https://forums.opensuse.org/showthread.php/535609-New-splash-screen-appeared-on-Tumbleweed, I understand that plymouth is using plymouth-bgrt to show the EFI vendor logo, which ultimately seems to be stored in

/sys/firmware/acpi/bgrt

according the the web posts. The pic file

/sys/firmware/acpi/bgrt/image

indeed is the vendor logo, and on my machine it is a 89x116 pixels file - obviously incorrect, should be a square with the hp circle inside. 116:89=1.30337… is a funny aspect ratio anyway, none of 4:3, 16:9, 16:10 etc.

However, I seem to be stuck at that point. Even if I would boldly grab permission to edit that pic file (it is rrr), its modified date suggests that it gets regenerated at every boot. So I DON’T modify it.

Thus my questions are:

  1. How do I get a plymouth splash screen at EFI-boot with the machine’s vendor logo displayed correctly?
  2. Is the
/sys/firmware/acpi/bgrt/image

pic file in fact the one that plymouth-bgrt picks up at boot etc?

  1. Who generates that file with an obviously incorrect aspect ratio, plus the other settings files in that directory
xoffset

and

yoffset

which presumably are incorrect as well? Is it Tumbleweed, grub, or even the kernel?

Trying to find a culprit on my own:

  • My laptop
/etc/default/grub

file reads

# If you change this file, run 'sudo grub2-mkconfig -o /boot/grub2/grub.cfg' afterwards
# to update /boot/grub2/grub.cfg.
# grub2-mkconfig uses templates from /etc/grub.d
# and settings from /etc/default/grub (this file)

GRUB_DEFAULT=saved

GRUB_CMDLINE_LINUX_DEFAULT="splash=silent resume=/dev/disk/by-uuid/75015e19-2ca3-4a3f-9797-20b1de4c7153 quiet"
GRUB_CMDLINE_LINUX=""

# Uncomment to set your own custom distributor. If you leave it unset or empty,
# the default policy is to determine the value from /etc/os-release
GRUB_DISTRIBUTOR=

GRUB_TIMEOUT=5

# Uncomment to enable Hidden Menu, and optionally hide the timeout count
# in case there is only one Linux distro on the computer
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true

# Uncomment the following line to automatically save each last booted menu entry
# in GRUB2 environment variable `saved_entry', and set GRUB_DEFAULT=saved at the top.
# openSUSE Tumbleweed requires this line to be commented out, since btrfs filesystem
# can't store  a grubenv file. Otherwise, a 'sparse file not allowed' error is thrown
#GRUB_SAVEDEFAULT="true"
# Otherwise, set GRUB_DEFAULT=0

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
GRUB_TERMINAL="gfxterm"

# The resolution used on graphical terminal
# Note that you can use only modes which your graphic card supports via VBE
# You can see them in real GRUB with the command `vbeinfo'
GRUB_GFXMODE="auto"

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
GRUB_DISABLE_RECOVERY="true"
#GRUB_DISABLE_LINUX_RECOVERY="true"

# Uncomment to disable probing for further operating systems
GRUB_DISABLE_OS_PROBER="true"
# Uncomment and adapt filesystem UUIDs to make the os-prober skip certain partitions
#GRUB_OS_PROBER_SKIP_LIST="12345678-...@/dev/sdXM 87654321-...@/dev/sdYN"

# Uncomment to use boot commands linuxefi instead of linux and initrdefi instead of initrd
GRUB_USE_LINUXEFI="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

# Some settings specific for openSUSE
GRUB_BACKGROUND=
GRUB_THEME=/boot/grub2/themes/openSUSE/theme.txt
SUSE_BTRFS_SNAPSHOT_BOOTING="true"
GRUB_ENABLE_CRYPTODISK="n"
GRUB_CMDLINE_XEN_DEFAULT="vga=gfx-1024x768x16"


So I don’t see a screen resolution being set for grub explicitly. I am not sure about the GRUB_CMDLINE_XEN_DEFAULT setting which came in automatically at install, but I think XEN is a virtualization hypervisor, and I doubt that setting 1024x768 would influence plymouth in any way.

Thanks in advance for helping me in getting things a bit more polished.

Stay safe and healthy!

I really don’t know. But I have been assuming that this is all handled by a call to the firmware.

Hi
On the HP ProBook line of laptops I used to have, there was a (non-secure boot) HP tool for adding your own logo as well as booting to the efi-shell. From memory I had to set it to a strange resolution for it to fit at 1024x768 for boot.

Might be worth a bug report?

I’ve never observed this problem, because I always disable that splash logo. Plain text booting works for me, so I taboo Plymouth during installation. :wink:

Hi, thank you all for your comments. Since I have a default TW Installation regarding the "system“ itself, and since I would like to stick to it, and since I would like to contribute to TW being top-of-the-line and polished, I would like to file a bug report, even if the issue might be with certain machines only.

But, question is: Bug report towards whom? openSUSE Tumbleweed?

Guess it would be premature to target plymouth. And honestly, I don‘t know who fills the various /sys things at boot, i.e. who generates the pic file mentioned above.

There is a rich assortion at: https://bugzilla.opensuse.org/buglist.cgi?quicksearch=plymouth

I would try to uninstall all of these, reboot, watch for issues, and then reinstall, reboot and check for problems again. Sometimes this fixes issues:

erlangen:~ # zypper search --installed-only plymouth
Loading repository data...
Reading installed packages...

S | Name                       | Summary                                              | Type   
--+----------------------------+------------------------------------------------------+--------
i | plymouth                   | Graphical Boot Animation and Logger                  | package
i | plymouth-branding-openSUSE | openSUSE Tumbleweed branding for Plymouth bootsplash | package
i | plymouth-dracut            | Plymouth related utilities for dracut                | package
i | plymouth-plugin-label      | Plymouth label plugin                                | package
i | plymouth-plugin-label-ft   | Plymouth FreeType label plugin                       | package
i | plymouth-plugin-two-step   | Plymouth "two-step" plugin                           | package
i | plymouth-scripts           | Plymouth related scripts                             | package
i | plymouth-theme-bgrt        | Plymouth "bgrt" theme                                | package
i | plymouth-theme-spinner     | Plymouth "Spinner" theme                             | package
erlangen:~ # 

I briefly looked at my other Linux OS on this machine (multi-boot), Manjaro Xfce. The vendor logo pic file /sys/firmware/acpi/bgrt/Image there is the same distorted 89x116 HP logo. Manjaro doesn‘t have Plymouth installed. This would indicate to me that Plymouth itself is not responsible for that incorrect vendor logo, nor Tumbleweed, but actually the kernel itself or - more probably - the machine (UEFI?) firmware. Please correct me if that is an invalid conclusion. Cheers!

That seems right. I am suspecting that it is a UEFI firmware problem.

Asrock has:

erlangen:~ # exiftool /sys/firmware/acpi/bgrt/image
ExifTool Version Number         : 11.50
File Name                       : image
Directory                       : /sys/firmware/acpi/bgrt
File Size                       : 258 kB
File Modification Date/Time     : 2020:03:25 13:08:33+01:00
File Access Date/Time           : 2020:03:25 13:08:33+01:00
File Inode Change Date/Time     : 2020:03:25 13:08:33+01:00
File Permissions                : r--r--r--
File Type                       : BMP
File Type Extension             : bmp
MIME Type                       : image/bmp
BMP Version                     : Windows V3
Image Width                     : 424
Image Height                    : 208
Planes                          : 1
Bit Depth                       : 24
Compression                     : None
Image Length                    : 264576
Pixels Per Meter X              : 0
Pixels Per Meter Y              : 0
Num Colors                      : Use BitDepth
Num Important Colors            : All
Image Size                      : 424x208
Megapixels                      : 0.088
erlangen:~ # 

http://www.nefkom.net/charlemagne/Sample%20Portfolio/slides/image.jpg

As I recall Windows has an odd format for it’s boot screen images. This may be a result of HP bowing to M$

I did find an explanation and a solution for my problem. This exact issue has been described in this blog post https://hansdegoede.livejournal.com/20632.html. The point is that when operating the UEFI in CSM compatibility mode, then the graphics might be in classic VGA BIOS mode despite running overall in UEFI mode. This leads to a squashed vendor logo. Cf. question 2 in that Hans de Goede post.

So I switched from UEFI CSM to pure UEFI: Problem gone!

Remark: There have been (and still are) reasons for me to run my UEFI in CSM mode. First, I have an external Windows hard disk hooked up via eSATA, which is booting in BIOS mode. It is used occasionally for machine and accessory maintenance like firmware updating. Second, I have Clonezilla on a USB stick which I use for backups; it seemed easier to boot this one in BIOS mode. So I‘ll either run in pure UEFI mode now in order to have a nice Linux/plymouth boot screen, and switch my laptop BIOS to UEFI CSM when I need to boot into those special purpose systems. Or I‘ll stick to UEFI CSM for reasons of laziness and keep the squashed vendor logo at boot.

Anyway, my issue is clarified and solved now.