Simplest path to getting a device tree overlay running on a Dhalia with IMX8MP*?

I am new to Toradex. I am trying to get my device-tree-overlay running on the target board. I am using a new out-of-the-box Dhalia with IMX8MP SOM. I used the Easy Installer to initialize it and install Linux verdin-imx8mp-15460512 6.6.84-7.2.0-g87bfb710b6f1 . I changed the password on the Torizon user.

Dev box is Windows with WSL and docker and corebuilder and VSCODE with the Torizon extension all installed.

The two machines can talk over TCPIP. The target shows up as “connected” under the VSCODE extension. I have both SSH and debug console access.

For now, I just want to get a device-tree overlay running on the target. I have think I have tried every path through the step-by-step instructions on…

…but I seem to end at an impass every time. Some examples:

Trying the corebuild dto deply command, I get “The dt checkout command is not supported on TorizonCore 6 and newer.”

When I clone the device trees and overlays as instructed, then I get “‘device-trees’ directory already exists”.

When I try using a tcbuild.yaml with my dtso under input: customization: device-tree: overlays: add:, and then do a torizoncore-builder build it seems to build fine and reports that my overlay is included, and then I do a torizoncore-builder deploy --remote-host 10.0.0.47 --remote-username torizon --remote-password xxxx --force --reboot, it connects to and reboots the target. But then after the target reboots, I do not see the new overlay in /proc/device-tree/chosen/overlays/ and there is no mention of it in dmesg or on the boot console.

I am really getting desperate here and would happy pay for support if there is anyone out there who would be willing to 1:1 with me to get this going.

Otherwise, can anyone point me to a simple, deterministic path to getting my sample.dtso running on this target board? (Am am happy to wipe/reinstall anything and everything in pursuit of this goal!)

Thank you!!!

-josh

Hi, I’m the Toradex AI Assistant. The Toradex Support team will follow up with you shortly!

Did you like my answer?

:+1: :-1:


Hello!

To get a device tree overlay running on Torizon OS, follow these straightforward steps:

  1. Create Your Custom Overlay: Begin by creating your custom overlay .dts file. You can find guidance on this process in the Toradex Developer Guide.

  2. Configure tcbuild.yaml: Set up a tcbuild.yaml file with the following structure to include your overlay:

    customization:
      device-tree:
        include-dirs:
          - device-trees/include/
        overlays:
          add:
            - device-trees/overlays/<your-custom-device-tree-overlay.dts>
    
  3. Build and Deploy with TorizonCore Builder: Use the TorizonCore Builder tool to build and deploy your overlay:

    $ torizoncore-builder build
    $ torizoncore-builder deploy --remote-host <ip-addr> --remote-username torizon --remote-password torizon --reboot
    

    After deployment, verify that the overlay is loaded by checking the /boot/overlays.txt file for the overlay filename. Remember to run the sync command before rebooting.

For testing or development purposes, you can manually deploy the overlay by:

  1. Copying the .dtbo file to /boot/overlays/.
  2. Adding the filename to /boot/overlays.txt.
  3. Running sync and then rebooting.

If you need further clarification on any of these steps, feel free to ask!

Best regards,
Toradex AI Assistant.

Yes, I have tried the exact steps listing in your first “straightforward steps” option, and have reported the failures I encountered in my original post.

I have also tried the steps in your “manually deploy the overlay” suggestion, but there is no /boot/overlays dir on my target machine, only /boot/ostree/torizon-157a467dd3b97eaebfbf6e17d0c8859fdd0abc1d397c637c6ecd808f79dc0260/dtb/overlays and TBH I do not know anyhting about the ostree tool and was hoping to get this working without having to learn it. :slight_smile:

Hi @bigjosh

Can you provide the tcbuild.yaml file you tested?


Can you run a “ls” on this folder and check if you can see your overlay?
ls /boot/ostree/torizon-157a467dd3b97eaebfbf6e17d0c8859fdd0abc1d397c637c6ecd808f79dc0260/dtb/overlays

The overlays.txt, where you can set the active overlays, should also be on the dtb folder


Can you provide the tcbuild.yaml file you tested?
Most recently tried tcbuild.yaml:

