I'm looking to add a device tree overlay for the UNO Q's linux. However, I cannot find any configuration files to tell the system to boot with the .dtbo file I created.
Some specifics I need help with:
default location of overlay .dtbo files
how to confugre the system to boot with this new .dtbo file
To use an overlay you have to recompile the Core. The Arduino core includes Zephyr and the device tree fully compiled and there seems to be no way to specify an overlay at run time.
I've made some headway with the camera on my breakout board. Here are some things I've come to understand.
Device tree overlays are disabled by default in the kernel configuration. Under the /boot directory there is a config file. The file name seems to change when updates are made to the board. But, there is only one. Using, grep "OVERLAY" for that file, I get this output:
CONFIG_LD_CAN_USE_KEEP_IN_OVERLAY=y
CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y
# CONFIG_OF_OVERLAY is not set
CONFIG_OVERLAY_FS=m
# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set
CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y
# CONFIG_OVERLAY_FS_INDEX is not set
# CONFIG_OVERLAY_FS_XINO_AUTO is not set
# CONFIG_OVERLAY_FS_METACOPY is not set
# CONFIG_OVERLAY_FS_DEBUG is not set
The CONFIG_OF_OVERLAY is not set. This seems to mean that overlays cannot be applied in the same way that you do on a Raspberry Pi. I am not sure what CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y allows for. It may offer another path forward. However, I have found another way around this for the meantime.
To get around this, I decided to copy over an existing .dtb file that was close to what I want (qrb2210-arduino-imola-camera-rpiv2.dtb). Then I added my overlay using fdtoverlay. Then, I copied that modified dtb to a new folder with this path /boot/efi/dtb/my_new_folder. I then copied over the modified device tree blob (dtb) to my_new_folder.
To have the system load this new dtb on startup, I modified the .conf file located at /boot/efi/entries/. At the end of the file I added the path to my device tree. Note: this file name seems to change occasionally too, but here is only one .conf file in there. Here is the modification:
# Boot Loader Specification type#1 entry
# File created by /usr/lib/kernel/install.d/90-loaderentry.install (systemd 257.9-1~deb13u1)
title Debian GNU/Linux 13 (trixie)
version 6.16.7-g0dd6551ae96b
...
...
devicetree /dtb/my_new_folder/my_new_device_tree.dtb
Upon reboot, the camera (Raspberry Pi V2) was recognized by the system.
Current state:
I have a working board that can take an image.
Still figuring out software stack on top of this (trying to find something similar to libcamera).
Working on the device tree overlay for a MIPI-DSI display.
Could you explain exactly how you took the pictures? The only thing that worked was the cam tool, but the pictures are bad because cam only supports BGR888.
@eddso So far, I've only gotten the cam tool to work myself too. Running into the same roadblock as you. Getting a signal, pictures seem OK on my end, but still need to figure out formatting and the software stack.
I'll post an update (hopefully this week) when I get a chance to explore further.
@extender777 These are from my own run. But, I have 4 of them from that run. It's on my website.
So far, the camera is working electrically and can take a photo with cam. The display is still a question mark, but if there's an updated needed to that I can always send you the updated board.
I've open-sourced the design as well. I'll be uploading software updates there too. It seems like a few people on the forum are working through similar software hurdles.
The Image Quality Lab adapter board pre-launch page is now live for you to sign up to receive updates and information on the launch of our Uno Q camera RPi camera adapter board. IQL Camera Bridge for Arduino UNO Q | Crowd Supply