Issue enabling plymouth on Verdin imx8mp module

I have a yocto image running on a Verdin dev board & imx8mp SOM. It’s based on the tdx-reference-multimedia-image. I’m using the native HDMI port on the dev board.

I want to add a custom splash screen, so I followed the instructions here to add plymouth to my yocto image: How to Add a Custom Splash Screen (Linux) | Toradex Developer Center

When I boot my device, it no longer prints the dmesg text on the screen during boot before weston opens. So that’s good. But it just shows a black screen, despite my best effort to configure plymouth to show something else.

when I run plymouthd; plymouth --show-splash; after booting, it switches from weston to a black screen with a blinking cursor in the top left. So plymouth is in my image and can write to the proper display device as far as I can tell. Why can’t I get it to show any image at all, though, besides a black screen? I can view and configure the default theme with plymouth-set-default-theme, but it doesn’t seem to take.

Any suggestions to debug further? Plymouth doesn’t seem to do much logging in this situation

Hi, I’m the Toradex AI Assistant. The Toradex Support team will follow up with you shortly!

Did you like my answer?

:+1: :-1:


Hello,

It seems you’re encountering an issue where Plymouth is not displaying your custom splash screen on the Verdin iMX8MP module, resulting in a black screen. Here are some steps to help you debug and resolve this issue:

  1. Verify Theme Configuration: Ensure that the theme you want to use is correctly set as the default. You can do this by running:

    plymouth-set-default-theme -l
    plymouth-set-default-theme <your-theme-name>
    update-initramfs -u
    

    Replace <your-theme-name> with the name of your desired theme.

  2. Enable Verbose Logging: Although Plymouth doesn’t log extensively by default, you can enable verbose logging to gather more information. Add plymouth.debug=1 to your kernel command line parameters to increase verbosity.

  3. Test Plymouth Manually: After booting, try running Plymouth manually to see if it displays correctly:

    plymouthd --debug
    plymouth --show-splash
    

    This can help identify if the issue is with the boot process or Plymouth itself.

  4. Check Display Configuration: Ensure that the display settings are correctly configured for your HDMI output. Verify that the correct DRM driver is loaded and that the display is initialized properly before Plymouth starts.

  5. Verify Theme Files: Check that all necessary files for your theme are present and correctly formatted. Missing or corrupt files can cause Plymouth to fail to display the splash screen.

  6. Update Kernel and Initramfs: Ensure that your kernel and initramfs are correctly updated with the Plymouth configuration. Sometimes, changes might not be applied if the initramfs is not rebuilt properly.

By following these steps, you should be able to identify the cause of the black screen and ensure that your custom splash screen is displayed correctly. If the issue persists, consider testing with a different theme or checking for any specific compatibility issues with the Verdin iMX8MP module.

Best regards,
Toradex AI Assistant.

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

Plymouth boot animation gets killed in few seconds.

Ok I figured this out. I forgot I had commented out PACKAGECONFIG = " pango drm " in the initial toradex instructions in order to get the image to build. the main plymouth recipe in meta-oe defaults to PACKAGE_CONFIG = “initrd freetype pango udev ${PLYMOUTH_THEMES} ${@bb.utils.filter(‘DISTRO_FEATURES’, ‘systemd’, d)}”

So the default doesn’t have “drm”. But it does have systemd, which it seems like we would want? So I modifed the toradex example to append drm instead of overwriting all of PACKAGE_CONFIG, ie:
PACKAGECONFIG:append = " pango drm "

This seems to work. The logo does show now. it doesn’t show until about 10 seconds into the boot. I will try to make that sooner with adding a kernel command arg and maybe initramfs, but it works eventually now.