# >> NOTES:
# >> Lines containing ">>" are simply comments explaining the properties that
# >> follow; if you don't like these comments run:
# >>   $ grep -v '>>' tcbuild.yaml > tcbuild-clean.yaml
# >> A line not containing ">>" can be uncommented (by removing the hash mark
# >> plus a space from its beginning); also set the corresponding property to
# >> appropriate values.
# >> When uncommenting a line having a property, remember to uncomment all its
# >> parent properties as well; for example: if you uncomment the
# >> 'splash-screen' property, also uncomment its parent property called
# >> 'customization'.

# >> The input section specifies the image to be taken as the base for the
# >> customization.
input:
  easy-installer:
    # >> Choose one of the options (REQUIRED):
    # >> (1) Image as local folder or tarball.
    local:  torizon-docker-verdin-imx8mp-Tezi_7.2.0+build.13.tar
    # >> (2) Remote file (optionally with a filename and or a sha256 checksum):
    # remote: "https://artifacts.toradex.com/.../torizon-core-docker-apalis-imx8-Tezi_5.1.0%2Bbuild.1.tar"
    # remote: "https://artifacts.toradex.com/.../torizon-core-docker-colibri-imx6-Tezi_5.0.0-devel-202009%2Bbuild.2.tar;filename=torizon-core-docker-colibri-imx6-Tezi_5.0.0-devel-202009+build.2.tar;sha256sum=368595fa3fb00af9604e70311de3b04df6b30b280deec2f8918c46f479026ddb"
    # >> (3) Image specification (URL will be generated by the tool)
    # toradex-feed:
    #   version: "5.1.0"
    #   release: quarterly
    #   machine: colibri-imx7-emmc
    #   distro: torizon-upstream
    #   variant: torizon-core-docker
    #   build-number: "1"
    #   # build-date: "20210408"
  # >> If using a Torizon OS image in .wic or .img format, like found in some Common Torizon images,
  # >> use the option below:
  # raw-image:
    # local: torizon-core-common-docker-dev-intel-corei7-64.wic
    # >> (OPTIONAL) specify the filesystem label where rootfs is located in the image.
    # >> If not defined it defaults to 'otaroot'
    # rootfs-label: otaroot

# >> The customization section defines the modifications to be applied to get
# >> the desired output image.
customization:
  # >> Splash screen:
  # splash-screen: custom-splash-screen.png
  # >> Directories overlayed to the base OSTree
  # filesystem:
     # - changes/
  device-tree:
    # >> Directories where to look for include files.
    include-dirs:
      - device-trees/include/
    # >> Custom device tree source:
    # custom: device-trees/dts-arm32/imx6ull-colibri-eval-v3.dts
    # >> Device-tree overlays configuration:
    overlays:
      # >> Whether to ignore all overlays from the base image (or ostree
      # >> archive in the future).
      # clear: false
      # >> Specific overlays not to use from base image (useful only when
      # >> clear is false and not DT has been selected).
      remove:
        - verdin-imx8mp_hdmi_overlay.dtbo
        - verdin-imx8mp_spidev_overlay.dtbo
        # - apalis-imx8_hdmi_overlay.dtbo
      # >> Overlays to add to output image.
      add:
        - flexspi-spidev.dtso
  # kernel:
    # >> Custom kernel arguments.
    # arguments:
      # - key1=val1
      # - key2=val2
    # >> Modules to build and possibly load automatically.
    # modules:
      # - source-dir: virtual_touchscreen/
      #   autoload: false

