I have been trying to add a 640x480@180fps resolution mode to the IMX219 (RPi 2 camera) driver as the included 720p modes are unnecessarily high resolution. I have successfully modified the kernel (mainly
imx219_mode_tbls.h) and recompiled it using these instructions and now the new resolution mode shows up when running
I have also modified the device tree files
tegra210-camera-rbpcv2-dual-imx219.dtsi to add a seventh mode that corresponds to the new stuff I added to
imx219_mode_tbls.h. When compiling the kernel with
make, it generates a bunch of files in
Linux_for_Tegra/source/public/build/arch/arm64/boot/dts. I have tried copying these files to the
/boot/dtb directories in the SD card for the Nano. I have also tried using
dd to copy
tegra210-p3448-0000-p3449-0000-a02.dtb to the 3rd and 10th partitions on the SD card with a 1024-byte offset, since that’s what I saw when I ran
binwalk on those partitions.
Regardless of all this, the Jetson boots just fine but my seventh camera mode never appears in the device tree (running
ls /proc/device-tree/cam_i2cmux/i2c@0/rbpcv2_imx219_a@10 only shows modes 0-5). Because of this, when I try running my application which sets the
sensor_mode control to 6 and tries to request a 640x480 resolution, the ioctl call returns EINVAL. I have added some print statements and things to the kernel driver and I can see that it only thinks there are 6 total modes and fails because I am requesting one that it thinks is out of bounds.
I have seen various discussions on here regarding modifying the device tree, some of which talk about it needing to be encrypted in some way (which I don’t think it needs to be since it’s still booting fine after overwriting all instances of the device tree I could find?..), and lots of references to poorly-documented shell scripts that take me half an hour to even find the right downloads for that are supposed to magically fix everything (but, again, I have no idea how to use them because there is no documentation I can find).
So my main questions at this point are: How can I actually modify the device tree? Where is it getting the old one from that only has 6 modes?
I am using L4T 32.6.1 and a Jetson Nano developer kit (the version with an SD card instead of built-in flash).