Where is overlay applied DTB on rootfs

We use flash.sh to flash jetson modules on our custom carrier board with preapplied overlays to the device tree.

OVERLAY_DTB_FILE+=",tegra234-p3767-branding.dtbo,tegra234-p3767-disable-display.dtbo,tegra234-p3767-enable-serial.dtbo";

This works fine but the user may want to use extlinux.conf to add their own overlays in addition to ours. After flashing we observe the dtb file in the rootfs in /boot/dtb/ is the dtb without any of our overlays and our overlays are missing from the rootfs /boot partition. How is the user supposed to add their own overlays to our dtb with preapplied overlays when the _with_odm_overlay.dtb is missing from the rootfs and any lives in the UEFI DTB? Is there a way to obtain the UEFI DTB from userspace?

Hi theofficialgman,

What’s the Jetpack version in use?

Please share the result of ls /boot/ on your board for further check.

No, it is not a valid use case.
Please also share /boot/extlinux/extlinux.conf on your board.

The latest, 36.4.3 (Jetpack 6.2).

ls /boot/
dtb
efi
extlinux
Image
initrd
kernel_tegra234-p3768-0000+p3767-0001-nv.dtb
kernel_tegra234-p3768-0000+p3767-0003-nv-super.dtb
oot-stub
tegra234-carveouts.dtbo
tegra234-p3737-0000+p3701-0000-as-p3701-0004.dtbo
tegra234-p3737-0000+p3701-0000-as-p3767-0000.dtbo
tegra234-p3737-0000+p3701-0000-as-p3767-0001.dtbo
tegra234-p3737-0000+p3701-0000-as-p3767-0003.dtbo
tegra234-p3737-0000+p3701-0000-as-p3767-0004.dtbo
tegra234-p3737-0000+p3701-0000-audio-adafruit-sph0645lm4h.dtbo
tegra234-p3737-0000+p3701-0000-audio-adafruit-uda1334a.dtbo
tegra234-p3737-0000+p3701-0000-audio-fe-pi.dtbo
tegra234-p3737-0000+p3701-0000-audio-respeaker-4-mic-array.dtbo
tegra234-p3737-0000+p3701-0000-audio-respeaker-4-mic-lin-array.dtbo
tegra234-p3737-0000+p3701-0000-csi.dtbo
tegra234-p3737-0000+p3701-0000.dtb
tegra234-p3737-0000+p3701-0000-dynamic.dtbo
tegra234-p3737-0000+p3701-0000-hdr40.dtbo
tegra234-p3737-0000+p3701-0000-m2ke.dtbo
tegra234-p3737-0000+p3701-0000-nv.dtb
tegra234-p3737-0000+p3701-0004.dtb
tegra234-p3737-0000+p3701-0004-nv.dtb
tegra234-p3737-0000+p3701-0005.dtb
tegra234-p3737-0000+p3701-0005-nv.dtb
tegra234-p3737-0000+p3701-0008.dtb
tegra234-p3737-0000+p3701-0008-nv.dtb
tegra234-p3737-camera-dual-hawk-ar0234-e3653-overlay.dtbo
tegra234-p3737-camera-dual-imx274-overlay.dtbo
tegra234-p3737-camera-e3331-overlay.dtbo
tegra234-p3737-camera-e3333-overlay.dtbo
tegra234-p3737-camera-eCAM130A-overlay.dtbo
tegra234-p3737-camera-imx185-overlay.dtbo
tegra234-p3737-camera-imx390-addr-0x21-overlay.dtbo
tegra234-p3737-camera-imx390-overlay.dtbo
tegra234-p3737-camera-p3762-a00-1Hawk-overlay.dtbo
tegra234-p3737-camera-p3762-a00-2Hawk-overlay.dtbo
tegra234-p3737-camera-p3762-a00-3Hawk-3Owl-overlay.dtbo
tegra234-p3737-camera-p3762-a00-4Hawk-overlay.dtbo
tegra234-p3737-camera-p3762-a00-4Owl-overlay.dtbo
tegra234-p3737-camera-p3762-a00-overlay.dtbo
tegra234-p3740-0002+p3701-0008.dtb
tegra234-p3740-0002+p3701-0008-hdr20.dtbo
tegra234-p3740-0002+p3701-0008-m2kb.dtbo
tegra234-p3740-0002+p3701-0008-m2ke.dtbo
tegra234-p3740-0002+p3701-0008-nv.dtb
tegra234-p3740-camera-p3783-a00-overlay.dtbo
tegra234-p3767-0000+p3509-a02-audio-adafruit-sph0645lm4h.dtbo
tegra234-p3767-0000+p3509-a02-audio-adafruit-uda1334a.dtbo
tegra234-p3767-0000+p3509-a02-audio-fe-pi.dtbo
tegra234-p3767-0000+p3509-a02-audio-respeaker-4-mic-array.dtbo
tegra234-p3767-0000+p3509-a02-audio-respeaker-4-mic-lin-array.dtbo
tegra234-p3767-0000+p3509-a02-csi.dtbo
tegra234-p3767-0000+p3509-a02-hdr40.dtbo
tegra234-p3767-0000+p3509-a02-m2ke.dtbo
tegra234-p3767-0000+p3768-0000-csi.dtbo
tegra234-p3767-camera-p3768-imx219-A.dtbo
tegra234-p3767-camera-p3768-imx219-C.dtbo
tegra234-p3767-camera-p3768-imx219-dual.dtbo
tegra234-p3767-camera-p3768-imx219-imx477.dtbo
tegra234-p3767-camera-p3768-imx477-A.dtbo
tegra234-p3767-camera-p3768-imx477-C.dtbo
tegra234-p3767-camera-p3768-imx477-dual-4lane.dtbo
tegra234-p3767-camera-p3768-imx477-dual.dtbo
tegra234-p3767-camera-p3768-imx477-imx219.dtbo
tegra234-p3768-0000+p3767-0000.dtb
tegra234-p3768-0000+p3767-0000-dynamic.dtbo
tegra234-p3768-0000+p3767-0000-nv.dtb
tegra234-p3768-0000+p3767-0000-nv-super.dtb
tegra234-p3768-0000+p3767-0001.dtb
tegra234-p3768-0000+p3767-0001-nv.dtb
tegra234-p3768-0000+p3767-0001-nv-super.dtb
tegra234-p3768-0000+p3767-0003.dtb
tegra234-p3768-0000+p3767-0003-nv.dtb
tegra234-p3768-0000+p3767-0003-nv-super.dtb
tegra234-p3768-0000+p3767-0004.dtb
tegra234-p3768-0000+p3767-0004-nv.dtb
tegra234-p3768-0000+p3767-0004-nv-super.dtb
tegra234-p3768-0000+p3767-0005.dtb
tegra234-p3768-0000+p3767-0005-nv.dtb
tegra234-p3768-0000+p3767-0005-nv-super.dtb
tegra-optee.dtbo
ls /boot/dtb
kernel_tegra234-p3768-0000+p3767-0001-nv.dtb