# >> The output section defines properties of the output image.
output:
  # >> OSTree deployment configuration (relevant also for raw/Easy Installer output).
  # ostree:
    # branch: my-dev-branch
    # commit-subject: "OSTree commit subject"
    # commit-body: "OSTree commit body"
  # >> Choose one of the options (REQUIRED):
  # >> (1) Parameters for deploying a WIC/raw image.
  # raw-image:
    # >> (REQUIRED) output file/directory of the customized image:
    # local: tcb_common_torizon.wic
    # >> (OPTIONAL) specify the filesystem label where rootfs is located in the base image.
    # >> If not defined it defaults to 'otaroot'.
    # base-rootfs-label: otaroot
    # >> (OPTIONAL) base image for the output.
    # >> If not set it will default to be the same as the input one.
    # >> Do not change this unless you know what you're doing.
    # base-image:
    # bundle:
      # >> Choose one of the options:
      # >> (1) Specify a docker-compose file whose referenced images will be downloaded.
      # >>     Properties platform, username, password, registry, ca-certificate and
      # >>     keep-double-dollar-sign are optional.
      # >>     When using a docker-compose file all config values with '$$' will be replaced
      # >>     by '$', unless keep-double-dollar-sign is set to true.
      # compose-file: files/docker-compose.yml
      # platform: linux/arm64
      # username: "${USERNAME}"
      # password: "${PASSWORD}"
      # registry: hub.docker.com
      # ca-certificate: cacert.pem
      # keep-double-dollar-sign: false
      # dind-params:
        # - '--param1'
        # - '--param2'
      # dind-env:
        # - 'VAR1=value1'
      # >> (2) Specify a local directory containing the bundled images (previously
      # >>     obtained by 'torizoncore-builder bundle' command).
      # dir: bundle/
  # >> (2) Parameters for deploying to an Easy Installer image.
  easy-installer:
    # >> Output directory of the customized image (REQUIRED):
    local: output_directory
    # >> Information used by Toradex Easy Installer:
    # name: "My customized image"
    # description: "My customized image (description)"
    # licence: files/custom-licence.html
    # release-notes: files/custom-release-notes.html
    # accept-licence: true
    # autoinstall: true
    # autoreboot: true
    # bundle:
      # >> Choose one of the options:
      # >> (1) Specify a docker-compose file whose referenced images will be downloaded.
      # >>     Properties platform, username, password, registry, ca-certificate and
      # >>     keep-double-dollar-sign are optional.
      # >>     When using a docker-compose file all config values with '$$' will be replaced
      # >>     by '$', unless keep-double-dollar-sign is set to true.
      # compose-file: files/docker-compose.yml
      # platform: linux/arm/v7
      # username: "${USERNAME}"
      # password: "${PASSWORD}"
      # registry: hub.docker.com
      # ca-certificate: cacert.pem
      # keep-double-dollar-sign: false
      # >> (2) Specify a local directory containing the bundled images (previously
      # >>     obtained by 'torizoncore-builder bundle' command).
      # dir: bundle/
    # >> Provisioning configuration:
    # provisioning:
      # >> For "online" mode, properties "shared-data" and "online-data" must be specified.
      # >> For "offline" mode, property "shared-data" must be specified alone.
      # mode: "online"
      # shared-data: "shared-data.tar.gz"
      # online-data: "${ONLINE_PROVISIONING_DATA:?online provisioning data not supplied}"
      # >> Provision in hibernated mode. In this state devices are registered, but
      # >> cannot send/receive data to/from Torizon Cloud, and they're not counted
      # >> towards a subscription.
      # hibernated: false

Can you run a “ls” on this folder and check if you can see your overlay?

torizon@verdin-imx8mp-15460512:/boot$ ls /boot/ostree/torizon-157a467dd3b97eaebfbf6e17d0c8859fdd0abc1d397c637c6ecd808f79dc0260/dtb/overlays
verdin-imx8mp_dsi-to-hdmi_overlay.dtbo                                verdin-imx8mp_mezzanine_panel-lvds-dual-channel-1080p_overlay.dtbo
verdin-imx8mp_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dtbo    verdin-imx8mp_nau8822-btl_overlay.dtbo
verdin-imx8mp_dsi-to-lvds_panel-lvds-dual-channel-1080p_overlay.dtbo  verdin-imx8mp_ov5640_overlay.dtbo
verdin-imx8mp_hdmi_overlay.dtbo                                       verdin-imx8mp_panel-cap-touch-10inch-dsi_overlay.dtbo
verdin-imx8mp_hmp_overlay.dtbo                                        verdin-imx8mp_panel-cap-touch-10inch-lvds_overlay.dtbo
verdin-imx8mp_mezzanine_ov5640-alt-jumpers_overlay.dtbo               verdin-imx8mp_panel-cap-touch-7inch-dsi_overlay.dtbo
verdin-imx8mp_mezzanine_ov5640-default-jumpers_overlay.dtbo           verdin-imx8mp_spidev_overlay.dtbo
verdin-imx8mp_mezzanine_panel-cap-touch-10inch-lvds_overlay.dtbo


torizon@verdin-imx8mp-15460512:/boot$ cat /boot/ostree/torizon-157a467dd3b97eaebfbf6e17d0c8859fdd0abc1d397c637c6ecd808f79dc0260/dtb/overlays.txt
fdt_overlays=verdin-imx8mp_hdmi_overlay.dtbo verdin-imx8mp_dsi-to-hdmi_overlay.dtbo verdin-imx8mp_spidev_overlay.dtbo

I do not see it.

Thank you!

