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: