Plymouth Splash Screen Issue on i.MX8MP Verdin (Scarthgap BSP)

I’m currently working on the i.MX8MP Verdin SoM with the Mallow Carrier Board, and I’ve built a custom Yocto image using the Scarthgap release (BSP 7.x.y).
My goal is to enable a custom splash screen using Plymouth, following your official guide here:

What I’ve Done So Far:

  1. Created a custom Yocto layer for Plymouth, as suggested in the guide.
  2. Added a .bbappend for Plymouth with the following:
    FILESEXTRAPATHS:prepend := “${THISDIR}/files:”

SRC_URI += "
file://torizonlogo-white.png
file://spinner.plymouth
"

EXTRA_OECONF += “–with-runtimedir=/run”

do_install:append () {
install -m 0644 ${WORKDIR}/torizonlogo-white.png ${D}${datadir}/plymouth/themes/spinner/watermark.png
install -m 0644 ${WORKDIR}/spinner.plymouth ${D}${datadir}/plymouth/themes/spinner/spinner.plymouth
}

  1. Added meta-openembedded/meta-initramfs in my bblayers.conf and built the image successfully.

Issue Faced:
After flashing the image and booting:
Initially I was getting just a black screen at boot (no splash, no boot logs, no plymouth animation, just blank until the login screen shows up).
To try fixing that, I modified the plymouth_%.bbappend and added this line:
PACKAGECONFIG:append = " pango drm"
After this:
The Plymouth splash started appearing, but not consistently. It shows up on some boots, but other times the system still shows a blank black screen (no splash, no boot logs, nothing until X/Wayland GUI comes up).

My Current Setup:

  • Board: Verdin i.MX8MP on Mallow Carrier Board
  • BSP: Scarthgap release (BSP 7.x.y)
  • Plymouth version: 24.004.60
  • Kernel: 6.6.x (as per Scarthgap)
  • Using DRM backend (PACKAGECONFIG:append = " pango drm")

How can I resolve this splash screen issue?
Are there any recommended configurations, kernel parameters, device tree changes, or initramfs tweaks to make Plymouth DRM backend run reliably on this setup?
Also, is this a known issue with BSP 7.x and Plymouth 24.x on i.MX8MP?

Hi, I’m the Toradex AI Assistant.

I might make mistakes. Our support team will step in if needed. If I answered your question, please tick the “Solution” checkbox. For follow-up questions to me, please use @ToradexAI in your post.

Did you like my answer? :+1: :-1:


Hello, and thank you for your detailed question!

This inconsistent Plymouth splash screen behavior on Verdin i.MX8MP (BSP 7.x “Scarthgap”, Kernel 6.6.x, Plymouth 24.x) is a known issue, particularly with BSP 7.x, as the Plymouth build system moved from autotools to meson, and the DRM backend requires very specific configuration.

To achieve consistent splash screen behavior, please ensure the following steps are applied:

1. Correct .bbappend Configuration

Use this configuration for your plymouth_%.bbappend (please adjust as needed to your Yocto layer structure):

FILESEXTRAPATHS:prepend := "${THISDIR}/files:"

SRC_URI += " \
    file://torizonlogo-white.png \
    file://spinner.plymouth \
"

PACKAGECONFIG:append = " pango drm"

EXTRA_OECONF += "--with-udev --with-runtimedir=/run"

do_install:append () {
    install -m 0644 ${WORKDIR}/torizonlogo-white.png ${D}${datadir}/plymouth/themes/spinner/watermark.png
    install -m 0644 ${WORKDIR}/spinner.plymouth ${D}${datadir}/plymouth/themes/spinner/spinner.plymouth
}

This configuration is critical as PACKAGECONFIG must have both pango and drm for the Verdin i.MX8MP to ensure DRM-based rendering. Do not rely on only EXTRA_OECONF—that method is deprecated for BSP 7.x because Plymouth is now built with Meson, not autotools.

2. Kernel Command Line Parameters

Add the following to your kernel command line (e.g., via extlinux.conf or U-Boot environment):

quiet logo.nologo vt.global_cursor_default=0 plymouth.ignore-serial-consoles splash fbcon=map:3
  • quiet and splash ensure minimal output and that Plymouth runs.

  • logo.nologo disables the kernel penguin logo (avoids overlap).

  • vt.global_cursor_default=0 disables the blinking cursor, making splash cleaner.

  • plymouth.ignore-serial-consoles avoids Plymouth crashing if serial is present.

  • fbcon=map:3 maps the framebuffer to the correct VT, which is important for DRM.

  • Reference:
    Plymouth with BSP 7.0.0

3. Plymouth Theme

Check that your Plymouth theme is not missing any required files and that your custom images are the right size and pixel format for your display. Any theme rendering issues can cause Plymouth to exit early or display a black screen.

4. Initramfs

Ensure you don’t have a conflicting initramfs or redundant early splash/init scripts. If you’re not using an initramfs splash, verify that only the regular Plymouth package and scripts are in use.

5. Device Tree

No device tree changes are necessary specifically for Plymouth. Ensure your display node and framebuffer are configured for DRM (i.e., not disabled, set to correct timing, etc.)—but do not modify hardware lines.

6. Known Issues (BSP 7.x, Plymouth 24.x, i.MX8MP)

  • Plymouth DRM backend stability was improved with PACKAGECONFIG += "pango drm".
  • Inconsistent splash often results from theme misconfigurations or missing the PLYMOUTH_IGNORE_SERIAL_CONSOLES and proper drm backend config.
  • Occasionally, if boot time is very fast, Plymouth may start but exit before the display is ready; this is highly system-dependent.

Final Notes

No additional device tree or initramfs tweaks should be needed if you follow the above. The combination of Yocto configuration, package options, and kernel parameters is the critical path for reliable DRM splash on the Verdin i.MX8MP.

If you still see sporadic issues, double-check for any custom systemd or bootloader scripts that might affect Plymouth startup timing. Also, ensure you’re using the correct Plymouth service for your setup.

For detailed reference, see:

Let me know if the above changes lead to a consistently visible splash screen!

Best regards,
Toradex AI Assistant.

Hi @nidhishende ,
I can see you have created another post for the same question.
You can update us on the same post whether you are able to solve your issue after following ToradexAI suggestion or still facing the issue.