-josh

BTW, here is the output from a build/deploy cycle with the above ‘tcbuild.yaml’…

🐧 josh @DESKTOP-CR2BPO8~/dts: torizoncore-builder build
Building image as per configuration file 'tcbuild.yaml'...

=>> Handling input section
Unpacking Toradex Easy Installer image.
Unpacking TorizonCore Toradex Easy Installer image.
Importing OSTree revision 789c47c5e2f5cd8d1aa177ed9db1da6ae097ea69188980e51bf534e463966269 from local repository...
1271 metadata, 9767 content objects imported; 650.0 MB content written
0 metadata, 0 content objects imported; 0 bytes content written
Unpacked OSTree from Toradex Easy Installer image:
  Commit checksum: 789c47c5e2f5cd8d1aa177ed9db1da6ae097ea69188980e51bf534e463966269
  TorizonCore Version: 7.2.0+build.13

=>> Handling customization section

=> Handling device-tree subsection
Not testing overlay because base image does not have a device-tree set!

=> Adding device-tree overlay 'flexspi-spidev.dtso'
'flexspi-spidev.dtso' compiles successfully.
Overlay flexspi-spidev.dtbo successfully applied.

=>> Handling output section
Applying changes from STORAGE/dt.
Commit 698bf91e909e0f8f46a3b71e691ef290ca7e2a1e9171acb587f739f9f9d2dc89 has been generated for changes and is ready to be deployed.
Deploying commit ref: tcbuilder-20250429182837
Pulling OSTree with ref tcbuilder-20250429182837 from local archive repository...
  Commit checksum: 698bf91e909e0f8f46a3b71e691ef290ca7e2a1e9171acb587f739f9f9d2dc89
  TorizonCore Version: 7.2.0+build.13-tcbuilder.20250429182837
  Default kernel arguments: quiet logo.nologo vt.global_cursor_default=0 plymouth.ignore-serial-consoles splash fbcon=map:3

1271 metadata, 9768 content objects imported; 650.0 MB content written
Pulling done.
Deploying OSTree with checksum 698bf91e909e0f8f46a3b71e691ef290ca7e2a1e9171acb587f739f9f9d2dc89
Bootloader found in unpacked image: U-Boot
Deploying done.
Copy files not under OSTree control from original deployment.
Packing rootfs...
Packing rootfs done.

=>> Build command successfully executed!
🐧 josh @DESKTOP-CR2BPO8~/dts: torizoncore-builder deploy --remote-host 10.0.0.47 --remote-username torizon --remote-password xxxx --reboot
Pulling OSTree with ref base (checksum 789c47c5e2f5cd8d1aa177ed9db1da6ae097ea69188980e51bf534e463966269) from local archive repository...
Starting http server to serve OSTree.
OSTree server listening on "localhost:35111".
Starting OSTree pull on the device...
Deploying new OSTree on the device...
Deploying successfully finished.
Device reboot initiated...
🐧 josh @DESKTOP-CR2BPO8~/dts:

…and double checking the target after that…

Starting kernel ...

[    1.106457] pca953x 3-0021: failed writing register
Starting systemd-udevd version 255.17^
sysroot.readonly configuration value: 0 (fs writable: 1)
Using legacy ostree bind mount for /
[    6.700042] fsl-aud2htx 30cb0000.aud2htx: failed to pcm register
[    6.718310] imx_sec_dsim_drv 32e60000.mipi_dsi: [drm] *ERROR* modalias failure on /soc@0/bus@32c00000/mipi_dsi@32e60000/port@1
[    6.734439] imx-bus-devfreq 32700000.interconnect: failed to fetch clk: -2

Torizon OS 7.2.0+build.13 verdin-imx8mp-15460512 ttymxc2

verdin-imx8mp-15460512 login: torizon
Password:

** WARNING **
THIS DEVICE IS IN ENGINEERING MODE

Check for more info:
https://developer.toradex.com/torizon/application-development/ide-extension

