I want Multimedia Reference Image BSP + Plymouth showing splash-screen as Torizon does

Starting from Splash-screen with Plymouth on BSP Refrence Multimedia Image - #3 by Pipe

I have the BSP 6.4.0 multimedia reference image bitbaken adding plymouth as for Toradex tutorial.
But when booting target the text boot messages comes on the HDMI output.
The plymouth set splash image goes onscreen for few seconds, then other text, then Weston is launched with a desktop background and a upper bar. I’ve managed to auto-start my QT app on Weston.

During boot process I want on HDMI, as Torizon does, the plymouth splash image only (with spinner rotating), then my QT5 app launched, without backgrounds and/or bars. As a kiosk.

I made some experiments with fw_setenv and editing the /etc/xdg/weston/weston.ini with no success.

Thanks for help
Pietro

Update:

Added:

[core]
shell=kiosk-shell.so

in /etc/xdg/weston/weston.ini. Now no background and not upper bar. OK what I wanted.

Regarding boot messages:
fw_setenv setupargs “fbcon=map:1 quiet”
makes HDMI boot output having some blank screen and, as before, the plymouth splash image only for few moments. Suggestions?

Hi @Pipe ,

Let me see if I understood your question: You don’t want any text from the boot process to appear on the HDMI screen, only the plymouth splash screen with the rotating spinner icon before loading Weston with your application. The splash screen should be visible for a few moments i.e. not disappear too quickly. Is this correct?


To get rid of the text output during boot you can append the quiet kernel parameter. To do this in our BSP reference images we recommend using the U-Boot variable tdxargs, as mentioned here: U-Boot | Toradex Developer Center. Once logged in as root, run the following command:

fw_setenv tdxargs "quiet"

After reboot you shouldn’t see any verbose output.


To make the splash screen visible for a longer period of time, you can create a systemd service that adds a small delay during the animation.

Based on this article from ArchWiki: Plymouth - ArchWiki

  • Create a file called plymouth-wait-for-animation.service in /etc/systemd/system/:
[Unit]
Description=Waits for Plymouth animation to finish
Before=plymouth-quit.service

[Service]
Type=oneshot
ExecStart=/bin/sleep TIME

[Install]
WantedBy=plymouth-start.service

Where TIME is the delay you want in seconds e.g. for 5 seconds the line will be:

ExecStart=/bin/sleep 5
  • After that enable the service with:
systemctl enable plymouth-wait-for-animation

See if this helps you.

Best regards,
Lucas Akira

Hi Lucas,

Done

Done

Then I made some tweaking on u-boot variables to see what happens and the only setting (I’ve tested a lot of) that makes disappear all from HDMI is to redirect the framebuffer console with the u-boot command:
setenv setup “${setup} fbcon=map:1”

The resulting boot process is nearly what I want but first few seconds are with blank screen and the tft backlight is first on, then off, then on again, then the plymouth splash goes onscreen, then blank screen and again backlight on and off for two times, finally the QT app starts.

Ok, I can accept this but what I see on Torizon OS boot process is the plymouth splash image onscreen almost immediately, then a short time blank screen, then the user program start.
I wonder if it is possible to replicate the same result…

Thanks for now,
Pipe

We delay plymouth-quit.service by quite a lot in TorizonCore to eliminate those “in-between” states.
I suggest you run systemd-analyze plot > chain.svg and patch Plymouth in a similar fashion as we do for TorizonCore[0].

[0] https://github.com/toradex/meta-toradex-torizon/blob/kirkstone-6.x.y/recipes-core/plymouth/files/0001-disable-boot-splash-later.patch.

Hi Leon,

said in advance that I’m new to Yocto and that I’m doing now some first steps into (and I found it’s a very powerful and interesting instrument),

I have two questions:

  1. I prefer your solution to patch the plymouth recipe so to wait for the some service to start before to quit the plymouth one. I’ve bitbaken the BSP adding the Torizon patch to plymouth replacing the row:
    After=rc-local.service plymouth-start.service systemd-user-sessions.service docker.service
    with:
    After=rc-local.service plymouth-start.service systemd-user-sessions.service weston.service
    The result is that the splash screen never exit. I suppose I have to put the wayland service instead?
  2. I’ve read (Plymouth - ArchWiki) that, to start plymouth very early at boot, I have to configure the initramfs. Is that already done by the Yocto recipe or I have to tweak something?

Thanks in advance,
Pipe

Hello @Pipe ,
For questions regarding Yocto images customization you can refer to any of our partners:

Best regards,
Josep

Hi Leon,

I’m struggling without success trying to setup plymouth on the BSP.
I’ve followed your suggestions and from: ‘systemd-analyze plot > chain.svg’ I see that plymouth-quit.service is called before the gettys and user graphical stuff, as expected.

image

If I set something like weston.service or (better for me) wayland-app-launch.service as a After dependency into plymouth-quit.service eg:

After=rc-local.service plymouth-start.service systemd-user-sessions.service weston.service

the plymouth never quits and if I issue ‘systemctl list-jobs’ I see the waiting jobs:
image

I argue there is a dependency on the waiting jobs about plymouth to be closed?

Please help me to reproduce what you do in Torizon waiting for the docker.service.
My boss is telling me there is no more time for the splash-screen job and I’m near and want to acheive it.
Thanks
Pietro

Hello again,
after writing the previous post I edited all service files that were waiting and deleted the plymouth-quit-wait.service After dependency on each one. Effectively on serial@.service and on weston.service.
Then inserted into plymouth-quit.service After dependencies the wayland-app-launch.service and… …now the boot process quits from plymouth right before to start my Qt App. GOOD!

That’s enough for my boss. But… …I see (systemd-analyze plot > chain.svg) that the kernel takes about 3 seconds to load and I know that it’s possible to start plymouth before, configuring the initramfs. How-to?

Best regards,
Pipe

Hello @pipe,
You will have to search in our Torizon recipes, maybe looking for initramfs or plymouth

Best regards,
Josep