sudo ./flash.sh -r --no-flash jetson-agx-orin-devkit internal (not sure if this is required but I found it on ridgerun, NVIDIA Jetson Orin - IMX477 J20)
copy files from Host to Orin:
kernel (Linux_for_Tegra/kernel/Image)
DTBs (Linux_for_Tegra/bootloader/*)
modules (Linux_for_Tegra/rootfs/lib/modules/*)
that doesn’t seem to be enough, what am I missing?
By the way, I use Jetson Linux 36.3
this is actually what i have been trying to do without success, but before i go into detail, i would like to ask one thing.
If no camera is connected and i select the imx185 camera in the jetson-io tool, what should happen?
Because when I do that, after a reboot I get no error message (sudo dmesg -w) regarding the imx185 or tca9546 and also the modules are not loaded (lsmod), I can do it manually with “modprobe nv_imx185”, then it is listed, but there is still no kernel message.
I would expect an error message because it can’t find the devices or get a response from the i2c channel, is my assumption wrong or am I missing something?
because if it doesn’t work with the inbuilt imx185 driver, I don’t even need to try with my own driver.
to rule out other errors, I deleted the nvidia folder in my home directory and reinstalled my Orin without any modification with the SDKManager (HW: Jetson AGX Orin 32GB DevKit , SW: JetPack 6.0 rev. 2), but I skipped the “last step” of installing the SDK components because this step doesn’t work for some reason.
after the installation I opened the tool Jetson-io.py → “Configure Jetson AGX CSI Connector” → “Configure for compatible hardware” → “Jetson Camera Dual-IMX274” or “Jetson Camera IMX185” or “Jetson Camera IMX390” (I tried all three) → “Save pin changes” → “Save and reboot to reconfigure pins” → press any key
During the boot process, when the Nvidia logo is displayed, I see e.g. “1: Custom Header Config: CSI Jetson Camera IMX390”
and when I then run the command “sudo dmesg -w” and search for “imx” I find no entry (nothing is connected to the CSI2 or I2C interface)
I have tried for all 3 IMX sensors and there is never a return.
I also searched for tca and pca and at least for the IMX390 I got a return for pca
“pca954x 2-0070: probe failed”
Update:
I also checked the other cameras and received the expected response, at least for the “Jetson Camera Hawk-Owl p3762 module”
I noticed that the device tree layout is different between Hawk-Owl p3762 and IMX185.
After using the p3762 as a base for my own driver, it seems to work.
Tomorrow I will test further and report back
so after a bit of testing I can confirm that it now works when I use the device tree from the “Hawk-Owl p3762” as a base
There is only one cosmetic thing that bothers me a little:
My original sensor (imx728) that I flashed the Orin with is still in my kernel log, how can I get rid of it?
no, but there are still some files that I cannot delete:
/sys/firmware/devicetree/base/bus@0/i2c@3180000/imx728@1a
/sys/firmware/devicetree/base/__symbols__/
it should your base device tree with some definition of IMX728.
please review your implementation, you may try rebuild the kernel sources and updating the DTB accordingly.
I can’t find any file mentioning imx728, neither in the source files on my host PC nor on the Orin.
and when I decompile the tegra234-p3737-0000+p3701-0000-dynamic.dtbo, no imx728 is mentioned either. (wasn’t really necessary because the search command also searches within dtbo’s, but just to be sure)
another thing i have noticed, only when i select my driver in the jetson io tool, the imx728 error appear in the kernel protocol.
if I select another sensor it does not appear, but the entrys in:
/sys/firmware/devicetree/base/bus@0/i2c@3180000/imx728@1a
/sys/firmware/devicetree/base/__symbols__/
are still available
you should dig into your base device tree instead of overlay files.
please also note that,
the default DTB and overlays to be located in the same place (i.e. on the QSPI). Hence, now by default there is no DTB specified in the extlinux.conf.
however, you can specify FDT alone. you can specify FDT + OVERLAYS. you CANNOT do only OVERLAYS though.
overlays from Rootfs are processed only if DTB is coming from Rootfs. when FDT entry is not present in extlinux.conf UEFI DTB is used.
TIMEOUT 30
DEFAULT JetsonIO
MENU TITLE L4T boot options
LABEL primary
MENU LABEL primary kernel
LINUX /boot/Image
INITRD /boot/initrd
APPEND ${cbootargs} root=PARTUUID=bd0f91da-131b-4fd9-bb82-4189944e6ef5 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 console=ttyAMA0,115200 firmware_class.path=/etc/firmware fbcon=map:0 net.ifnames=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}
LABEL JetsonIO
MENU LABEL Custom Header Config: <CSI Jetson Camera IMX800>
LINUX /boot/Image
FDT /boot/dtb/kernel_tegra234-p3737-0000+p3701-0000-nv.dtb
INITRD /boot/initrd
APPEND ${cbootargs} root=PARTUUID=bd0f91da-131b-4fd9-bb82-4189944e6ef5 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 console=ttyAMA0,115200 firmware_class.path=/etc/firmware fbcon=map:0 net.ifnames=0 nospectre_bhb video=efifb:off console=tty0
OVERLAYS /boot/tegra234-p3737-camera-imx800-overlay.dtbo
in the FDT (kernel_tegra234-p3737-0000+p3701-0000-nv.dtb) neither imx728 nor imx800 is mentioned
and when I search for imx728 or imx800 in the files
in my case it was not enough to flash the A_kernel-dtb and B_kernel-dtb
but after I had flashed the QSPI, my old camera was gone.
$ sudo ./flash.sh --no-systemimg -c bootloader/generic/cfg/flash_t234_qspi.xml
at the moment, this approach is fine for me.