torizon@verdin-imx8mp-15460512:~$ ls /boot/
boot/     loader/   loader.1/ ostree/
torizon@verdin-imx8mp-15460512:~$ ls /boot/ostree/torizon-157a467dd3b97eaebfbf6e17d0c8859fdd0abc1d397c637c6ecd808f79dc0260/
dtb/                                      initramfs-6.6.84-7.2.0-g87bfb710b6f1.img  vmlinuz-6.6.84-7.2.0-g87bfb710b6f1
torizon@verdin-imx8mp-15460512:~$ ls /boot/ostree/torizon-157a467dd3b97eaebfbf6e17d0c8859fdd0abc1d397c637c6ecd808f79dc0260/dtb/overlays
verdin-imx8mp_dsi-to-hdmi_overlay.dtbo                                verdin-imx8mp_mezzanine_panel-lvds-dual-channel-1080p_overlay.dtbo
verdin-imx8mp_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dtbo    verdin-imx8mp_nau8822-btl_overlay.dtbo
verdin-imx8mp_dsi-to-lvds_panel-lvds-dual-channel-1080p_overlay.dtbo  verdin-imx8mp_ov5640_overlay.dtbo
verdin-imx8mp_hdmi_overlay.dtbo                                       verdin-imx8mp_panel-cap-touch-10inch-dsi_overlay.dtbo
verdin-imx8mp_hmp_overlay.dtbo                                        verdin-imx8mp_panel-cap-touch-10inch-lvds_overlay.dtbo
verdin-imx8mp_mezzanine_ov5640-alt-jumpers_overlay.dtbo               verdin-imx8mp_panel-cap-touch-7inch-dsi_overlay.dtbo
verdin-imx8mp_mezzanine_ov5640-default-jumpers_overlay.dtbo           verdin-imx8mp_spidev_overlay.dtbo
verdin-imx8mp_mezzanine_panel-cap-touch-10inch-lvds_overlay.dtbo
torizon@verdin-imx8mp-15460512:~$

BTW, the actual name of the overlay I am using is flexspi-spidev.dtso as shown as compile success in the build output above.

OK, some progress!

Based on the article here…

…it looks like I must do a…
torizoncore-builder images unpack output_directory

…in between the build and deploy steps?

At least now it seems like the image on the target is getting updated.

Hi @bigjosh

Hmm, I see. Well, glad to know that you were able to make it work.

We are going to review the steps in this article.

Is this 3-step procedure the recommended way to do get an overlay onto the system? Is there a more direct way?

And next, what is the recommended way to get a LKM onto the Toradex module during device driver development?

Thanks!

I am still unable to get a custom device tree overlay running on this board. Please help.

I made a very simple custom overlay called “custom-overlay.dts”.

I updated the “tcbuid.yaml” to add my custom overlay and remove the other optional ones.

I execute a build. It builds with no errors and reports “Overlay custom-overlay.dtbo successfully applied”.

I execute a deploy with the reboot option and it reports “Deploying successfully finished.” and the target machine reboots.

When the target machine reboots, it still has the overlays that I removed and does not have the custom overlay that I added. These are printed to the serial console during boot.

Below are console logs from both the dev machine and the target. I cat the yaml file before the build so you can see exactly what was in it.

I have also attached the custom-overlay.dts file.
custom-overlay.dts (2.1 KB)

What am I doing wrong here? Can you please give me a step-by-step procedure that has been tested with the latest versions of the tools and images that will result in me getting this overlay onto this board?

Thank you!

-josh

dev machine console log:

🐧 josh @DESKTOP-CR2BPO8~/dts: cat tcbuild.yaml
# >> NOTES:
# >> Lines containing ">>" are simply comments explaining the properties that
# >> follow; if you don't like these comments run:
# >>   $ grep -v '>>' tcbuild.yaml > tcbuild-clean.yaml
# >> A line not containing ">>" can be uncommented (by removing the hash mark
# >> plus a space from its beginning); also set the corresponding property to
# >> appropriate values.
# >> When uncommenting a line having a property, remember to uncomment all its
# >> parent properties as well; for example: if you uncomment the
# >> 'splash-screen' property, also uncomment its parent property called
# >> 'customization'.

