Enabling Display During U-Boot

Hey,
I’m working with the Toradex SMARC i.MX8M Plus SoM, the Toradex SMARC Carrier Board, and a Riverdi RVT101HVDNWC00-B (1280×800, capacitive touch) display.

Right now, the display works only after the kernel boots — once control is handed over from U-Boot to the kernel, the panel comes up fine.

What I want is to have the display working already during U-Boot (logo / early output, etc.).
Is there any way to enable this for my setup? I haven’t been able to get the panel to light up during U-Boot so far.

Any pointers or solutions would be helpful!

Hi, I’m the Toradex AI Assistant.

I might make mistakes or occasionally get you wrong. Our support team will step in if needed.


\

Display Support in U-Boot for SMARC iMX8M Plus

Unfortunately, based on the available information, U-Boot splash screen support on the NXP i.MX8M Plus SoC is a non-supported feature (1). This limitation applies to your SMARC iMX8M Plus setup with the Riverdi display.

Current U-Boot Capabilities

U-Boot on Toradex modules provides comprehensive bootloader functionality including (2):

  • Console interface through the serial port with low-level commands
  • Environment variable management for boot configuration
  • DistroBoot support for automatic boot discovery
  • Device tree and kernel loading capabilities

The SMARC iMX8M Plus supports various display interfaces including (3):

  • HDMI (up to 4K)
  • LVDS (up to 1920x1080)
  • MIPI DSI (Quad Lane, up to 1920x1080)

Alternative Solutions

Since U-Boot splash screen is not supported on the i.MX8M Plus, consider these alternatives:

1. Fast Boot Configuration

You can optimize the boot process by configuring U-Boot environment variables (2):

  • Modify boot_targets to prioritize your boot device
  • Adjust the autoboot delay (default is 3 seconds)
  • Streamline the boot process to minimize time before kernel takes over

2. Early Kernel Display

Focus on enabling display support as early as possible in the kernel boot process, which is where your display currently works.

3. Custom U-Boot Build

While not officially supported, you could explore building a custom U-Boot with display support, though this would require significant development effort and is outside standard support.

U-Boot Console Access

You can access the U-Boot console to verify and modify boot settings (2):

> printenv boot_targets  # Check current boot order
> setenv boot_targets mmc1 mmc2 dhcp  # Modify if needed
> saveenv  # Save changes

The display functionality you’re experiencing after kernel boot is the expected behavior for this platform.

Best regards, Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

Hello @Sreehari ,
Please check adding splash screen using plymouth

Hi @sahil.tx am able to achieve splash screen using plymouth, but my question is to have the display working during U-Boot

Hello @Sreehari Ji,
U-boot splash screen is not supported for iMX8 out of the box.
However, I can see some reference here that could be helpful.

Hi @Sreehari,

Can you please explain how you got the display working so early, like how Plymouth shows the logo?
I tried following these links Plymouth but my panel still doesn’t shows anything.
What steps did you follow to enable the display in U-Boot?
please let me know complete steps you have done

i got some error in this step itself
CORE_IMAGE_EXTRA_INSTALL += "plymouth"
Error something like DRM Support

SOM and BOARD = IMX8MP on Verdin development board and yocto BSP Version scarthgap

Thanks!
Raju

Hi @raju3003 ,
I followed same steps How to Add a Custom Splash Screen (Linux) | Toradex Developer Center
only changes i did was, added this PACKAGECONFIG:append = " pango drm" in plymouth_%.bbappend file.

Hi @Sreehari

raju@SYS-TK01:/mnt/yocto_build/toradex-verdin-imx8mp/layers/meta-teckinsoft-logo/recipes-core/plymouth$ cat plymouth_%.bbappend
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"

SRC_URI += " \
	file://torizonlogo-white.png \
	file://spinner.plymouth \
"

EXTRA_OECONF += "--with-runtimedir=/run"
PACKAGECONFIG:append = " pango drm"

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

still i am getting the same error

