Plymouth boot logo

Hi,
I’m trying to use Plymouth to show our boot logo. Right now, the display backlight only turns on at around ~7 seconds after boot starts, and before that, the screen stays black for quite a long time.

My problem is similar to this thread:
https://community.toradex.com/t/no-splash-screen-with-plymouth/26463

I’ve also created a plymouth_%.bbappend file based on the documentation here:
https://developer.toradex.com/linux-bsp/os-development/boot/how-to-add-custom-splash-screen/

When I reboot the board, I can briefly see our logo before the display powers off again, and then it stays black until about 7 seconds into the boot, when it finally shows our application.

Here’s the relevant part of the dmesg log:

torizon@verdin-imx8mp-15601689:~$ dmesg | grep -E "drm|lvds|panel"
[    0.069965] /ldb-display-controller/lvds-channel@0: Fixed dependency cycle(s) with /soc@0/bus@32c00000/lcd-controller@32e90000
[    0.070083] /ldb-display-controller/lvds-channel@0: Fixed dependency cycle(s) with /panel-lvds-native
[    4.884377] systemd[1]: Starting Load Kernel Module drm...
[    4.970714] systemd[1]: modprobe@drm.service: Deactivated successfully.
[    4.971287] systemd[1]: Finished Load Kernel Module drm.
[    5.102101] [drm] Initialized vivante 1.0.0 20170808 for 40000000.mix_gpu_ml on minor 0
[    6.808223] imx-drm display-subsystem: bound imx-lcdifv3-crtc.0 (ops lcdifv3_crtc_ops)
[    6.808688] imx-drm display-subsystem: bound ldb-display-controller (ops imx8mp_ldb_ops [imx8mp_ldb])
[    6.809180] [drm] Initialized imx-drm 1.0.0 20120507 for display-subsystem on minor 1
[    6.812887] imx-drm display-subsystem: [drm] fb0: imx-drmdrmfb frame buffer device

Do you have any idea how to make the LVDS display turn on earlier, so it could at least show the Plymouth boot logo?
Having ~7 seconds of a black screen during boot might confuse users.

I’m using Torizon and BSP 7.2.0 on Verdin iMX8MP.

Thanks in advance!

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! Thank you for your detailed explanation and the log output.

Your issue is indeed very similar to those described in the community and documentation links you’ve referenced. This behavior—where the display stays black for several seconds until the LVDS subsystem is initialized—is related to the timing of the DRM (Direct Rendering Manager) and panel drivers during the boot process. Plymouth can only show the splash screen once the DRM subsystem and display are available, which happens relatively late on your setup (around 6.8 seconds as seen in your dmesg).

Key points and possible approaches:

1. Confirm Plymouth Configuration

You’ve already created a plymouth_%.bbappend file based on the documentation, which is the right approach. Make sure your file is similar to the recommended format (example for BSP 7.x):

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

SRC_URI += " \
    file://yourlogo.png \
    file://spinner.plymouth \
"

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

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

More details:

Some users have also found setting

PACKAGECONFIG:append = " pango drm"

in their bbappend improves reliability:

2. Initializing DRM/LVDS Earlier

The core issue is that the LVDS and DRM drivers are only initialized several seconds into the boot due to driver probing and panel timings.

  • Moving initialization earlier typically involves deep kernel changes, which are not straightforward and go beyond standard configuration or Plymouth customization.

3. Reduce Black Screen Perception

While moving the display driver’s initialization earlier isn’t easily possible via software configuration alone, you could consider these workarounds:

  • Enable the backlight statically via hardware (if your display’s electronics allow always-on backlight).
  • Use a static boot logo provided by the bootloader (e.g., U-Boot splash) for the very initial seconds. However, this often requires the framebuffer to be persistent or reused until Linux display drivers take over. Please refer to:
    Splash Screen on Torizon OS | Toradex Developer Center

4. TorizonCore Builder Approach

If you’re customizing TorizonCore, you can use the TorizonCore Builder tool to add custom splash screens and optimize boot appearance as much as possible with standard tools.

Summary:
Your observation is correct: the ~7 second black screen is due to the display subsystem only finishing initialization well after the kernel starts, and Plymouth cannot display anything until that happens. Unfortunately, this is constrained by driver load order and hardware sequencing, and is not easily changed with configuration or userspace customization tools.

For now, focus on confirming your Plymouth and splash configuration, and if possible, consider using a bootloader logo for immediate feedback before Linux display drivers initialize.

Here are useful links:

If you have more specific questions or would like suggestions for optimizing the existing boot appearance, please let me know!

Best regards,
Toradex AI Assistant.

Hi @Srimoki

This is the expected behaviour:

  • The first logo you see is the power off splash screen.
  • Then ~7 seconds for the Plymouth service to start
  • And lastly, the power on splash screen.

Since the Plymouth service runs from the userspace, these 7 seconds are the time until we reach this stage.


You can check this article on boot time optimization.
One thing that takes quite some time is the NetworkManager.

As far as I am aware, native LVDS display (and HDMI for 7.2.0) are failing to run Plymouth correctly.

This is the last update I had on the topic.

Currently it seems like 7.3 is probably going to fix the hdmi issue, but not the LVDS. I am having to use version 6 Torizon instead because of this.

Hi @Srimoki

Sorry, I misunderstood your question.

I thought the question was about the time it took to get to this part.


This is correct, there’s currently a known issue on 7.2.0 about splash screen not showing over LVDS.

Thanks guys for the answers! I think I’ll just follow the other thread and wait for the fix for the LVDS issue.

As I understand, there’s also no support anymore for using U-Boot to show a splash logo. But I noticed that NXP has a patch for the LVDS driver so that we could use LVDS directly from U-Boot.

Is there any plan to support this feature in the future?