For device tree troubleshooting related to the boot architecture and DTB
selection algorithm, see
Device tree architecture.
DTB compilation errors
Missing dt-bindings header
Symptom: The kernel build fails with:dt-bindings/ that does not
exist at the kernel version being built. This typically happens when a
downstream DTS is based on a newer kernel, or when a new binding header has not
yet been upstreamed.
Fix:
- Confirm the header path exists in the kernel source:
-
If the header is missing, either backport it from a newer kernel or replace
the
#includewith the numeric constant it defines. -
For Yocto builds, verify the kernel recipe
SRCREVmatches the DTS source revision being used.
DTB not present in FIT image
Symptom: The Yocto build completes but the expected DTB is absent fromdtb.bin.
Cause: The DTB filename is not listed in KERNEL_DEVICETREE or
LINUX_QCOM_KERNEL_DEVICETREE in the machine configuration.
Fix: Add the DTB path to the machine configuration and rebuild:
dtb.bin to the dtb_a partition.
Boot failures
No DTB loaded due to FIT configuration match failure
Symptom: The device fails to boot. UEFI serial log shows:dtb.bin and found no
compatible string that matched the hardware identifiers (chip ID, board type,
board revision, peripheral subtype). This happens when:
- The
FIT_DTB_COMPATIBLEentry is missing or misspelled. - The hardware board subtype does not match any FIT configuration.
dtb.binwas not reflashed after modifying the machine configuration.
-
Verify the DTB is included in the packaged
dtb.bin: if using legacy concatenated dtb packaging:if using FIT-based packaging: - Compare the compatible strings present against the hardware IDs the board reports. The compatible string format is:
-
Add or correct the
FIT_DTB_COMPATIBLEentry inconf/machine/include/fit-dtb-compatible.incand rebuilddtb.bin. -
Reflash to the
dtb_apartition:
- Collect UEFI serial logs. Identify the Configuration From BoardParam line. For example:
- Compare the configuration-compatible string against the BoardParam output and identify any mismatched substring.
- Decode the FIT image into the ITS file and update the config compatible string to align with the BoardParam value.
-
If no DTB matches the board’s subtype combination, add the required
FIT_DTB_COMPATIBLEentry and rebuilddtb.bin.
DTB authentication failure
Symptom: UEFI serial log shows:dtb.bin image was modified after signing, or a mismatched
.sgn file was used.
Fix: Use unsigned development firmware, or regenerate dtb.bin and the
corresponding signature using the correct signing keys.
Wrong DTB selected at boot
Symptom: The device boots but unexpected peripherals are enumerated, ordmesg shows an unexpected board model:
compatible string
matched before the intended one. FIT configurations are evaluated in order
(conf-1, conf-2, …) and the first match wins.
Fix:
-
Identify which configuration was selected by checking the UEFI serial log
for
FindConfigToBoot. -
Make the intended configuration’s
compatiblestring more specific by adding board subtype, revision, or storage-type tokens so it matches before the generic entry. -
Reorder configurations in the
.itsfile if necessary: more specific entries must appear before generic ones.
Peripheral not probing after boot
Symptom: A peripheral is absent from/dev, its driver is not in lsmod,
or dmesg shows a probe failure.
Cause: Common causes include:
- The peripheral node is missing from the DTS file.
- The node is disabled (
status = "disabled"). - A required clock, regulator, or pinctrl dependency is missing or not enabled.
- The
compatiblestring in the DTS does not match the driver’sof_device_idtable.
- Confirm the device node is present and enabled:
- Check
dmesgfor probe errors:
-
If the node shows
probe deferred, a dependency (clock, power domain, pinctrl) is not yet available. Verify all phandle references in the node resolve to enabled nodes. -
After editing the DTS, rebuild and reflash
dtb.bin:
DT changes not reflected on device
Symptom: DTS edits have no effect after reboot; the old peripheral configuration is still active. Cause: The modified DTB was not repackaged intodtb.bin and reflashed.
The device continues to boot from the stale dtb_a partition.
Fix (Yocto workflow):
DTB overlay not applied
Symptom: An expected overlay (for example, the CamX camera overlay) is not active after reboot. The UEFI log does not mention the overlay name.DTB overlay via EFI variable applies to QCS6490, IQ-9075, and IQ-8275 only.
IQ-615 EVK uses module-level configuration instead.
VendorDtbOverlays was not set, or was set after
the UEFI boot stage had already read it.
Fix:
- Set the EFI variable and reboot:
- After rebooting, confirm the overlay was applied from the UEFI serial log:
- To clear the overlay and revert to the default DTB:

