No video on Toradex Apalis IMX8

I am using Yocto with the 5.2.0 Toradex Manifest and mender layers for OTA support. I am building the tdx-reference-multimedia-image, and I get no video output. I have tried HDMI, and LVDS, but same results.

My board is an Apalis IMX8 QM V1.1C with an ixora 1.2 carrier board.

When I run the tdx-reference-multimedia-image from the Toradex JFrog repository, I get video output. The only difference I can think of is that I have added the mender layers.

Is it possible that the mender layers are causing the video to not work? I know this is a stretch, but I have been at this for a week with no progress.

I noticed one error when using mender that does not show in the working image:

1.669447] imx-drm display-subsystem: parent device of /bus@57240000/ldb@572410e0/lvds-channel@0 is not available

And weston@root.service is failing with:

root@apalis-imx8:/uboot/overlays# cat /var/log/weston.log 
Date: 2018-03-09 UTC
[16:35:23.067] weston 9.0.0
               https://wayland.freedesktop.org
               Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
               Build: lf-5.10.35-2.0.0-rc2+
[16:35:23.067] Command line: /usr/bin/weston --modules=xwayland.so --log=/var/log/weston.log
[16:35:23.067] OS: Linux, 5.4.115-5.3.0-devel+git.dbdbcabf0f98, #1 SMP PREEMPT Tue Jul 6 08:47:10 UTC 2021, aarch64
[16:35:23.068] Using config file '/etc/xdg/weston/weston.ini'
[16:35:23.069] Output repaint window is 7 ms maximum.
[16:35:23.070] Loading module '/usr/lib/libweston-9/drm-backend.so'
[16:35:23.081] initializing drm backend
[16:35:23.081] logind: failed to get session seat
[16:35:23.081] logind: cannot setup systemd-logind helper (-61), using legacy fallback
[16:35:23.083] no drm device found
[16:35:23.083] fatal: failed to create compositor backend

Some debugging reveals that there is no /dev/fb0 present:

root@apalis-imx8:~# fbset
fbset: can't open '/dev/fb0': No such file or directory

None of these errors is seen with the tdx-reference-multimedia image retrieved from toradexā€™s jfrog artifactory.

Hi @pgiangrossi the first step would be to dump the kernel command line parameters in both images to make sure the Mender one has all the same bits. I tried to make sure they were identical since Mender does modify the bootcmd, but itā€™s possible I missed something.

Drew

Hi Drew, here is the working command line:

root@apalis-imx8:~# cat /proc/cmdline 
pci=nomsi root=PARTUUID=23f58d39-02 ro rootwait

The non-working one (mender) looks like:

root@apalis-imx8:~# cat /proc/cmdline 
pci=nomsi root=/dev/mmcblk0p3 ro rootwait

I see some changes to boot.scr. The mender version took out some overlay support.

Paul

OK. I suspect it is the overlay stuff that is missing. You can probably re-add equivalent functionality with MENDER_UBOOT_PRE_SETUP_COMMANDS or MENDER_UBOOT_POST_SETUP_COMMANDS or by modifying the boot.scr based on the MACHINE type. If you have a chance to prototype something that would be helpful.

Drew

The following patch on meta-mender-community gives me video output on the mender version of tdx-reference-minimal-image.

