Deploy a custom image to Mallow Carrier board - Verdin

Hi Team,

I am currently working on a project using Verdin iMX8MP SoM module with Mallow Carrier board.

As first step, I have followed the Quick Start Guide to set up the non-WiFi configuration on the board and installed the Multimedia image through Easy Installer.

Start Quickstart | Toradex Developer Center

I could see various images displayed on the HDMI.

Now I am trying to customize the OS based on the guidelines provided in the link below.

Customize Torizon OS Images | Toradex Developer Center

As an initial step, I am working on splash screen customization. I have successfully downloaded the Linux kernel, then device tree overlays and then Torizon OS. I have created the .yaml file and made the necessary changes as per the instructions in the link. The build process was successful, and the output was generated as torizon-docker-verdin-imx8mp.ota.tar.zst.

Now I am trying to deploy the custom image to the Carrier board through SSH. However, I encountered an issue with the first SSH command: 'images unpack,’ which is not working as expected.

Could you please review the steps I have taken so far and advise if they are correct?

Additionally, I need your guidance on the next steps to flash the custom image to the board through SSH.

Thanks,
Preethi

Hi, I’m the Toradex AI Assistant.

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


Hello Preethi,

Great progress on your customization work with the Verdin iMX8MP and Mallow Carrier board! I can help you with the SSH deployment process.

Review of Your Steps

Your approach so far looks correct (1):

  • Downloaded the Linux kernel and device tree overlays
  • Downloaded Torizon OS image
  • Created the YAML configuration file
  • Successfully built the custom image generating torizon-docker-verdin-imx8mp.ota.tar.zst

SSH Deployment Process

For SSH deployment, you need to follow these specific steps (1):

Step 1: Unpack Your Custom Image

First, you need to unpack the generated image folder (not the .tar.zst file). The command should target the folder that was generated during the build process (1):

torizoncore-builder images unpack torizon-docker-verdin-imx8mp-Tezi_7.3.0+build.18/

(1)

Important: Use the folder path, not the .ota.tar.zst file. The folder should have been created alongside the .ota.tar.zst file during your build process (1).

Step 2: Deploy to Your Board

Once the image is unpacked, deploy it to your board (1):

torizoncore-builder deploy --remote-host <BOARD-IP> --remote-username <USERNAME> --remote-password <PASSWORD> --reboot

(1)

Note: Starting with TorizonCore Builder 3.1.0, the default values for --remote-username and --remote-password are torizon, so if either the username or password is torizon, you can omit the corresponding argument (1).

Important Limitations

Please be aware that SSH deployment has some limitations (1):

  • This operation only alters the OSTree, so it does not support deploying pre-provisioned containers (1)
  • The deployment transfers only the missing objects to the board via SSH and registers the new commit for the next boot (1)

Alternative Deployment Methods

If you encounter issues with SSH deployment, you can also use (1):

  • Toradex Easy Installer: Copy the generated folder to a USB stick
  • Torizon Cloud: Push the image to Torizon Cloud for remote deployment

Let me know if you need clarification on any of these steps or encounter specific error messages!

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.

Greetings @PreethiT,

Your post is a bit confusing and has some contradictory information.

First of all, you said you installed our multimedia image:

As first step, I have followed the Quick Start Guide to set up the non-WiFi configuration on the board and installed the Multimedia image through Easy Installer.

But then, later in your post you talk about Torizon OS. So which OS software are you using exactly? These are different.

You say you’re trying to do splash screen customization, but then talk about Linux kernel, and device tree overlays:

As an initial step, I am working on splash screen customization. I have successfully downloaded the Linux kernel, then device tree overlays and then Torizon OS.

These thing are not needed if you’re just changing the splash screen.

The build process was successful, and the output was generated as torizon-docker-verdin-imx8mp.ota.tar.zst.

The output should have been a directory not a single file.

Now I am trying to deploy the custom image to the Carrier board through SSH. However, I encountered an issue with the first SSH command: 'images unpack,’ which is not working as expected.

What was the issue exactly?

Please clarify these details and exact steps otherwise it’s difficult for us to determine what you are exactly doing.

Best Regards,
Jeremias

Hi

The multimedia image was to test the board is functioning as per the Quick start guide.

My aim is to customize the Torizon OS. As a first step I am trying Splash screen customization.

I have the necessary details to build the OS like Linux, device tree overlays, .yaml file. Though these are not required for Splash screen, it was mentioned in the manual that these are required for build process. Now I have successfully built the OS. As you mentioned, there is a directory containing multiple files.

Now I need to flash this image to the board. I thought of trying through SSH, but the manual mentioned there has to be a Torizon OS in the board after which I can deploy the custom image to the board. The board actually has multimedia image (Wayland).

So I thought of trying through USB. I have few queries with USB process. I have a output directory with .json, .png, .html, .sh, .ota.tar.zst. Should I transfer the complete directory to USB and flash through Easy Installer. Or what is the correct method?

Thanks