TIMEOUT 30
DEFAULT primary

MENU TITLE L4T boot options

LABEL primary
      MENU LABEL primary kernel
      LINUX /boot/Image
      INITRD /boot/initrd
      APPEND ${cbootargs} root=PARTUUID=37e6d400-305d-4597-b251-2316748865c5 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 firmware_class.path=/etc/firmware fbcon=map:0 nospectre_bhb video=efifb:off console=tty0

# When testing a custom kernel, it is recommended that you create a backup of
# the original kernel and add a new entry to this file so that the device can
# fallback to the original kernel. To do this:
#
# 1, Make a backup of the original kernel
#      sudo cp /boot/Image /boot/Image.backup
#
# 2, Copy your custom kernel into /boot/Image
#
# 3, Uncomment below menu setting lines for the original kernel
#
# 4, Reboot

# LABEL backup
#    MENU LABEL backup kernel
#    LINUX /boot/Image.backup
#    INITRD /boot/initrd
#    APPEND ${cbootargs}

The overlay DTB specified here will be applied during flash.
Please decompile the DTB from /boot/dtb/kernel_xxxx.dtb to check if your custom configurations are included.

That is what I already told you from my initial message. The decompressed dtb from that path does NOT have the custom configurations. However the actively running DTB (ie: by checking /sys/firmware/devicetree/base) does have the customizations applied. You should be able to confirm this issue yourself with any overlay.

Okay, please share the full flash log for further check.

The overlay DTB would be loaded in UEFI.
Please refer to OVERLAYS mechanism cannot be used to dynamically add the camera’s dtbo on JP6.0 - Jetson & Embedded Systems / Jetson AGX Orin - NVIDIA Developer Forums for details.

Have you tried to add OVERLAYS in extlinux.conf for this use case?

yes adding overlays works (but is isn’t clear where our custom overlays that we flashed live and what priority they have compared to those in extlinux.conf) but it must be done manually for us in extlinux.conf instead of using the Jetson IO fdtoverlay tool because that tool requires that the model name matches an existing device tree in /boot/dtb/ which ours does not because our branding overlays changes the model.

As my understanding, they should be loaded during flash and be included in the /boot/dtb/kernel_xxx.dtb.

It is a tool also helping you to add the OVERLAYS line in extlinux.conf to apply overlay dtb.

Kevin, you are forgetting what I have already said → Where is overlay applied DTB on rootfs - #7 by theofficialgman . It does not included.

Yes I know. I didn’t say I didn’t know what that tool was. I explained to you that it cannot be used →

Sorry that maybe I have too many topics everyday to get confused.
I know that they are not applied in your case.
You can try to enable debug UEFI log to check if they are loaded during boot up.

Oe you can just use OVERLAYS option in extlinux.conf to apply your custom overlay dtb.

Ok, will check the UEFI log to see and report back.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.