diff --git a/meta-mender-toradex-nxp/recipes-bsp/u-boot-distro-boot/files/apalis-imx8/boot.cmd.in b/meta-mender-toradex-nxp/recipes-bsp/u-boot-distro-boot/files/apalis-imx8/boot.cmd.in
new file mode 100644
index 0000000..10cc186
--- /dev/null
+++ b/meta-mender-toradex-nxp/recipes-bsp/u-boot-distro-boot/files/apalis-imx8/boot.cmd.in
@@ -0,0 +1,64 @@
+#
+# Copyright 2020 Toradex
+#
+# Toradex boot script.
+#
+# Only supports booting from mmc.
+
+if test ${devtype} != "mmc"; then
+    echo "This script is not meant to distro boot from anything other than mmc."
+    exit
+fi
+
+env set load_prefix 'boot/'
+
+test -n ${m4boot} || env set m4boot ';'
+test -n ${fdtfile} || env set fdtfile ${fdt_file}
+test -n ${kernel_image} || env set kernel_image @@KERNEL_IMAGETYPE@@
+test -n ${overlays_file} || env set overlays_file "overlays.txt"
+test -n ${overlays_prefix} || env set overlays_prefix "overlays/"
+
+env set load_cmd 'load ${mender_uboot_root}'
+env set load_cmd_boot 'load ${mender_uboot_boot}'
+env set root_devtype ${devtype}
+
+if test -n ${setup}; then
+    run setup
+else
+    env set setupargs 'console=${console},${baudrate} console=tty1 consoleblank=0'
+fi
+
+if test ${kernel_image} = "Image.gz"
+then
+    env set kernel_addr_load ${loadaddr}
+    env set bootcmd_unzip 'unzip ${kernel_addr_load} ${kernel_addr_r}'
+else
+    env set bootcmd_unzip ';'
+    env set kernel_addr_load ${kernel_addr_r}
+fi
+
+# Set dynamic commands
+env set set_bootcmd_kernel 'env set bootcmd_kernel "${load_cmd} \\${kernel_addr_load} \\${load_prefix}\\${kernel_image}"'
+env set set_bootcmd_dtb 'env set bootcmd_dtb "echo Loading DeviceTree: \\${fdtfile}; ${load_cmd} \\${fdt_addr_r} \\${load_prefix}\\${fdtfile}"'
+env set set_load_overlays_file 'env set load_overlays_file "${load_cmd_boot} \\${loadaddr} \\${overlays_file}; env import -t \\${loadaddr} \\${filesize}"'
+env set fdt_resize 'fdt addr ${fdt_addr_r} && fdt resize 0x20000'
+env set set_apply_overlays 'env set apply_overlays "for overlay_file in \\${fdt_overlays}; do echo Applying Overlay: \\${overlay_file} && ${load_cmd_boot} \\${loadaddr} \\${overlays_prefix}\\${overlay_file} && fdt apply \\${loadaddr}; env set overlay_file; done; true"'
+env set bootcmd_boot 'echo "Bootargs: \${bootargs}" && booti ${kernel_addr_r} - ${fdt_addr_r}'
+
+# Set static commands
+env set rootfsargs_set 'env set rootfsargs root=${mender_kernel_root} ro rootwait'
+
+env set bootcmd_args 'run rootfsargs_set && env set bootargs ${defargs} ${rootfsargs} ${setupargs} ${vidargs} ${tdxargs}'
+if test ${skip_fdt_overlays} != 1; then
+    env set bootcmd_overlays 'run load_overlays_file && run fdt_resize && run apply_overlays'
+else
+    env set bootcmd_overlays true
+fi
+env set bootcmd_prepare 'run set_bootcmd_kernel; run set_bootcmd_dtb; run set_load_overlays_file; run set_apply_overlays'
+env set bootcmd_run 'run m4boot; run bootcmd_dtb && run bootcmd_overlays && run bootcmd_args && run bootcmd_kernel && run bootcmd_unzip && run bootcmd_boot; echo "Booting from ${devtype} failed!" && false'
+
+run mender_setup
+run bootcmd_prepare
+run bootcmd_run
+run mender_try_to_recover
+
diff --git a/meta-mender-toradex-nxp/recipes-bsp/u-boot-distro-boot/files/boot.cmd.in b/meta-mender-toradex-nxp/recipes-bsp/u-boot-distro-boot/files/colibri-imx6ull/boot.cmd.in
similarity index 100%
rename from meta-mender-toradex-nxp/recipes-bsp/u-boot-distro-boot/files/boot.cmd.in
rename to meta-mender-toradex-nxp/recipes-bsp/u-boot-distro-boot/files/colibri-imx6ull/boot.cmd.in
diff --git a/meta-mender-toradex-nxp/recipes-bsp/u-boot-distro-boot/u-boot-distro-boot.bbappend b/meta-mender-toradex-nxp/recipes-bsp/u-boot-distro-boot/u-boot-distro-boot.bbappend
index 9466899..464249e 100644
--- a/meta-mender-toradex-nxp/recipes-bsp/u-boot-distro-boot/u-boot-distro-boot.bbappend
+++ b/meta-mender-toradex-nxp/recipes-bsp/u-boot-distro-boot/u-boot-distro-boot.bbappend
@@ -1,2 +1,3 @@
 # Override boot.cmd.in
