I have set a splash screen to be displayed on power up and power down. I have a MIPI display connected with a custom external kernel module enabled in the tcbuild.yaml.
The splash screen works when shutting down the SOM however it is not visible on power up. I can see in the log that the driver is enabled at approximately 40 seconds when a container is setup to use the display.
The driver probe occurs at 6.49 seconds into the boot, however the driver enable does not happen until 40 seconds.
Is there anyway to ensure the driver enable happens earlier in the boot and ensure the splash screen is displayed on power up.
Hi, I’m the Toradex AI Assistant. The Toradex Support team will follow up with you shortly!
Did you like my answer?
Hello,
To address the issue of your splash screen not appearing during startup, you can focus on customizing the initramfs to ensure the display driver is initialized earlier in the boot process. TorizonCore uses Plymouth for splash screen management, which is initiated from the initramfs very early during boot.
Here are some steps you can follow to achieve this:
Customize the Initramfs:
Use the ostree-customize-plymouth.sh script provided by TorizonCore to add your splash screen image to the initramfs. This script allows you to specify the image file and the current OSTree reference.
Create a New OSTree Commit:
After customizing the initramfs, create a new OSTree commit. This involves using the base reference of your current running tree and applying the changes.
Deploy the New OSTree Commit:
Deploy the new commit to your device. On reboot, the changes should take effect, and the splash screen should appear earlier in the boot process.
Use TorizonCore Builder:
For a more robust solution, consider using TorizonCore Builder to create a custom image. This tool allows you to apply various customizations, including splash screen changes, and generate a new TorizonCore image.
By ensuring that the initramfs is customized to initialize the display driver earlier, you should be able to display the splash screen on power-up. If the issue persists, you may need to further investigate the timing of driver initialization in your custom kernel module or consider optimizing the boot sequence to prioritize the display driver initialization.
I hope this helps! If you have any more questions, feel free to ask.
Best regards,
Toradex AI Assistant
Please, also check if these links can help you solve your problem:
By default, the Torizon OS image should show the Torizon logo while booting up. Is that not happening?
Have you followed the instructions on this page to try and add a custom splash screen: Splash Screen on Torizon OS | Toradex Developer Center
I would give a quick try using the ostree-customize-plymouth.sh as @ToradexAI suggested.
Yes I have followed the instructions on the link given.
The splash screen is shown when shutting down the SOM however not on boot up.
I believe this is because I am using a mipi display with a custom driver. The display is enabled during the driver’s enable function but this is only called when my containers start not when the SOM’s splash screen it loaded. The splash screen does not tell the driver to enable the display and hence why the SOM’s splash screen is not visible.
I can see in the dmesg out when the display driver is probed and then when it is enabled.
Is there anyway to ensure that the splash screen uses a specific display port?
My understanding is you would need to have your driver module present in the initrd file so that it’s available when the display first starts being used by e.g. Plymouth to display the splash screen. If it’s not available at that time, Plymouth takes the path that there is no display connected and therefore will not render a startup screen.
You would either need to repackage the stock initramfs to include your driver file (not trivial, and wholly unsupported by Toradex) or create a custom yocto build that contains a recipe for your display driver.
If you are already doing a custom build, you may need to modify your recipe to also include your driver in the initramfs blob.
Your understanding is correct. If your display driver is built as a kernel module and is not available in the initramfs, then Plymouth will not detect a display and will not render the splash screen. Since Torizon OS uses an initramfs-based early boot system, the display driver needs to be available at that stage for Plymouth to function correctly.
The solution would be to build the display driver into the kernel or to include the driver in initramfs using Yocto(since this is a use-case not covered by torizoncore builder unfortunately).