raju@SYS-TK01:/mnt/yocto_build/toradex-verdin-imx8mp/build$ bitbake tdx-reference-multimedia-image
Loading cache: 100% |########################################################################################################################################################################| Time: 0:00:01
Loaded 5381 entries from dependency cache.
Parsing recipes: 100% |######################################################################################################################################################################| Time: 0:00:01
Parsing of 3370 .bb files complete (3368 cached, 2 parsed). 5383 targets, 662 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
ERROR: Nothing RPROVIDES 'dracut' (but /mnt/yocto_build/toradex-verdin-am62mp/build/../layers/meta-openembedded/meta-oe/recipes-core/plymouth/plymouth_24.004.60.bb RDEPENDS on or otherwise requires it)
NOTE: Runtime target 'dracut' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['dracut']
NOTE: Runtime target 'plymouth' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['plymouth', 'dracut']
ERROR: Required build target 'tdx-reference-multimedia-image' has no buildable providers.
Missing or unbuildable dependency chain was: ['tdx-reference-multimedia-image', 'plymouth', 'dracut']

Summary: There were 2 ERROR messages, returning a non-zero exit code.
raju@SYS-TK01:/mnt/yocto_build/toradex-verdin-imx8mp/build$ ls

For my project, I’m building the image using the Yocto Scarthgap release.

Regards,
Raju

Hi @raju3003
That means u have dracut dependency, u need to add dracut recipe, so add the recipe and try.
In my case it was here ../layers/meta-openembedded/meta-initramfs so i added this layer similarly check yours and add.

Hi @Sreehari

Thanks for you information
after few changes image built without error
but still nothing comes in the display

if u can please let me know like what u added in the spinner.plymouth file

and about bbappend file nothing change as it is

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

SRC_URI += " \
	file://torizonlogo-white.png \
	file://spinner.plymouth \
"

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

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

Regards,
Raju

Hi @raju3003,
i can see that you missed adding this line PACKAGECONFIG:append = " pango drm" in your bbappend file.
Add and try

Hi @Sreehari

I tried that there is no difference even now also it didnt come but one thing i observed is that no boot messages coming up
here is my how recipes-core directory looks like

recipes-core/
└── plymouth
    ├── files
    │   ├── spinner.plymouth
    │   └── torizonlogo-white.png
    └── plymouth_%.bbappend

2 directories, 3 files
raju@SYS-TK01:~/Verdin/layers/meta-teckinsoft-logo$ cat recipes-core/plymouth/files/spinner.plymouth
[Plymouth Theme]
Name=Custom Teckinsoft Splash
Description=Custom splash screen with logo
ModuleName=spinner

[throbber]
ImageDir=/usr/share/plymouth/themes/spinner
# This folder already contains spinner PNG frames
# (or default ones shipped by Plymouth)

[screen]
ImageDir=/usr/share/plymouth/themes/spinner
Watermark=watermark.png
WatermarkX=50%
WatermarkY=50%
WatermarkOpacity=255
Stretch=true
raju@SYS-TK01:~/Verdin/layers/meta-teckinsoft-logo$ cat recipes-core/plymouth/plymouth_%.bbappend
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"

SRC_URI += " \
	file://torizonlogo-white.png \
	file://spinner.plymouth \
"

EXTRA_OECONF += "--with-runtimedir=/run"
PACKAGECONFIG:append = " pango drm"

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

i changed logo image but i kept same name

I’m not sure where i am doing wrong please check
And also like after it boots
Getting like this

regards,
Raju

Hello @raju3003 ,
For the error related to dracut, you can add the below layer in your bblayers.conf
${TOPDIR}/../layers/meta-openembedded/meta-initramfs \
Additionally, add below in your plymouth_%.bbappend, which you arleady seems to be doing.
PACKAGECONFIG:append = " pango drm"

For your testing, I am attaching a Verdin iMX8MP BSP7 image with splash screen
If you still face issue, please open a new thread