-FILESEXTRAPATHS_prepend_mender-uboot := "${THISDIR}/files:"
+FILESEXTRAPATHS_prepend_mender-uboot_apalis-imx8 := "${THISDIR}/files/apalis-imx8:"
+FILESEXTRAPATHS_prepend_mender-uboot_colibri-imx6ull := "${THISDIR}/files/colibri-imx6ull:"

Iā€™ve tested the script stand-alone. Testing the yocto-generated image nowā€¦

Iā€™m surprised you need this. I thought those were added automatically.

Drew

youā€™re probably right, Iā€™ll check

So the build does not appear to be correct. I am getting a file boot.scr-apalis-imx8 in the deploy/images/apalis-imx8 folder. That file is what I want. But when I deploy, /uboot/boot.scr is not correct. It looks like what was there before deploying.

Am I missing something?

You may just need to wipe the tmp/ dir and build again. But the real culprit is likely some other package providing the boot.scr file. I just donā€™t know which one.

Drew

You were right, I had to delete some history and re-build mostly from scratch.

I also made the change you suggested earlier. I tested this by programming the yocto-generated image in recovery mode. So I can say that this patch is tested from my side. Hereā€™s the updated patch:

diff --git a/meta-mender-toradex-nxp/recipes-bsp/u-boot-distro-boot/files/apalis-imx8/boot.cmd.in b/meta-mender-toradex-nxp/recipes-bsp/u-boot-distro-boot/files/apalis-imx8/boot.cmd.in
new file mode 100644
index 0000000..10cc186
--- /dev/null
+++ b/meta-mender-toradex-nxp/recipes-bsp/u-boot-distro-boot/files/apalis-imx8/boot.cmd.in
@@ -0,0 +1,64 @@
+#
+# Copyright 2020 Toradex
+#
+# Toradex boot script.
+#
+# Only supports booting from mmc.
+
+if test ${devtype} != "mmc"; then
+    echo "This script is not meant to distro boot from anything other than mmc."
+    exit
+fi
+
+env set load_prefix 'boot/'
+
+test -n ${m4boot} || env set m4boot ';'
+test -n ${fdtfile} || env set fdtfile ${fdt_file}
+test -n ${kernel_image} || env set kernel_image @@KERNEL_IMAGETYPE@@
+test -n ${overlays_file} || env set overlays_file "overlays.txt"
+test -n ${overlays_prefix} || env set overlays_prefix "overlays/"
+
+env set load_cmd 'load ${mender_uboot_root}'
+env set load_cmd_boot 'load ${mender_uboot_boot}'
+env set root_devtype ${devtype}
+
+if test -n ${setup}; then
+    run setup
+else
+    env set setupargs 'console=${console},${baudrate} console=tty1 consoleblank=0'
+fi
+
+if test ${kernel_image} = "Image.gz"
+then
+    env set kernel_addr_load ${loadaddr}
+    env set bootcmd_unzip 'unzip ${kernel_addr_load} ${kernel_addr_r}'
+else
+    env set bootcmd_unzip ';'
+    env set kernel_addr_load ${kernel_addr_r}
+fi
+
+# Set dynamic commands
+env set set_bootcmd_kernel 'env set bootcmd_kernel "${load_cmd} \\${kernel_addr_load} \\${load_prefix}\\${kernel_image}"'
+env set set_bootcmd_dtb 'env set bootcmd_dtb "echo Loading DeviceTree: \\${fdtfile}; ${load_cmd} \\${fdt_addr_r} \\${load_prefix}\\${fdtfile}"'
+env set set_load_overlays_file 'env set load_overlays_file "${load_cmd_boot} \\${loadaddr} \\${overlays_file}; env import -t \\${loadaddr} \\${filesize}"'
+env set fdt_resize 'fdt addr ${fdt_addr_r} && fdt resize 0x20000'
+env set set_apply_overlays 'env set apply_overlays "for overlay_file in \\${fdt_overlays}; do echo Applying Overlay: \\${overlay_file} && ${load_cmd_boot} \\${loadaddr} \\${overlays_prefix}\\${overlay_file} && fdt apply \\${loadaddr}; env set overlay_file; done; true"'
+env set bootcmd_boot 'echo "Bootargs: \${bootargs}" && booti ${kernel_addr_r} - ${fdt_addr_r}'
+
+# Set static commands
+env set rootfsargs_set 'env set rootfsargs root=${mender_kernel_root} ro rootwait'
+
+env set bootcmd_args 'run rootfsargs_set && env set bootargs ${defargs} ${rootfsargs} ${setupargs} ${vidargs} ${tdxargs}'
+if test ${skip_fdt_overlays} != 1; then
+    env set bootcmd_overlays 'run load_overlays_file && run fdt_resize && run apply_overlays'
+else
+    env set bootcmd_overlays true
+fi
+env set bootcmd_prepare 'run set_bootcmd_kernel; run set_bootcmd_dtb; run set_load_overlays_file; run set_apply_overlays'
+env set bootcmd_run 'run m4boot; run bootcmd_dtb && run bootcmd_overlays && run bootcmd_args && run bootcmd_kernel && run bootcmd_unzip && run bootcmd_boot; echo "Booting from ${devtype} failed!" && false'
+
+run mender_setup
+run bootcmd_prepare
+run bootcmd_run
+run mender_try_to_recover
+
diff --git a/meta-mender-toradex-nxp/recipes-bsp/u-boot-distro-boot/files/colibri-imx6ull/boot.cmd.in b/meta-mender-toradex-nxp/recipes-bsp/u-boot-distro-boot/files/colibri-imx6ull/boot.cmd.in
new file mode 100644
index 0000000..6cc545c
--- /dev/null
+++ b/meta-mender-toradex-nxp/recipes-bsp/u-boot-distro-boot/files/colibri-imx6ull/boot.cmd.in
@@ -0,0 +1,56 @@
+# SPDX-License-Identifier: GPL-2.0+ OR MIT
+#
+# Copyright 2020 Toradex
+# Copyright 2020 Northern.tech AS
+#
+# Toradex boot script with Mender integration.
+#
+# Only supports booting from mmc, and overlay support is removed as this only
+# applies to Torizon OS which is not the target for this integration.
+
+if test ${devtype} = "ubi"; then
+    echo "This script is not meant to distro boot from raw NAND flash."
+    exit
+fi
+
+env set load_prefix 'boot/'
+
+test -n ${m4boot} || env set m4boot ';'
+test -n ${fdtfile} || env set fdtfile ${fdt_file}
+test -n ${kernel_image} || env set kernel_image @@KERNEL_IMAGETYPE@@
+test -n ${boot_devtype} || env set boot_devtype ${devtype}
+test -n ${root_devtype} || env set root_devtype ${devtype}
+
+env set load_cmd 'load ${mender_uboot_root}'
+
+if test -n ${setup}; then
+    run setup
+else
+    env set setupargs 'console=${console},${baudrate} console=tty1 consoleblank=0'
+fi
+
+if test ${kernel_image} = "Image.gz"
+then
+    env set kernel_addr_load ${loadaddr}
+    env set bootcmd_unzip 'unzip ${kernel_addr_load} ${kernel_addr_r}'
+else
+    env set kernel_addr_load ${kernel_addr_r}
+    env set bootcmd_unzip ';'
+fi
+
+# Set dynamic commands
+env set set_bootcmd_kernel 'env set bootcmd_kernel "${load_cmd} \\${kernel_addr_load} \\${load_prefix}\\${kernel_image}"'
+env set set_bootcmd_dtb 'env set bootcmd_dtb "${load_cmd} \\${fdt_addr_r} \\${load_prefix}\\${fdtfile}"'
+
+env set rootfsargs_set 'env set rootfsargs root=${mender_kernel_root} ro rootwait'
+
+env set bootcmd_args 'run rootfsargs_set && env set bootargs ${defargs} ${rootfsargs} ${setupargs} ${vidargs} ${tdxargs}'
+env set fdt_resize 'fdt addr ${fdt_addr_r} && fdt resize 0x20000'
+env set bootcmd_boot 'echo "Bootargs: \${bootargs}" && @@KERNEL_BOOTCMD@@ ${kernel_addr_r} - ${fdt_addr_r}'
+env set bootcmd_prepare 'run set_bootcmd_kernel; run set_bootcmd_dtb;'
+env set bootcmd_run 'run m4boot; run bootcmd_dtb && run bootcmd_args && run bootcmd_kernel && run bootcmd_unzip && run bootcmd_boot; echo "Booting from ${devtype} failed!"'
+
+run bootcmd_prepare
+run mender_setup
+run bootcmd_run
+run mender_try_to_recover