# >> The input section specifies the image to be taken as the base for the
# >> customization.
input:
  easy-installer:
    # >> Choose one of the options (REQUIRED):
    # >> (1) Image as local folder or tarball.
    local:  images/torizon-docker-verdin-imx8mp-Tezi_7.2.0+build.13.tar
    # >> (2) Remote file (optionally with a filename and or a sha256 checksum):
    # remote: "https://artifacts.toradex.com/.../torizon-core-docker-apalis-imx8-Tezi_5.1.0%2Bbuild.1.tar"
    # remote: "https://artifacts.toradex.com/.../torizon-core-docker-colibri-imx6-Tezi_5.0.0-devel-202009%2Bbuild.2.tar;filename=torizon-core-docker-colibri-imx6-Tezi_5.0.0-devel-202009+build.2.tar;sha256sum=368595fa3fb00af9604e70311de3b04df6b30b280deec2f8918c46f479026ddb"
    # >> (3) Image specification (URL will be generated by the tool)
    # toradex-feed:
    #   version: "5.1.0"
    #   release: quarterly
    #   machine: colibri-imx7-emmc
    #   distro: torizon-upstream
    #   variant: torizon-core-docker
    #   build-number: "1"
    #   # build-date: "20210408"
  # >> If using a Torizon OS image in .wic or .img format, like found in some Common Torizon images,
  # >> use the option below:
  # raw-image:
    # local: torizon-core-common-docker-dev-intel-corei7-64.wic
    # >> (OPTIONAL) specify the filesystem label where rootfs is located in the image.
    # >> If not defined it defaults to 'otaroot'
    # rootfs-label: otaroot

# >> The customization section defines the modifications to be applied to get
# >> the desired output image.
customization:
  # >> Splash screen:
  # splash-screen: custom-splash-screen.png
  # >> Directories overlayed to the base OSTree
  # filesystem:
     # - changes/
  device-tree:
    # >> Directories where to look for include files.
    include-dirs:
      - device-trees/include/
    # >> Custom device tree source:
    # custom: device-trees/dts-arm32/imx6ull-colibri-eval-v3.dts
    # >> Device-tree overlays configuration:
    overlays:
      # >> Whether to ignore all overlays from the base image (or ostree
      # >> archive in the future).
      # clear: false
      # >> Specific overlays not to use from base image (useful only when
      # >> clear is false and not DT has been selected).
      remove:
        - verdin-imx8mp_hdmi_overlay.dtbo
        - verdin-imx8mp_spidev_overlay.dtbo
        - verdin-imx8mp_dsi-to-hdmi_overlay.dtbo
        - apalis-imx8_hdmi_overlay.dtbo
      # >> Overlays to add to output image.
      add:
        -  custom-overlay.dts

  # kernel:
    # >> Custom kernel arguments.
    # arguments:
      # - key1=val1
      # - key2=val2
    # >> Modules to build and possibly load automatically.
    # modules:
      # - source-dir: virtual_touchscreen/
      #   autoload: false

# >> The output section defines properties of the output image.
output:
  # >> OSTree deployment configuration (relevant also for raw/Easy Installer output).
  # ostree:
    # branch: my-dev-branch
    # commit-subject: "OSTree commit subject"
    # commit-body: "OSTree commit body"
  # >> Choose one of the options (REQUIRED):
  # >> (1) Parameters for deploying a WIC/raw image.
  # raw-image:
    # >> (REQUIRED) output file/directory of the customized image:
    # local: tcb_common_torizon.wic
    # >> (OPTIONAL) specify the filesystem label where rootfs is located in the base image.
    # >> If not defined it defaults to 'otaroot'.
    # base-rootfs-label: otaroot
    # >> (OPTIONAL) base image for the output.
    # >> If not set it will default to be the same as the input one.
    # >> Do not change this unless you know what you're doing.
    # base-image:
    # bundle:
      # >> Choose one of the options:
      # >> (1) Specify a docker-compose file whose referenced images will be downloaded.
      # >>     Properties platform, username, password, registry, ca-certificate and
      # >>     keep-double-dollar-sign are optional.
      # >>     When using a docker-compose file all config values with '$$' will be replaced
      # >>     by '$', unless keep-double-dollar-sign is set to true.
      # compose-file: files/docker-compose.yml
      # platform: linux/arm64
      # username: "${USERNAME}"
      # password: "${PASSWORD}"
      # registry: hub.docker.com
      # ca-certificate: cacert.pem
      # keep-double-dollar-sign: false
      # dind-params:
        # - '--param1'
        # - '--param2'
      # dind-env:
        # - 'VAR1=value1'
      # >> (2) Specify a local directory containing the bundled images (previously
      # >>     obtained by 'torizoncore-builder bundle' command).
      # dir: bundle/
  # >> (2) Parameters for deploying to an Easy Installer image.
  easy-installer:
    # >> Output directory of the customized image (REQUIRED):
    local: output_directory
    # >> Information used by Toradex Easy Installer:
    # name: "My customized image"
    # description: "My customized image (description)"
    # licence: files/custom-licence.html
    # release-notes: files/custom-release-notes.html
    # accept-licence: true
    # autoinstall: true
    # autoreboot: true
    # bundle:
      # >> Choose one of the options:
      # >> (1) Specify a docker-compose file whose referenced images will be downloaded.
      # >>     Properties platform, username, password, registry, ca-certificate and
      # >>     keep-double-dollar-sign are optional.
      # >>     When using a docker-compose file all config values with '$$' will be replaced
      # >>     by '$', unless keep-double-dollar-sign is set to true.
      # compose-file: files/docker-compose.yml
      # platform: linux/arm/v7
      # username: "${USERNAME}"
      # password: "${PASSWORD}"
      # registry: hub.docker.com
      # ca-certificate: cacert.pem
      # keep-double-dollar-sign: false
      # >> (2) Specify a local directory containing the bundled images (previously
      # >>     obtained by 'torizoncore-builder bundle' command).
      # dir: bundle/
    # >> Provisioning configuration:
    # provisioning:
      # >> For "online" mode, properties "shared-data" and "online-data" must be specified.
      # >> For "offline" mode, property "shared-data" must be specified alone.
      # mode: "online"
      # shared-data: "shared-data.tar.gz"
      # online-data: "${ONLINE_PROVISIONING_DATA:?online provisioning data not supplied}"
      # >> Provision in hibernated mode. In this state devices are registered, but
      # >> cannot send/receive data to/from Torizon Cloud, and they're not counted
      # >> towards a subscription.
      # hibernated: false
