Verdin IMX8M plus not booting

Hello, I have a Verdin iMX8M Plus on Dahlia Carrier v1.1D running Torizon OS 7.6. After a normal sudo poweroff, the board stopped booting normally. Recovery mode works, normal boot shows no console output. Hardware: Verdin iMX8M Plus + Dahlia v1.1D, Torizon OS 7.6.1+build.38, 12V/5A on X9.

Symptom:

  • Normal boot: PuTTY on debug UART shows zero output. No U-Boot banner, no kernel logs, no login.

  • DSI-to-LVDS converter does not power on.

  • Recovery mode works perfectly. TEZI shell fully accessible.

What I tried:

  1. Reinstalled Torizon 7.6.1+build.38 via TEZI GUI. Install reports success, but normal boot still silent.

  2. eMMC health (from TEZI shell):

    • LIFE_TIME_EST_TYP_A: 0x01

    • LIFE_TIME_EST_TYP_B: 0x01

    • PRE_EOL_INFO: 0x01 (Normal)

  3. eMMC boot config:

    • PARTITION_CONFIG: 0x48

    • BOOT_BUS_CONDITIONS: 0x12

    • BOOT_CONFIG_PROT: 0x00

  4. Bootloader in /dev/mmcblk2boot0 is intact — valid IVT signature d1 00 20 41.

Questions:

  1. why does the board not boot normally when emmc is healthy, bootloader is intact, and install succeeds.
  2. what is the recommend path to recover this module ?

I have detailed shell logs and can share them in a reply if needed.

Thanks.

Hi, I’m the Toradex AI Assistant.

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


Based on your description, the eMMC health is excellent and the bootloader appears intact, yet you’re getting zero UART output during normal boot while recovery mode works perfectly. This suggests the issue lies in the boot configuration or boot partition selection rather than hardware failure.

Diagnostic Steps

1. Verify Boot Partition Selection

From the TEZI shell, confirm which boot partition is being used:

mmc bootpart enable 1 1 /dev/mmcblk2

The PARTITION_CONFIG: 0x48 you reported indicates boot partition 1 should be active. However, if the ROM is trying to boot from the wrong partition or if boot partition 1 is corrupted while boot partition 0 contains the valid bootloader, this would explain the silent boot.

2. Check Both Boot Partitions

Verify the bootloader exists in both boot partitions:

dd if=/dev/mmcblk2boot0 bs=1 skip=0 count=4 | hexdump -C
dd if=/dev/mmcblk2boot1 bs=1 skip=0 count=4 | hexdump -C

Both should show the IVT signature d1 00 20 41. If only one does, the boot configuration may be pointing to the empty partition.

3. Force Bootloader Reinstallation

From TEZI shell, manually flash the bootloader to both boot partitions:

echo 0 > /sys/block/mmcblk2boot0/force_ro
echo 0 > /sys/block/mmcblk2boot1/force_ro
dd if=/path/to/imx-boot of=/dev/mmcblk2boot0 bs=1k seek=33
dd if=/path/to/imx-boot of=/dev/mmcblk2boot1 bs=1k seek=33
sync

The bootloader binary should be available in the TEZI image directory.

4. Reset eMMC Boot Configuration

Try resetting the boot configuration to defaults:

mmc bootbus set single_backward x1 x8 /dev/mmcblk2
mmc bootpart enable 1 1 /dev/mmcblk2

Recommended Recovery Path

  1. Use Toradex Easy Installer to perform a full erase and reinstall:

    • In TEZI, select “Wipe” before installing
    • This ensures all partitions are properly initialized
  2. If the above fails, manually restore the bootloader:

    • Extract imx-boot from the Torizon OS 7.6.1+build.38 image
    • Flash it to both boot partitions as shown above
    • Verify boot configuration with mmc bootpart
  3. Check for custom device tree overlays:

    • If you had custom overlays applied, they might prevent boot if misconfigured(1)
    • Boot without overlays by setting skip_fdt_overlays=1 in U-Boot (if you can access it)

Additional Diagnostics

Since recovery mode works, you can also:

  • Check the OSTree deployment status from TEZI shell by mounting the rootfs and examining /ostree/deploy/torizon/deploy/
  • Verify the kernel and device tree files are present in the boot directory

The fact that recovery mode works perfectly indicates the hardware (SoM, carrier board, power supply) is functioning correctly. The issue is almost certainly in the boot configuration or the installed OS image state.

Please share your detailed shell logs if these steps don’t resolve the issue, particularly:

  • Output of mmc extcsd read /dev/mmcblk2
  • Contents of both boot partitions (first 512 bytes)
  • Any error messages from the TEZI installation log

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.

putty recovery logs.txt (8.2 KB)

Putty Logs.txt (18.3 KB)

These are the logs I captured from PuTTY while booting the module in recovery mode. However, after successfully installing the Torizon OS, I don’t get any boot logs on the serial console.

What confuses me is that the module was working correctly for the past three months. The issue started suddenly after I executed the sudo poweroff command to shut down the system. Since then, whenever I power the SOM back on, it no longer boots normally and produces no serial output after the Torizon OS installation

Thank you for providing the logs. Based on your description of a sudden boot failure after sudo poweroff on a previously working system, combined with the fact that recovery mode works perfectly, this points to a specific boot configuration issue rather than hardware failure.

Analysis of Your Situation

The pattern you describe—working normally for three months, then sudden failure after a clean shutdown with no serial output whatsoever—suggests one of these scenarios:

  1. Boot partition corruption or misconfiguration during shutdown
  2. eMMC boot configuration register changed unexpectedly
  3. Bootloader binary corruption in the active boot partition

