Plymouth shows the splash screen very late in the boot process

Plymouth works fine on my imx8x. But I can see it starts very late in the boot process. When kernel starts, the screen is blank for around 5,6 seconds, then splash screen shows up in the screen for only 1 second and the boot process finishes. I am using the plymouth-wait-for-animation.service to have a sleep for 10 seconds to see the splash screen for some time. But I think that is not the intention of a splash screen. I would like to see the splash during the entire boot process. Now I have nothing in the first 5,6 seconds and only 1,2 seconds left in the boot process and unnecessary 10 second delay only to see the splash screen. How can we start plymouth earlier than this and make this feature useful for what it is to be?

Hi, I’m the Toradex AI Assistant. I’m in early beta, and I would appreciate your feedback.
The Toradex Support team will follow up with you shortly!

Did you like my answer?

:+1: :-1:


Hello,

To address the issue of Plymouth showing the splash screen very late in the boot process on your iMX8X, it’s important to understand that Plymouth’s appearance timing is closely related to the initialization sequence of the system, particularly how early the graphical subsystem is initialized and when Plymouth is started.

  1. Early Initialization of the Graphical Subsystem: Ensure that the drivers necessary for displaying graphics are loaded as early as possible in the boot process. This might involve configuring the kernel to include these drivers built-in (not as modules) to ensure they are available at the earliest.

  2. Modify Plymouth Start Condition: The default configuration might start Plymouth at a later stage in the boot process. You can modify the systemd service unit for Plymouth (plymouth-start.service) to start earlier. For instance, changing its dependencies to be required by or after a basic target like sysinit.target instead of a later target could help. However, this requires careful consideration to ensure dependencies are met correctly.

  3. Optimize Boot Process: Analyze and optimize the boot process to reduce the time before Plymouth starts. This could involve disabling unnecessary services or optimizing the ones that are necessary to reduce their startup time.

  4. Kernel Command Line: Check the kernel command line parameters to ensure there are no delays introduced (for example, through rootdelay= or similar parameters) and that the parameters for Plymouth (like quiet splash) are correctly set to ensure Plymouth is instructed to start as early as possible.

  5. Plymouth Debugging: Utilize Plymouth’s debugging options to get more insight into what is happening during the boot process. This can help identify delays or configuration issues affecting its startup time.

  6. Systemd Analyze: Use systemd-analyze and systemd-analyze blame to identify which services are taking the most time during boot and see if any optimizations can be made there to allow Plymouth to start earlier.

Remember, the effectiveness of these steps can vary based on the specific configurations and versions of the software and hardware you are using. It’s also crucial to test changes incrementally to ensure system stability and boot reliability.

Best regards,
Toradex AI Assistant

Please, also check if these links can help you solve your problem:

TorizonCore Builder Tool - Commands Manual | Toradex Developer Center.

Hello @jesvinonnet

You can try this article on how to display the splash screen from U-boot:

The splash screen from U-boot is less configurable than Plymouth, but it starts earlier in the boot process.

Also, you need to check if the video interface you are using is supported by uboot.

Hi @allan.tx ,

Thank you for the response.

I tried this. But not working. Then later I read in one topics that imx8x doesn’t support U-Boot splash screen. Can you verify that? I am using the toradex capacitive touch 7" display with colibri imx8x and Iris board. Can you check is it possible to have a U-Boot splash screen with this arrangement?

Hi @jesvinonnet,

imx8x doesn’t support U-Boot splash screen

yes… I just checked and it seems like we don’t support this anymore. Some of the video and splash screen configuration is missing from U-boot-toradex config/colibri-imx8x_defconfig. But I’m not sure if just enabling those flags is going to work.

CONFIG_BMP_16BPP=y
CONFIG_DM_VIDEO=y
CONFIG_CMD_BMP=y 
CONFIG_VIDEO_IPUV3=y
CONFIG_SPLASH_SCREEN=y
CONFIG_SPLASH_SOURCE=y
CONFIG_SPLASH_SCREEN_ALIGN=y
CONFIG_HIDE_LOGO_VERSION=y

I think it’s also worth taking a look at optimizing the boot sequence to only load the minimum requirements before reaching the plymouth start.

Commentary from someone that’s done some amount of u-boot splash work in the Toradex ecosystem for exactly this reason (early display indications) - Most likely if your display is LVDS, DSI, parallel RGB, or otherwise requires a bridge chip (such as the DSI to HDMI bridge chip), you will need to do some u-boot modifications to get it to work. The Toradex build, by default, does not have drivers for the LCDIF or LVDS Display Bridge (LDB) peripherals.

My general take on “unsupported” in regards to Toradex’s comments on u-boot splash screens is not “it can’t ever work” but rather “you will have to do some work on your own” to get it up and running - especially considering LVDS, DSI, and RGB displays require timing knowledge and don’t have an EDID equivalent mechanism (like VGA or HDMI) to support probing available resolutions automatically. Toradex can’t be reasonably expected to support all possible displays, connectivity, and resolutions that an integrator or end-user could possibly want to use.

There are patches published on the NXP forums for the IMX8 LCDIFv3 which I’ve successfully applied in order to get u-boot LVDS working on an imx8mp, but I really can’t speak for whether those are relevant to your use case here. Portions of those patches are relevant for DSI as well.

~BW

I am using both board and display from Toradex. This is not a custom display and this is not a custom requirement. So I hope Toradex will support.

Hi @allan.tx

Will give a try with this. Did you able to check this internally what can we do here? As this is a very much required feature in every board.

Hi @jesvinonnet

Yes… I checked internally and we don’t support U-boot splash screen anymore.

We only support splash screen display using Plymouth.

Which Torizon version are you using?
I tested it here with a Colibri iMX8QXP 2GB and Torizon v6.7.0. It takes like 10~15 seconds (showing my splash screen) for the boot to complete. And right after that I see my app on screen.

ok.

I am using my own custom image.
I feel a 15 seconds black screen is too much. This situation is wrongly interpreted during an image update. After the update, if the customer sees a 15 seconds black screen then a confusion arises whether the update was successful or the system is down. Then there is always a tendency to do a hard restart of the machine. This can brick the system. How can we avoid this?

Hi @jesvinonnet

So the main problem is not really the spash-screen time, but that if the user, using your custom image, resets the device during an update it can brick the device.

I think the best approach is migrating to Torizon OS, as reliable update rollback is one the main features of Torizon.

If you want to develop your own custom U-boot and update system, we have a network of partners services that could help you with the software development part.

No. The user sees a black screen for long time