Can you submit that as a pull request here?

Drew

The pull request above works for the HDMI output. On my local build, I want to make it work for the Toradex LVDS 10.1" screen, so I add the following to local.conf:

TEZI_EXTERNAL_KERNEL_DEVICETREE_BOOT = "apalis-imx8_lvds_overlay.dtbo apalis-imx8_atmel-mxt_overlay.dtbo display-lt170410_overlay.dtbo"

But it doesnā€™t have the desired effect. How do I do this correctly?

Seems like I have to remove and append to get that to work.

TEZI_EXTERNAL_KERNEL_DEVICETREE_BOOT_remove = "apalis-imx8_hdmi_overlay.dtbo"
TEZI_EXTERNAL_KERNEL_DEVICETREE_BOOT_append = " apalis-imx8_lvds_overlay.dtbo apalis-imx8_atmel-mxt_overlay.dtbo display-lt170410_overlay.dtbo"

Yeah, that doesnā€™t surprise me. Iā€™ll continue the discussion over in the PR.
Drew

Hi Drew, I just noticed that with the pull request, I cannot do a mender update. Any idea what these errors might indicate?

root@apalis-imx8:~# mender -install http://192.168.10.1/tmp/Reference-Minimal-Image-apalis-imx8.mender
INFO[0000] Loaded configuration file: /var/lib/mender/mender.conf 
INFO[0000] Loaded configuration file: /etc/mender/mender.conf 
ERRO[0000] Failed to read the current active partition: No match between boot and root partitions.: exit status 243 
INFO[0000] Performing remote update from: [http://192.168.10.1/tmp/Reference-Minimal-Image-apalis-imx8.mender]. 
Installing Artifact of size 803610624...
INFO[0000] No public key was provided for authenticating the artifact 
INFO[0000] Update Module path "/usr/share/mender/modules/v3" could not be opened (open /usr/share/mender/modules/v3: no such file or directory). Update modules will not be a
vailable 
ERRO[0000] Download failed: Payload: can not install Payload: Reference-Minimal-Image-apalis-imx8.ext4: No match between boot and root partitions.: exit status 243 
ERRO[0000] Payload: can not install Payload: Reference-Minimal-Image-apalis-imx8.ext4: No match between boot and root partitions.: exit status 243 

That generally means that something is unhappy in the U-Boot environment. It could be that the u-boot-fw-utils config file is incorrect.

I donā€™t see that file on the target. Is it a build file? What should it look like?

Here is the u-boot environment:

# printenv
altbootcmd=run mender_altbootcmd; run bootcmd
arch=arm
baudrate=115200
board=apalis-imx8
board_name=Manus Apalis iMX8QM
board_rev=v1.0
boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr}
boot_efi_binary=if fdt addr ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr ${fdtcontroladdr};fi;load ${devtype} ${devnum}:${distro_bootpart} ${kernel
_addr_r} efi/boot/bootaa64.efi; if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r};else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi
boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}${boot_syslinux_conf}
boot_fdt=try
boot_file=Image
boot_net_usb_start=usb start
boot_pci_enum=pci enum
boot_prefixes=/ /boot/
boot_script_dhcp=boot.scr
boot_scripts=boot.scr.uimg boot.scr
boot_syslinux_conf=extlinux/extlinux.conf
boot_targets=mmc1 mmc2 mmc0 usb0 dhcp 
bootcmd=run distro_bootcmd
bootcmd_dhcp=setenv devtype dhcp; run boot_net_usb_start; run boot_pci_enum; if dhcp ${scriptaddr} ${boot_script_dhcp}; then source ${scriptaddr}; fi;setenv efi_fdtfile ${fd
tfile}; setenv efi_old_vci ${bootp_vci};setenv efi_old_arch ${bootp_arch};setenv bootp_vci PXEClient:Arch:00011:UNDI:003000;setenv bootp_arch 0xb;if dhcp ${kernel_addr_r}; t
hen tftpboot ${fdt_addr_r} dtb/${efi_fdtfile};if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r}; else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi;fi;s
etenv bootp_vci ${efi_old_vci};setenv bootp_arch ${efi_old_arch};setenv efi_fdtfile;setenv efi_old_arch;setenv efi_old_vci;
bootcmd_mfg=select_dt_from_module_version && fastboot 0
bootcmd_mmc0=devnum=0; run mmc_boot
bootcmd_mmc1=devnum=1; run mmc_boot
bootcmd_mmc2=devnum=2; run mmc_boot
bootcmd_usb0=devnum=0; run usb_boot
bootcount=1
bootdelay=1
bootlimit=1
commit_atf=835a8f6
commit_mkimage=8947fea3
commit_scfw=bc122ee1
commit_secofw=d63fdb21
console=ttyLP1 earlycon
cpu=armv8
defargs=pci=nomsi
distro_bootcmd=scsi_need_init=; for target in ${boot_targets}; do run bootcmd_${target}; done
efi_dtb_prefixes=/ /dtb/ /dtb/current/
ethaddr=00:14:2d:a4:68:0d
fastboot_dev=mmc0
fdt_addr_r=0x83000000
fdtcontroladdr=fd650ba0
fdtfile=imx8qm-apalis-v1.1-eval.dtb
finduuid=part uuid mmc ${mmcdev}:2 uuid
hdp_addr=0x9c000000
hdp_file=hdmitxfw.bin
ipaddr=192.168.10.2
kernel_addr_r=0x80280000
load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile}
loadaddr=0x87000000
loadhdp=${load_cmd} ${hdp_addr} ${hdp_file}
loadm4image_0=${load_cmd} ${loadaddr} ${m4_0_image}
loadm4image_1=${load_cmd} ${loadaddr} ${m4_1_image}
m4_0_image=m4_0.bin
m4_1_image=m4_1.bin
m4boot_0=run loadm4image_0; dcache flush; bootaux ${loadaddr} 0
m4boot_1=run loadm4image_1; dcache flush; bootaux ${loadaddr} 1
mender_altbootcmd=if test ${mender_boot_part} = 2; then setenv mender_boot_part 3; setenv mender_boot_part_hex 3; else setenv mender_boot_part 2; setenv mender_boot_part_hex
 2; fi; setenv upgrade_available 0; saveenv; run mender_setup