Since TEZI works perfectly, the SoM hardware, eMMC controller, and UART are all functional. The issue is isolated to the normal boot path.

Immediate Recovery Steps

Step 1: Verify and Restore Boot Configuration

From the TEZI shell, execute these commands to check and reset the boot configuration:

# Check current boot configuration
mmc extcsd read /dev/mmcblk2 | grep -E "PARTITION_CONFIG|BOOT_BUS"

# Reset boot configuration to known-good defaults
echo 0 > /sys/block/mmcblk2boot0/force_ro
echo 0 > /sys/block/mmcblk2boot1/force_ro

# Set boot partition 1 as active with acknowledgment
mmc bootpart enable 1 1 /dev/mmcblk2

# Configure boot bus width
mmc bootbus set single_backward x1 x8 /dev/mmcblk2

sync

Step 2: Verify Bootloader in Both Boot Partitions

Check if the bootloader exists in both boot partitions:

# Check boot partition 0
dd if=/dev/mmcblk2boot0 bs=512 count=1 | hexdump -C | head -n 5

# Check boot partition 1
dd if=/dev/mmcblk2boot1 bs=512 count=1 | hexdump -C | head -n 5

Both should show the IVT header d1 00 20 41 at the beginning. If one is missing or corrupted, that’s your problem.

Step 3: Manual Bootloader Restoration

If the bootloader is missing or corrupted in the active boot partition, you need to restore it. From TEZI shell:

# Mount the boot partition from the installed image
mkdir -p /mnt/boot
mount /dev/mmcblk2p1 /mnt/boot

# The bootloader should be in the boot directory
ls -la /mnt/boot/

# If imx-boot exists, flash it to both boot partitions
echo 0 > /sys/block/mmcblk2boot0/force_ro
echo 0 > /sys/block/mmcblk2boot1/force_ro

# Flash to boot partition 0 (offset 33KB as per i.MX8M Plus spec)
dd if=/mnt/boot/imx-boot of=/dev/mmcblk2boot0 bs=1k seek=33 conv=fsync

# Flash to boot partition 1
dd if=/mnt/boot/imx-boot of=/dev/mmcblk2boot1 bs=1k seek=33 conv=fsync

sync

Step 4: Complete Wipe and Reinstall

If the above steps don’t work, perform a complete wipe:

  1. In TEZI GUI, before installing, select the “Wipe” option
  2. This erases all eMMC partitions and boot configuration
  3. Then install Torizon OS 7.6.1+build.38 fresh
  4. This ensures all boot registers and partitions are initialized correctly

Potential Root Cause: eMMC Write Protection Issue

Given that this happened after a poweroff command, there’s a possibility (though rare) that the eMMC entered a write-protected state during shutdown. While your health indicators look good, it’s worth checking(1):

From TEZI shell:

# Check if eMMC is write-protected
mmc writeprotect user get /dev/mmcblk2

# Check boot partition write protection
cat /sys/block/mmcblk2boot0/force_ro
cat /sys/block/mmcblk2boot1/force_ro

If any write protection is enabled unexpectedly, this could prevent proper boot.

What Likely Happened

Based on your symptoms, the most probable scenario is:

  1. During the poweroff sequence, something interrupted the eMMC boot configuration or corrupted the bootloader in the active boot partition
  2. The eMMC boot configuration register (PARTITION_CONFIG) may have been modified, causing the ROM to attempt booting from an empty or corrupted partition
  3. Since recovery mode uses a different boot path (USB/UART download mode), it bypasses the eMMC boot configuration entirely, which is why it works

Next Steps

  1. Execute the boot configuration reset commands above
  2. Verify bootloader presence in both boot partitions
  3. If needed, manually restore the bootloader
  4. If all else fails, perform a complete wipe and reinstall

Please share the output of these commands:

mmc extcsd read /dev/mmcblk2 | grep -E "PARTITION_CONFIG|BOOT_BUS|BOOT_CONFIG_PROT"
dd if=/dev/mmcblk2boot0 bs=512 count=1 | hexdump -C | head -n 5
dd if=/dev/mmcblk2boot1 bs=512 count=1 | hexdump -C | head -n 5

This will help pinpoint exactly where the boot path is breaking.

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.

1. eMMC Boot Configuration


Boot configuration bytes [PARTITION_CONFIG: 0x48]
Boot bus Conditions [BOOT_BUS_CONDITIONS: 0x12]
Boot config protection [BOOT_CONFIG_PROT: 0x00]

2. Boot Partition 0

The beginning of /dev/mmcblk2boot0 contains a valid IVT header and bootloader code:


00000000  d1 00 20 41 00 00 92 00 00 00 00 00 00 00 00 00
00000010  e0 ff 91 00 c0 ff 91 00 c0 6f 94 00 00 00 00 00
00000020  c0 ff 91 00 00 90 02 00 00 00 00 00 00 00 00 00
00000030  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

I also verified a larger portion of Boot0, and it contains executable bootloader code (not just the IVT header).

3. Boot Partition 1

/dev/mmcblk2boot1 is completely empty:


00000000  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*

4. eMMC Write Protection


Write Protect Groups 0-3729 (Blocks 0-61112319), No Write Protection

Both boot partitions also report:


cat /sys/block/mmcblk2boot0/force_ro
0

cat /sys/block/mmcblk2boot1/force_ro
0

5. eMMC Health


LIFE_TIME_EST_TYP_A = 0x01
LIFE_TIME_EST_TYP_B = 0x01
PRE_EOL_INFO = 0x01

6. Partition Table

The eMMC is detected correctly, and the Linux partition is present:


Disk /dev/mmcblk2: 29 GB

/dev/mmcblk2p1  Linux  29.1G