Currently i am working with a verdin imx95 board, i am trying to add support for rootfsA/B , recovery partitions, using my own boot.itb, for this reason i need to modify the uboot, in previous versions verdim im8mm, verdim imx8mp, i could do this with the distro boot.
/u-boot-toradex/include/configs/verdin-imx8mp.h
/* Enable Distro Boot */
#define BOOT_TARGET_DEVICES(func) \
func(MMC, mmc, 1) \
func(MMC, mmc, 2) \
func(DHCP, dhcp, na)
#include <config_distro_bootcmd.h>
/* Initial environment variables */
#define CFG_EXTRA_ENV_SETTINGS \
BOOTENV \
MEM_LAYOUT_ENV_SETTINGS \
"boot_script_dhcp=boot.itb\0" \
"console=ttymxc2\0" \
"fdt_board=dev\0" \
"initrd_addr=0x43800000\0" \
"initrd_high=0xffffffffffffffff\0" \
"update_uboot=askenv confirm Did you load flash.bin (y/N)?; " \
"if test \"$confirm\" = \"y\"; then " \
"setexpr blkcnt ${filesize} + 0x1ff && setexpr blkcnt " \
"${blkcnt} / 0x200; mmc dev 2 1; mmc write ${loadaddr} 0x0 " \
"${blkcnt}; fi\0"
and /u-boot-toradex/include/config_distro_bootcmd.h
#define BOOTENV_DEV(devtypeu, devtypel, instance, ...) \
BOOTENV_DEV_##devtypeu(devtypeu, devtypel, instance, ## __VA_ARGS__)
#define BOOTENV \
BOOTENV_SHARED_HOST \
BOOTENV_SHARED_MMC \
BOOTENV_SHARED_PCI \
BOOTENV_SHARED_USB \
BOOTENV_SHARED_SATA \
BOOTENV_SHARED_SCSI \
BOOTENV_SHARED_NVME \
BOOTENV_SHARED_IDE \
BOOTENV_SHARED_UBIFS \
BOOTENV_SHARED_EFI \
BOOTENV_SHARED_VIRTIO \
BOOTENV_SHARED_EXTENSION \
"boot_prefixes=/ /boot/\0" \
"boot_scripts=boot.itb.uimg boot.itb\0" \
"boot_script_dhcp=boot.scr.uimg\0" \
"bootdir=/boot\0" \
"bootdir_dtb=/boot/freescale\0" \
"fdt_file=imx8mp-verdin-wifi-dahlia.dtb\0" \
"image=Image.gz\0" \
BOOTENV_BOOT_TARGETS \
\
but the config file for verdim imx95 doesnt include config_distro_bootcmd.h/* SPDX-License-Identifier: GPL-2.0-or-later */
/* Copyright (C) 2025 Toradex */
#ifndef __VERDIN_IMX95_H
#define __VERDIN_IMX95_H
#include <linux/sizes.h>
#include <asm/arch/imx-regs.h>
#define CFG_SYS_UBOOT_BASE \
(QSPI0_AMBA_BASE + CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR * 512)
/* module has 8GB, 2GB from 0x80000000..0xffffffff, 6GB above */
#define SZ_6G _AC(0x180000000, ULL)
/* first 256MB reserved for firmware */
#define CFG_SYS_INIT_RAM_ADDR 0x90000000
#define CFG_SYS_INIT_RAM_SIZE SZ_2M
#define CFG_SYS_SDRAM_BASE 0x90000000
#define PHYS_SDRAM 0x90000000
#define PHYS_SDRAM_SIZE (SZ_2G - SZ_256M)
#define PHYS_SDRAM_2_SIZE SZ_6G
#define WDOG_BASE_ADDR WDG3_BASE_ADDR
#endif
how can i apply my boot.itb?
Hi, I’m the Toradex AI Assistant.
I might make mistakes or occasionally get you wrong. Our support team will step in if needed.
Distro Boot Configuration for Verdin iMX95
Based on the documentation, Distro Boot is a standardized boot mechanism that allows U-Boot to scan through devices looking for boot configuration files(1). The boot sequence follows this order(1):
- External SD card
- Internal flash memory (raw NAND or eMMC)
- External USB storage
- External server via DHCP
Boot Configuration Files
For your custom boot.itb, you have two main approaches(1):
Option 1: Using extlinux.conf
Create an extlinux.conf file in the /extlinux/ or /boot/extlinux/ directory(1). U-Boot will execute the sysboot command on this file(1).
Option 2: Using boot.scr Script
Create a boot.scr or boot.scr.uimg file that U-Boot can execute directly(1). This provides absolute control over the U-Boot environment(1).
Implementation for Verdin iMX95
Since the Verdin iMX95 configuration doesn’t include the standard distro boot configuration, you’ll need to:
- Enable Distro Boot in your U-Boot configuration by adding the necessary defines similar to what you showed for iMX8MP
- Set the boot_scripts variable to include your
boot.itb(1)
- Configure the boot targets to scan the appropriate devices
The documentation shows that boot scripts can be named boot.itb.uimg or boot.itb(1), so your custom boot.itb should be recognized if properly configured.
U-Boot Environment Variables
You can also modify U-Boot environment variables to control the boot process(2). Key variables include:
boot_targets: Defines the sequence of device types U-Boot will try to boot from(2)
boot_scripts: Contains the list of script names to search for(1)
To help provide more specific guidance for your rootfsA/B and recovery partition setup, could you let me know which OS and version you’re running on your Verdin iMX95? You can use the tdx-info command to get detailed information about your setup.
Best regards,
Toradex AI Assistant.
Did you like my answer?

