Customized U-Boot for Verdin-imx95

Hi all,

I would like to customize U-Boot for Verdin-imx95, and I am searching for documentation on how to build a customized U-Boot for imx95. So far I found documentation on all but the imx95:

Our goal is to have U-Boot show a customized early Splash Logo on native LVDS screen.

Best regards,

Hi, I’m the Toradex AI Assistant.

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


U-Boot Customization for Verdin iMX95

Unfortunately, the current documentation doesn’t include specific instructions for building U-Boot for Verdin iMX95 modules(1). The general U-Boot build documentation covers various Toradex modules including TI AM62x(2), TI AM62Px(3), and NXP i.MX 8M Mini/Plus(4), but Verdin iMX95 is not specifically documented.

Current Status of U-Boot Splash Support

Regarding your goal of showing a customized early splash logo on the native LVDS screen, there are some important limitations to be aware of:

Display Support Challenges

Based on community feedback, there are significant challenges with U-Boot display support on newer i.MX platforms(5). For i.MX8M Plus modules, which share similar architecture characteristics with iMX95, the required drivers such as imx_lcdifv3.c and sec_dsim_imx.c are not present in the current U-Boot source(5).

Upstream vs Downstream U-Boot

With recent BSP versions, Toradex has moved to upstream U-Boot, which is missing many of the i.MX drivers and code required for advanced display support(5). This transition affects display capabilities in U-Boot across the i.MX platform family.

Recommendations

  1. Check BSP Documentation: Review the Embedded Linux Release Matrix to confirm the U-Boot source and branch information for Verdin iMX95(1).

  2. Alternative Approaches: Consider implementing your splash screen at the Linux kernel level instead, where full display driver support is available.

  3. Follow General Build Process: While waiting for iMX95-specific documentation, you can reference the general U-Boot build process(1) and adapt it for your platform.

To get the most current information about your specific hardware setup, I recommend running the tdx-info command on your device to gather detailed platform information. You can find more details about this tool at: Getting Device Information with Tdx-Info | Toradex Developer Center

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.

Software summary
------------------------------------------------------------
Bootloader:               U-Boot
Kernel version:           6.6.101-7.4.0-g557af2783d91 #1-Torizon SMP PREEMPT Thu Sep 25 07:49:28 UTC 2025
Kernel command line:      root=LABEL=otaroot rootfstype=ext4 quiet logo.nologo vt.global_cursor_default=0 plymouth.ignore-serial-consoles splash fbcon=map:3 ostree=/ostree/boot.1/torizon/0ee98f25ec6827392914c72f85241cb5a85e0ffef05f13eecda62b1cf5f7c26a/0
Distro name:              NAME="Torizon OS"
Distro version:           VERSION_ID=7.4.0-build.28
Distro variant:           VARIANT="Docker"
Hostname:                 verdin-imx95-(redacted)
------------------------------------------------------------

Hardware info
------------------------------------------------------------
HW model:                 Toradex Verdin iMX95 on Baseboard-Verdin
Toradex version:          0089 V1.0A
Serial number:            (redacted)
Processor arch:           aarch64
------------------------------------------------------------

Perfect! Thank you for providing the hardware details. Now I can give you specific guidance for your Verdin iMX95 V1.0A running Torizon OS 7.4.0.

U-Boot Build Process for Verdin iMX95

Based on the general U-Boot build documentation, you’ll need to follow these steps (1):

Prerequisites

  1. Install the ARM GNU Toolchain (version 9.2 or higher) for cross-compilation (1)
  2. Clone the U-Boot repository (1):
$ mkdir -p ~/workdir
$ cd ~/workdir
$ git clone https://git.toradex.com/u-boot-toradex.git
$ cd u-boot-toradex
$ git checkout <branch>

(1)

U-Boot Configuration and Build

Since Verdin iMX95 uses upstream U-Boot, you’ll need to configure it for your specific module (1). The exact configuration name and build process will follow the standard pattern documented for other modules.

Deploy Custom U-Boot

To integrate your custom U-Boot binary (1):

  1. Start from an existing Torizon OS image - Download the appropriate image for Verdin iMX95
  2. Replace bootloader binaries in the Toradex Easy Installer package
  3. Adjust image.json to reference your custom U-Boot binary (1)

Example configuration structure (1):

"name": "mmcblk0boot0",
"erase": true,
"content": {
    "filesystem_type": "raw",
    "rawfiles": [
        {
            "filename": "u-boot.imx",
            "dd_options": "seek=2"
        }
    ]
}

(1)

Splash Screen Considerations

For your LVDS splash screen goal, you have several options documented in the boot documentation (2):

U-Boot Splash Screen

There’s specific documentation for implementing splash screens in U-Boot (2). However, be aware that display driver support in upstream U-Boot may be limited for newer i.MX platforms.