mender_boot_kernel_type=booti
mender_boot_part=2
mender_boot_part_hex=2
mender_check_saveenv_canary=1
mender_dtb_name=imx8qm-apalis-v1.1-ixora-v1.1.dtb
mender_kernel_name=Image.gz
mender_setup=if test "${mender_saveenv_canary}" != "1"; then setenv mender_saveenv_canary 1; saveenv; fi; if test "${mender_pre_setup_commands}" != ""; then run mender_pre_s
etup_commands; fi; if test "${mender_systemd_machine_id}" != ""; then setenv bootargs "systemd.machine_id=${mender_systemd_machine_id} ${bootargs}"; fi; setenv mender_kernel
_root /dev/mmcblk0p${mender_boot_part}; if test ${mender_boot_part} = 2; then setenv mender_boot_part_name /dev/mmcblk0p2; else setenv mender_boot_part_name /dev/mmcblk0p3; 
fi; setenv mender_kernel_root_name ${mender_boot_part_name}; setenv mender_uboot_root mmc 0:${mender_boot_part_hex}; setenv mender_uboot_root_name ${mender_boot_part_name}; 
setenv expand_bootargs "setenv bootargs \\"${bootargs}\\""; run expand_bootargs; setenv expand_bootargs; if test "${mender_post_setup_commands}" != ""; then run mender_post_
setup_commands; fi
mender_try_to_recover=if test ${upgrade_available} = 1; then reset; fi
mender_uboot_boot=mmc 0:1
mender_uboot_dev=0
mender_uboot_if=mmc
mmc_boot=if mmc dev ${devnum}; then devtype=mmc; run scan_dev_for_boot_part; fi
mmcargs=setenv bootargs console=${console},${baudrate} root=PARTUUID=${uuid} rootwait mmcdev=0
mmcautodetect=yes
mmcdev=0
mmcpart=1
mmcroot=/dev/mmcblk0p2 rootwait rw
netmask=255.255.255.0
panel=NULL
ramdisk_addr_r=0x8a000000
scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${distro_bootpart}...; for prefix in ${boot_prefixes}; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done;run 
scan_dev_for_efi;
scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpart in ${devplist}; do if fstype ${devtyp
e} ${devnum}:${distro_bootpart} bootfstype; then run scan_dev_for_boot; fi; done; setenv devplist
scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; for prefix in ${efi_dtb_prefixes}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${efi_fdtfile}; then run lo
ad_efi_dtb; fi;done;if test -e ${devtype} ${devnum}:${distro_bootpart} efi/boot/bootaa64.efi; then echo Found EFI removable media binary efi/boot/bootaa64.efi; run boot_efi_
binary; echo EFI LOAD FAILED: continuing...; fi; setenv efi_fdtfile
scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${boot_syslinux_conf}; then echo Found ${prefix}${boot_syslinux_conf}; run boot_extlinux; e
cho SCRIPT FAILED: continuing...; fi
scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script
}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done
script=boot.scr
scriptaddr=0x83100000
scsi_boot=run scsi_init; if scsi dev ${devnum}; then devtype=scsi; run scan_dev_for_boot_part; fi
scsi_init=if ${scsi_need_init}; then scsi_need_init=false; scsi scan; fi
sec_boot=no
serial#=0000000000000000
serverip=192.168.10.1
setup=run loadhdp; hdp load ${hdp_addr}; run mmcargs
soc=imx8
soc_type=imx8qm
update_uboot=askenv confirm Did you load u-boot-dtb.imx (y/N)?; if test "$confirm" = "y"; then setexpr blkcnt ${filesize} + 0x1ff && setexpr blkcnt ${blkcnt} / 0x200; mmc de
v 0 1; mmc write ${loadaddr} 0x0 ${blkcnt}; fi
upgrade_available=0
usb_boot=usb start; if usb dev ${devnum}; then devtype=usb; run scan_dev_for_boot_part; fi
vendor=toradex
ver=U-Boot 2020.04-5.3.0-devel+git.76fd4496a40b (Apr 07 2021 - 07:35:42 +0000)
video=imxdpufb5:off video=imxdpufb6:off video=imxdpufb7:off

Environment size: 6695/8187 bytes

But it must be something I did wrong in the boot.scr update. Could you have a quick look at that and see if there is anything obvious?