Should I transfer the complete directory to USB and flash through Easy Installer. Or what is the correct method?

Transfer the entire output directory to a USB and use Toradex Easy Installer to flash the customized OS image.

Best Regards,
Jeremias

Hi

I have copied the output folder to USB and installed through Easy Installer. After reboot, I am expecting a splash image on the HDMI display but it didnt come up. After several steps of verification it seems to be OSTree mismatch. I have mentioned the steps I have tried. I have also attached the logs and .yaml file for your reference.

  1. For tdx-info
    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/e9983cf28ab65b5d3e5317ca6eb75a0e0fbf57027977507792bad292f8022e96/0
    Distro name: NAME=“Torizon OS”
    Distro version: VERSION_ID=7.4.0-build.28
    Distro variant: VARIANT=“Docker”
    Hostname: verdin-imx8mp-15697349

Hardware info
HW model: Toradex Verdin iMX8M Plus on Mallow Board
Toradex version: 0058 V1.1B
Serial number: 15697349
Processor arch: aarch64

  1. For cat /etc/os-release
    ID=torizon
    NAME=“Torizon OS”
    VERSION=“7.4.0+build.28 (scarthgap)”
    VERSION_ID=7.4.0-build.28
    VERSION_CODENAME=“scarthgap”
    PRETTY_NAME=“Torizon OS 7.4.0+build.28 (scarthgap)”
    CPE_NAME=“cpe:/o:openembedded:torizon:7.4.0+build.28”
    BUILD_ID=“28”
    ANSI_COLOR=“1;34”
    VARIANT=“Docker”

  2. For ostree admin status
    torizon 84e12a395c0155a871e53967c81f32fd471771151fd8b7a804d7c135e06bfb25.0
    Version: 7.4.0+build.28-tcbuilder.20251217134332
    origin refspec: torizon

  3. cat /proc/cmdline
    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/e9983cf28ab65b5d3e5317ca6eb75a0e0fbf57027977507792bad292f8022e96/0

  4. sudo fw_printenv | grep bootcount
    bootcount=1

  5. sudo ostree refs
    tcbuilder-20251217134331

  6. sudo ostree log torizon
    error: Refspec ‘torizon’ not found

  7. sudo ostree refs --create=torizon 84e12a395c0155a871e53967c81f32fd471771151fd8b7a804d7c135e06bfb25

  8. sudo ostree refs
    tcbuilder-20251217134331
    torizon

  9. sudo ostree log torizon
    commit 84e12a395c0155a871e53967c81f32fd471771151fd8b7a804d7c135e06bfb25
    Parent: 95ec6c36a6b5ec0ee9b2f8038c9ea5eed262087f4e6f42b923225d68d40a8c51
    ContentChecksum: 7d3300ec044c7273f32f3eb0768a3716fcdab86ad8124f42bfa4c9958ea500e5
    Date: 2025-12-17 13:43:32 +0000
    Version: 7.4.0+build.28-tcbuilder.20251217134332

    TorizonCore Builder union commit created at 2025-12-17T13:43:32
    

    << History beyond this commit not fetched >>

  10. sudo ostree admin deploy torizon
    Copying /etc changes: 3 modified, 2 removed, 15 added
    Transaction complete; bootconfig swap: yes; bootversion: boot.0.1, deployment count change: 1

  11. sudo reboot

    Sudo reboot logs.docx (17.1 KB)

    torizoncore build logs.docx (16.3 KB)

    tcbuild.yaml (8.8 KB)

    Please let me know what am I missing in the process.
    Is it possible to schedule a meeting so that I can understand the process of customizing the OS?

    Thanks

To customize the splash screen you just need to follow the steps outlined in this article: Splash Screen on Torizon OS | Toradex Developer Center

The stuff you did on the device with ostree and such is not needed at all.

Best Regards,
Jeremias

Hi
I am following the process under this section Development and Production: Add a Custom Splash Screen with TorizonCore Builder. This section comer under the link you shared.

I have used Approach 1 using the build command. Approach 1: Applying a Splash Screen to a Custom Image: Using the Build Command

  1. I have downloaded the linux kernel from toradex git v6.6
  2. I have downloaded the device tree overlays
  3. I have downloaded the Torizon OS image torizon docker verdin imx8mp Tezi 7.4.0 build 28
  4. I have downloaded the splash image
  5. I have created a .yaml file and added the customisation. The file was attached in the previous chat.
  6. I have build the image using torizon core builder
  7. The image is deployed through USB.
  8. In the previous chat, the steps mentioned were to verify my image loaded to the SoM and few recommended steps were taken to resolve the problem.

Now let me know what steps are missed from my end. How to customize the Torizon OS.
If you could provide the detailed steps, it will be helpful.

Thanks

Are you sure you’re closely following the article about splash screen customization that I linked?

No where in that article does it mention downloading the Linux kernel or device tree overlays. So I’m not sure where you got these steps from.

Best Regards,
Jeremias