🐧 josh @DESKTOP-CR2BPO8~/dts: torizoncore-builder build
Building image as per configuration file 'tcbuild.yaml'...
Error: Output directory 'output_directory' already exists; please remove it or select another output directory.
🐧 josh @DESKTOP-CR2BPO8~/dts: rm -rf output_directory
🐧 josh @DESKTOP-CR2BPO8~/dts: torizoncore-builder build
Building image as per configuration file 'tcbuild.yaml'...

=>> Handling input section
Unpacking Toradex Easy Installer image.
Unpacking TorizonCore Toradex Easy Installer image.
Importing OSTree revision 789c47c5e2f5cd8d1aa177ed9db1da6ae097ea69188980e51bf534e463966269 from local repository...
1271 metadata, 9767 content objects imported; 650.0 MB content written
0 metadata, 0 content objects imported; 0 bytes content written
Unpacked OSTree from Toradex Easy Installer image:
  Commit checksum: 789c47c5e2f5cd8d1aa177ed9db1da6ae097ea69188980e51bf534e463966269
  TorizonCore Version: 7.2.0+build.13

=>> Handling customization section

=> Handling device-tree subsection
Not testing overlay because base image does not have a device-tree set!

=> Adding device-tree overlay 'custom-overlay.dts'
'custom-overlay.dts' compiles successfully.
Overlay custom-overlay.dtbo successfully applied.

=>> Handling output section
Applying changes from STORAGE/dt.
Commit 48071a77dbcc27158b31f4d0fad3f970d40747501b66e1fc77ab217e9c21e011 has been generated for changes and is ready to be deployed.
Deploying commit ref: tcbuilder-20250501041342
Pulling OSTree with ref tcbuilder-20250501041342 from local archive repository...
  Commit checksum: 48071a77dbcc27158b31f4d0fad3f970d40747501b66e1fc77ab217e9c21e011
  TorizonCore Version: 7.2.0+build.13-tcbuilder.20250501041342
  Default kernel arguments: quiet logo.nologo vt.global_cursor_default=0 plymouth.ignore-serial-consoles splash fbcon=map:3

1271 metadata, 9768 content objects imported; 650.0 MB content written
Pulling done.
Deploying OSTree with checksum 48071a77dbcc27158b31f4d0fad3f970d40747501b66e1fc77ab217e9c21e011
Bootloader found in unpacked image: U-Boot
Deploying done.
Copy files not under OSTree control from original deployment.
Packing rootfs...
Packing rootfs done.

=>> Build command successfully executed!
🐧 josh @DESKTOP-CR2BPO8~/dts: torizoncore-builder deploy --remote-host 10.0.0.47 --remote-username torizon --remote-password nancy --reboot
Pulling OSTree with ref base (checksum 789c47c5e2f5cd8d1aa177ed9db1da6ae097ea69188980e51bf534e463966269) from local archive repository...
Starting http server to serve OSTree.
OSTree server listening on "localhost:37755".
Starting OSTree pull on the device...
Deploying new OSTree on the device...
Deploying successfully finished.
Device reboot initiated...
🐧 josh @DESKTOP-CR2BPO8~/dts:

