Uboot cannot find dtb file after uboot + kernel update

My reform is currently unable to boot. When uboot loads, it stops at some point with the message:

File not found /dtbs/6.1.0-reform2-arm64/freescale/imx8mq-mnt-reform.dtb

I updated uboot this morning as per the instructions given here: Any news on OpenBSD? (Update: it works now) - #7 by mntmn

After flashing the flash.bin file, I rebooted to check if everything went fine. I could get into uboot and then resume the boot by entering boot.

Next I updated my packages and installed the new kernel version 6.1. After rebooting now, the show error message appeared.

My guess is the problem is with the kernel, not with uboot, since i could boot normally after updating uboot. Other than that, I’m not sure what to do.

Switching to an older kernel, if possible, might help. I’m guessing I could do that from the SD card system.

Any other suggestions?

Some more info:

  • I have my system installed on the ssd, the bootpartition and uboot are on the eMMC
  • I have an SD card which gets me into a working system
  • I have the HDMI port activated

Thank you!

I realized that I had turned on the HDMI port some time ago.

Checking the folder /dtbs/6.1.0-reform2-arm64/freescale, there is only a file called imx8mq-mnt-reform2-hdmi.dtb.

After booting into the SD card image and looking around, I figured it out. What I needed to do was set the HDMI configuration back to single:

mount /dev/nvme0n1p1 /mnt
mount -o bind /dev /mnt/dev
mount -o bind /proc /mnt/proc
mount -o bind /sys /mnt/sys

chroot /mnt
reform-display-config --emmc single

What I’m wondering now, is it safe to set the display config to dual again? Maybe for now the HDMI configuration needs to be applied whenever there is a new kernel version (like from 6.0 to 6.1)?

You forgot to mount your /boot into /mnt so the changes you made were probably written to your / and not to your /boot.

Did you try running the reform-check utility to see if it turns up anything of interest?

I’m also on the latest 6.1.7 kernel with my rootfs on NVMe and /boot on eMMC. I’m also using the hdmi dtb without issue.

You’re right, the reform-display-config script mounted it automatically, though.

I got a message saying that my u-boot version on the eMMC is not up to date. After doing

echo 0 > /sys/class/block/mmcblk0boot0/force_ro
dd if=/boot/flash.bin of=/dev/mmcblk0boot0 bs=1024 seek=33
echo 1 > /sys/class/block/mmcblk0boot0/force_ro

that message went away.

FWIW I ran into a similar issue and the cause is that the self-built u-boot has a hardcoded variable $fdtfile. For me, setenv fdtfile (with nothing as the value) made it boot the dual display dtb. But a better solution is of course to flash the regular flash.bin.

@inhji what is your version of reform-tools?

If Lukas is correct, and this is about $fdtfile being set in u-boot then that change is intentional:

But for this change in u-boot to not disable the HDMI dtb, you also need to have this change to your /boot/boot.scr:

So the question is: is the version of your reform-tools package 1.13 or later? And if not, does upgrading it solve your problem?

The reform-tools package was on version 1.16 when this situation happened.