Alternative: Linux Kernel Splash

Consider using Linux kernel-level splash screens, which have full driver support and better display compatibility (2).

Customization Examples

The documentation includes examples of U-Boot customization, such as modifying kernel parameters (3)(4). You can apply similar techniques for splash screen configuration.

Since Verdin iMX95 is a newer platform, I recommend checking the Embedded Linux Release Matrix for the most current branch and version information specific to your BSP version.

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.

Hi @ToradexAI ,

thanks, I will check out your links. Our reasoning behind a most early screen is, we place HMI lab devices, and customers like to see things light up when they power on the device and currently the setup with verdin-imx95 stays dark for quite a while (the linux splash screen does not work for Torizon OS 7.4.0, which is a known issue and should be resolved with 7.5.0 release) and we would like to change this. Previews products showed a greeting logo after a second of powering on the device and we would like to keep this experience for our customers.

Best regards,

I understand your use case perfectly - providing immediate visual feedback for HMI lab devices is crucial for customer experience. Your goal of showing a greeting logo within a second of power-on is definitely achievable.

Current Challenges with Torizon OS 7.4.0

You’re correct that there are known issues with Linux splash screens in Torizon OS 7.4.0, which should be resolved in the 7.5.0 release. This makes U-Boot splash screen implementation even more valuable for your immediate needs.

U-Boot Splash Screen Implementation

For implementing U-Boot splash screens, you have several approaches documented (1):

Creating Custom Logo

You can create a custom logo using GIMP with dimensions that are multiples of 8 (1). Convert your image to the required BMP format (1):

convert testlogo.png -type Palette -colors 224 -depth 8 -compress none -verbose BMP3:testlogo.bmp

(1)

Integration Methods

Option 1: Embedded in U-Boot Binary
Replace the default Toradex logo in the U-Boot source (1):

cp ~/testlogo.bmp ~/u-boot-toradex/tools/logos/toradex.bmp

(1)

Option 2: Runtime Loading from Storage
For more flexibility, you can load splash screens from external storage (1):

setenv splashfile /boot/logo.bmp
setenv splashsource mmc_fs
saveenv
reset

(1)

Display Configuration

You can control splash screen positioning (1):

setenv splashpos m,m  # Centers the splash screen

(1)

Important Considerations for Verdin iMX95

Based on community feedback, there are some challenges to be aware of:

  • Display Driver Limitations: Upstream U-Boot (used in newer BSP versions) has limited display driver support for advanced interfaces (2)
  • LVDS Support: While your previous products may have worked well, newer platforms may require additional driver development for complex display interfaces (3)

Alternative Approaches for Immediate Results

While working on U-Boot splash implementation, consider these interim solutions:

TorizonCore Builder Splash

For Torizon OS, you can use TorizonCore Builder to implement splash screens (4):

torizoncore-builder splash SPLASH_IMAGE

(4)

This approach works at the initramfs level, providing earlier display than user-space applications.

Optimized Boot Time

Focus on boot time optimization to reduce the “dark screen” period until the 7.5.0 release addresses the Linux splash issues.

Next Steps

  1. Verify U-Boot Version: Check your current U-Boot configuration and display driver support for LVDS on Verdin iMX95
  2. Test Runtime Loading: Start with the runtime splash loading approach as it’s easier to implement and test
  3. Monitor 7.5.0 Release: Keep track of Torizon OS 7.5.0 development for the Linux splash screen fix

Your goal of maintaining the “lights up in one second” experience is definitely achievable with the right combination of these approaches.

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 @bgo,

Enabling splash screen is not supported out of the box, we can recommend partners for this kind of work if you need support.
Unfortunately, as today we also don’t have instructions on building u-boot for imx95, we are working on that currently.
so this is perhaps a bit tricky, and again consulting some of our partners may be the way to go.

An alternative could be using Plymouth

hope this helps
best regards
Max

1 Like

Hi @Maximiliano.tx ,

thank you for telling me the current development state. I will discuss with my colleagues if we should wait or consult one of your partners.

Best regards,
Bernhard

1 Like

@bgo
Just a quick side note:
The instructions given are incomplete. Contrary to the instructions given by the bot, it is not enough to place the UBoot image in the installer files. The IMX95 requires a boot container which bundles multiple apps (a cryptographic module, multiple stages of memory initialization etc). I couldn’t find an official manual, but the building tools for the container image are available in a NXP repository. I reverse engineered the rest, extracted the different images from the container within the Torizen OS installer, and repackaged a new boot container with my modified UBoot and UBoot-loader.

If you’d like I’m able to share my notes on the process via PM.

1 Like

Hi @doespaddel ,

thank you for your insights! I might come back to your offer depending on what product management decides on.

Best regards,