console log from target after it reboots in response to the “deploy” from the dev machine:


U-Boot SPL 2024.07-7.2.0+git.3f772959501c (Jan 01 1970 - 00:00:00 +0000)
DDR configured as dual rank
SEC0:  RNG instantiated
Normal Boot
WDT:   Started watchdog@30280000 with servicing every 1000ms (60s timeout)
Trying to boot from BOOTROM
Boot Stage: Primary boot
Find img info 0x4802f000, size 1068
Need continue download 1024
NOTICE:  Do not release JR0 to NS as it can be used by HAB
NOTICE:  BL31: v2.10.0  (release):lf-6.6.52-2.2.0-dirty
NOTICE:  BL31: Built : 00:00:00, Jan  1 1970


U-Boot 2024.07-7.2.0+git.3f772959501c (Jan 01 1970 - 00:00:00 +0000)

CPU:   Freescale i.MX8MP[8] rev1.1 1600 MHz (running at 1200 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 59C
Reset cause: POR
DRAM:  4 GiB
Core:  176 devices, 31 uclasses, devicetree: separate
WDT:   Started watchdog@30280000 with servicing every 1000ms (60s timeout)
MMC:   FSL_SDHC: 1, FSL_SDHC: 2
Loading Environment from MMC... Reading from MMC(2)... OK
In:    serial@30880000
Out:   serial@30880000
Err:   serial@30880000
Model: Toradex 0063 Verdin iMX8M Plus Quad 4GB IT V1.1B
Serial#: 15460512
Carrier: Toradex Dahlia V1.1D, Serial# 11469379
SEC0:  RNG instantiated
Net:   eth1: ethernet@30be0000, eth0: ethernet@30bf0000 [PRIME]
Saving Environment to MMC... Writing to MMC(2)... OK
Hit any key to stop autoboot:  0
MMC: no card present
switch to partitions #0, OK
mmc2(part 0) is current device
Scanning mmc 2:1...
Found U-Boot script /boot.scr
969 bytes read in 1 ms (946.3 KiB/s)
## Executing script at 50280000
7650 bytes read in 2 ms (3.6 MiB/s)
87352 bytes read in 3 ms (27.8 MiB/s)
118 bytes read in 2 ms (57.6 KiB/s)
Working FDT set to 50200000
Applying Overlay: verdin-imx8mp_hdmi_overlay.dtbo
2219 bytes read in 2 ms (1.1 MiB/s)
Applying Overlay: verdin-imx8mp_dsi-to-hdmi_overlay.dtbo
4099 bytes read in 3 ms (1.3 MiB/s)
Applying Overlay: verdin-imx8mp_spidev_overlay.dtbo
561 bytes read in 2 ms (273.4 KiB/s)
11459431 bytes read in 37 ms (295.4 MiB/s)
13131069 bytes read in 42 ms (298.2 MiB/s)
   Uncompressing Kernel Image to 0
## Flattened Device Tree blob at 50200000
   Booting using the fdt blob at 0x50200000
Working FDT set to 50200000
   Loading Device Tree to 00000000fea90000, end 00000000feac8fff ... OK
Working FDT set to fea90000

Starting kernel ...

[    1.110914] pca953x 3-0021: failed writing register
Starting systemd-udevd version 255.17^
sysroot.readonly configuration value: 0 (fs writable: 1)
Using legacy ostree bind mount for /
[    6.818290] imx-bus-devfreq 32700000.interconnect: failed to fetch clk: -2
[    6.897319] imx_sec_dsim_drv 32e60000.mipi_dsi: [drm] *ERROR* modalias failure on /soc@0/bus@32c00000/mipi_dsi@32e60000/port@1
[    6.902205] fsl-aud2htx 30cb0000.aud2htx: failed to pcm register
[    6.964525] fsl-aud2htx 30cb0000.aud2htx: failed to pcm register

Torizon OS 7.2.0+build.13 verdin-imx8mp-15460512 ttymxc2

verdin-imx8mp-15460512 login:

Hi @bigjosh

I found this topic with a similar problem in the build/deploy step.
Can you do the commit check that Jeremias mentioned for a sanity check?

Hi @bigjosh

This is also using the TorizonCore builder tool.