[Buildroot] Adding Device Tree Overlays for MIPI-CSI2 Camera and libcamera to a buildroot Build

Fiona Klute fiona.klute at gmx.de
Wed May 7 20:06:17 UTC 2025


Am 07.05.25 um 20:31 schrieb buildroot at cairnwater.com:
> Hi Fiona,
> 
> Thank you very much! That's a big help to know to use 
> BR2_LINUX_KERNEL_CUSTOM_DTS_DIR for that.
> 
> What directory structure is needed for the overlays? Just the DTO files 
> in a directory or something more complicated?

It's expected to match the structure of the per-arch dts directory in 
the kernel source, with vendor directories. The 
polyhex_debix_model_a_defconfig uses the freescale/imx8mp-debix-model-a 
DTS, so inside your BR2_LINUX_KERNEL_CUSTOM_DTS_DIR you'll probably need 
something like freescale/my-camera.dtso (whatever you want to call your 
DTSOs, the DTBOs will match the source names).

>> From there you'll need to adjust the boot process for your board to 
>> actually apply the overlay. If you want to send a patch, the 
>> BR2_LINUX_KERNEL_CUSTOM_DTS_DIR should be inside the board directory.
> 
> Thank you very much. I don't know how to do that. What's the best way to 
> get the boot process to apply the overlay? I'd heard that it can be done 
> by the kernel or by U-Boot but I'm doing this for the first time so I'm 
> not sure what I'm doing.

I'm not familiar with the board, but usually U-Boot will be the right 
place. On some boards (like RPi) the firmware can also do it (only 
useful if U-Boot & kernel then use that FDT), last time I checked 
mainline Linux cannot, but some patched kernels can. There are a number 
of options with U-Boot, which one to pick depends on how you configure 
the boot (at a glance the defconfig seems to use extlinux.conf):

* If you use extlinux.conf, use the "devicetree-overlay" option.
* If you use a boot script, load the overlay and apply it before 
starting the kernel.
* If you use a FIT image, add the overlay to it and the relevant boot 
config defined in it.

See also:
https://docs.u-boot.org/en/latest/develop/distro.html (for extlinux.conf)
https://docs.u-boot.org/en/latest/usage/fdt_overlays.html (for the 
latter 2 options)

Either way you may have to enable overlay support in the U-Boot build 
config (if it isn't by default).

On the Buildroot side you need to make sure that the DTBOs and adjusted 
config get included in the image where U-Boot expects them (depending on 
the boot setup you use), if you need to make adjustments there it'll 
probably be in a post-build or post-image script, or in the genimage config.

The defconfig seems to put everything into the root partition image, so 
it might just work, as long as you use the right path in the U-Boot 
config. Maybe just set BR2_LINUX_KERNEL_CUSTOM_DTS_DIR, build, and see 
if you end up with a DTBO somewhere in your /boot dir. If yes, adjusting 
the U-Boot config to use it should be enough. ;-)

Best regards,
Fiona



More information about the buildroot mailing list