If I answered your question, please tick the “Solution” checkbox.
For follow-up questions to me, please use @ToradexAI in your post.
I am Flashing the imx-boot generated by yocto using uuu
SDPS: boot -f imx-boot
CFG: SDPV: -chip SPL1 -vid 0x1b67 -pid 0x4fff
SDPV: delay 1000
SDPV: write -f imx-boot -skipspl
SDPV: jump
#CFG: FB: -vid 0x1b67 -pid 0x4000
CFG: FB: -vid 0x1b67 -pid 0x4059
# Ahora ya estamos en U-Boot (cargado en RAM).
# Usamos fastboot (FB) para mandar comandos a la shell de U-Boot.
# Primero seleccionamos la eMMC (mmc 0).
FB: ucmd setenv fastboot_dev mmc
FB: ucmd setenv mmcdev 0
FB: flash bootloader imx-boot
When uuu is running i get
U-Boot SPL 2024.04-0+git.6fdd95106097 (Jul 30 2025 - 16:33:01 +0000)
SOC: 0xa1009500
LC: 0x40010
Trying to boot from USB SDP
Failed to configure default pinctrl
UID: 4136108629854c45b6385deabc823697
SDP: initialize...
SDP: handle requests...
Downloading file of size 1565696 to 0x90400000... done
Jumping to header at 0x90400000
Header Tag is not an IMX image
Found header at 0x90400000
NOTICE: BL31: v2.10.0 (release):automotive-15.0.0_1.1.0-dirty
NOTICE: BL31: Built : 08:52:12, Nov 4 2024
U-Boot 2024.04-0+git.6fdd95106097 (Jul 30 2025 - 16:33:01 +0000)
CPU: i.MX95 rev1.1 at 1800MHz
CPU: Automotive temperature grade (-40C to 125C) at 46C
LM Boot reason: unused, origin: -1, errid: -1
LM shutdown reason: unused, origin: -1, errid: -1
DRAM: Delete node /pcie@4ca00000/ethernet@10,0
but after rebooting
U-Boot SPL 2024.04-0+git.6fdd95106097 (Jul 30 2025 - 16:33:01 +0000)
SOC: 0xa1009500
LC: 0x40010
Trying to boot from MMC1
Primary set selected
Parse seco container failed -14
Load image from MMC/SD 0x0
mmc_load_image_raw_sector: mmc block read error
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###
It is not even trying to boot from MMC0(EMMC)
Boot Image Loading Issues on Verdin iMX95
The error you’re encountering indicates several potential issues with the boot process on your Verdin iMX95:
Boot Device Configuration Issue
The error message shows that U-Boot SPL is trying to boot from MMC1 instead of MMC0 (eMMC) as expected (1). This suggests a boot device configuration mismatch.
Container Parsing Error
The “Parse seco container failed -14” error indicates that the secure container format or signing is not correct for the iMX95 platform. This is critical because iMX95 requires properly formatted and signed boot containers.
Troubleshooting Steps
-
Verify Boot Configuration: Ensure your boot fuses are configured to boot from the correct MMC device (eMMC). The iMX95 boot configuration should point to MMC0 for eMMC boot.
-
Check Container Format: The iMX95 uses a different secure boot container format compared to iMX8MM/iMX8MP. Verify that your imx-boot image is generated specifically for iMX95 with the correct container format.
-
UUU Script Adjustment: Your UUU script shows you’re setting mmcdev 0 but the SPL is still trying MMC1. Try explicitly setting the boot device in your UUU script:
FB: ucmd setenv mmcdev 0
FB: ucmd mmc dev 0
- Build Configuration: When building U-Boot from source (2), ensure you’re using the correct defconfig for Verdin iMX95 and that all patches are properly applied in the correct order.
Boot Device Selection
The documentation shows that different boot devices require specific configuration (2). For eMMC boot on iMX95, you need to ensure:
- The boot fuses are programmed correctly
- The container format matches iMX95 requirements
- The SPL is configured to look at MMC0 first
To help troubleshoot this further, could you confirm which exact OS version and BSP you’re using for your Verdin iMX95? You can use the tdx-info command to get detailed information about your setup.
Best regards,
Toradex AI Assistant.
Did you like my answer?

If I answered your question, please tick the “Solution” checkbox.
For follow-up questions to me, please use @ToradexAI in your post.