Hello,
My team and I working on the NVIDIA Jetson Orin NX 16GB with two Sony IMX 415-C sensors. We encountered some difficulties during the integration process. When we run the dmesg
command, we get the following error messages:
imx219_board_setup: invalid sensor model id: 6d69
imx219_board_setup: error during i2c read probe (-121) board setup failed
.
Has anyone solved this problem yet ?
We found the GitHub repository for the driver but unfortunately our card is not supported. There’s a branch called “9-support-for-jetson-orin-nano” that might be able to solve the problem, but it’s not yet merged into the master.
1 Like
hello ttvexcv,
it’s error reported by sensor driver side, board setup is the very beginning function to register camera device to linux kernel.
please see-also Sensor Software Driver Programming to review the driver implementation.
Thank for your reply.
I used sdkmanager to get the correct board support package for Orin NX.
However I can’t find <top>/hardware/nvidia/platform/
as mentionned in the documentation.
ls nvidia/nvidia_sdk/JetPack_5.1.1_Linux_JETSON_ORIN_NX_TARGETS/Linux_for_Tegra
apply_binaries.sh jetson-agx-orin-devkit-industrial.conf l4t_generate_soc_bup.sh p2972-0000-devkit-maxn.conf p3737-0000+p3701-0000-as-p3767-0003.conf
bootloader jetson-agx-orin-devkit-maxn.conf l4t_sign_image.sh p2972-0000-devkit-slvs-ec.conf p3737-0000+p3701-0000-as-p3767-0004.conf
build_l4t_bup.sh jetson-agx-xavier-devkit.conf nvautoflash.sh p2972.conf p3737-0000+p3701-0000.conf
clara-agx-xavier-devkit.conf jetson-agx-xavier-ind-noecc.conf nvmassfusegen.sh p3449-0000+p3668-0000-qspi-sd.conf p3737-0000+p3701-0000-maxn.conf
e3900-0000+p2888-0004-b00.conf jetson-agx-xavier-industrial.conf nvsdkmanager_flash.sh p3449-0000+p3668-0001-qspi-emmc.conf p3740-0002-b00+p3701-0002.conf
flash.sh jetson-agx-xavier-industrial-mxn.conf nv_tegra p3509-0000+p3668-0000-qspi.conf p3740-0002-b01+p3701-0002.conf
generate_capsule jetson_board_spec.cfg nv_tools p3509-0000+p3668-0000-qspi-sd.conf p3740-0002-c01+p3701-0008.conf
holoscan-devkit.conf jetson-orin-nano-devkit.conf odmfuse.func p3509-0000+p3668-0001-qspi-emmc.conf p3767.conf.common
igx-orin-devkit.conf jetson-orin-nano-devkit-nvme.conf odmfuseread.sh p3509-a02+p3767-0000.conf p3768-0000+p3767-0000.conf
jetson_additional_board_spec.cfg jetson-xavier.conf odmfuse.sh p3509-a02+p3767-0000-maxn.conf p3768-0000+p3767-0000-maxn.conf
jetson-agx-orin-devkit-as-jao-32gb.conf jetson-xavier-maxn.conf p2822-0000+p2888-0001.conf p3668.conf.common p3768-0000+p3767-0000-nvme.conf
jetson-agx-orin-devkit-as-nano4gb.conf jetson-xavier-nx-devkit.conf p2822-0000+p2888-0004.conf p3701.conf.common README_Autoflash.txt
jetson-agx-orin-devkit-as-nano8gb.conf jetson-xavier-nx-devkit-emmc.conf p2822-0000+p2888-0008.conf p3711-0000+p3701-0002.conf rootfs
jetson-agx-orin-devkit-as-nx-16gb.conf jetson-xavier-nx-devkit-qspi.conf p2822-0000+p2888-0008-maxn.conf p3737-0000+p3701-0000-as-p3701-0004.conf source
jetson-agx-orin-devkit-as-nx-8gb.conf jetson-xavier-slvs-ec.conf p2822-0000+p2888-0008-noecc.conf p3737-0000+p3701-0000-as-p3767-0000.conf source_sync.sh
jetson-agx-orin-devkit.conf kernel p2972-0000.conf.common p3737-0000+p3701-0000-as-p3767-0001.conf tools
Have I forgotten or misunderstood something?
Additional question : How to include my custom .dtsi to main .dts and rebuild the new image ?
hello ttvexcv,
please visit Jetson Linux 35.3.1 | NVIDIA Developer to download [Driver Package (BSP) Sources]. you’ll need to extract kernel_src.tbz2 package to obtain the device tree sources.
please see-also developer guide, Kernel Customization for the steps to build the kernel.
Hello,
I have carried out the following steps, in accordance with the documentation:
Create my file tegra234-camera-imx415-dual.dtsi in the directory hardware/nvidia/platform/t23x/common/kernel-dts/t234-common-modules/
panthera3@workstation:bsp_sources/kernel_src$ ls hardware/nvidia/platform/t23x/common/kernel-dts/t234-common-modules/
tegra234-camera-ar0234-a00.dtsi tegra234-camera-imx185-a00.dtsi tegra234-camera-imx415-dual.dtsi tegra234-cvb-e2425-1099.dtsi tegra234-p3711-p3713-pcie.dtsi
tegra234-camera-e3331-a00.dtsi tegra234-camera-imx274-dual.dtsi tegra234-camera-p3762-a00.dtsi tegra234-cvm-e2421-1098.dtsi tegra234-super-module-e2614.dtsi
tegra234-camera-e3333-a00.dtsi tegra234-camera-imx390-a00.dtsi tegra234-camera-p3783-a00.dtsi tegra234-cvm-e2421-1099.dtsi
Create my file imx415.c in the directory ./kernel/nvidia/drivers/media/i2c/imx415
panthera3@workstation: bsp_sources/kernel_src/kernel/nvidia/drivers/media/i2c$ ls | grep imx
imx185_mode_tbls.h
imx185_v1_mode_tbls.h
imx214.c
imx219_mode_tbls.h
imx268_mode_tbls.h
imx274_mode_tbls.h
imx318_mode_tbls.h
imx390_mode_tbls.h
imx415.c
imx477_mode_tbls.h
nv_imx185.c
nv_imx185_v1.c
nv_imx219.c
nv_imx268.c
nv_imx274.c
nv_imx318.c
nv_imx390.c
nv_imx477.c
Add the line obj-$(CONFIG_VIDEO_IMX415) += imx415.o
to the file ./kernel/nvidia/drivers/media/i2c/Makefile
panthera3@workstation:bsp_sources/kernel_src/kernel/nvidia/drivers/media/i2c$ grep -ir CONFIG_VIDEO_IMX415
Makefile:obj-$(CONFIG_VIDEO_IMX415) += imx415.o
Add CONFIF_VIDEO_IMX415=m
line to ./kernel/kernel-5.10/arch/arm64/configs/tegra-defconfig
file
panthera3@workstation:bsp_sources/kernel_src/kernel/kernel-5.10/arch/arm64/configs$ grep -ir CONFIG_VIDEO_IMX415
defconfig:CONFIG_VIDEO_IMX415=m
Build kernel in kernel_output directory
panthera3@workstation:bsp_sources/kernel_src$ mkdir kernel_out
panthera3@workstation:bsp_sources/kernel_src$ ./nvbuild.sh -o ~/Workspace/Orin/nvidia/bsp_sources/kernel_src/kernel_out
...
LD [M] sound/soc/tegra/snd-soc-tegra210-mixer.ko
LD [M] sound/soc/tegra/snd-soc-tegra210-mvc.ko
LD [M] sound/soc/tegra/snd-soc-tegra210-ope.ko
LD [M] sound/soc/tegra/snd-soc-tegra210-sfc.ko
LD [M] sound/tegra-safety-audio/safety-i2s.ko
Kernel sources compiled successfully.
After compilation, I can’t find the imx415.ko file in the outuput.
According to the documentation, the imx415.ko file should be located in <OUT>/nvidia/kernel/drivers/media/i2c/<camera>.ko
Here are the directory contents after the build :
panthera3@workstation:bsp_sources/kernel_src/kernel_out$ ls
arch certs drivers include ipc kernel-int-overlays.txt lib mm modules.builtin.modinfo modules.order net scripts sound System.map virt vmlinux.o
block crypto fs init kernel kernel-overlays.txt Makefile modules.builtin modules-only.symvers Module.symvers nvsched security source usr vmlinux vmlinux.symvers
panthera3@workstation:bsp_sources/kernel_src/kernel/kernel-5.10$ ls
android-patches block COPYING crypto drivers hardware init Kbuild kernel kernel-overlays.txt LICENSES Makefile net rt-patches scripts sound usr WD
arch certs CREDITS Documentation fs include ipc Kconfig kernel-int-overlays.txt lib
How do I recover the imx415.ko
file after the build?
1 Like
please dig into these building messages, did you see IMX415 files has included?
# dig into output files
panthera3@workstation:bsp_sources/kernel_src$ ls
hardware kernel kernel_out l4t-gcc nvbuild.sh nvcommon_build.sh
panthera3@workstationbsp_sources/kernel_src$ find . -type f -name *imx415*
./hardware/nvidia/platform/t23x/common/kernel-dts/t234-common-modules/tegra234-camera-imx415-dual.dtsi
./kernel/nvidia/drivers/media/i2c/imx415.c
# dig into output logs
panthera3@workstation:bsp_sources/kernel_src$ ./nvbuild.sh -o ~/Workspace/Orin/nvidia/bsp_sources/kernel_src/kernel_out > building.log
panthera3@workstation:bsp_sources/kernel_src$ cat building.log | grep 415 | wc -l
0
I can’t find any trace of an imx415 file.
1 Like
hello ttvexcv,
it might be something wrong with your kernel config.
could you please revise the Makefile,
for example, Makefile:obj-y += imx415.o
to force compiler include imx415 sources to built the code.
1 Like
Hi JerryChang, thanks for your quick reply.
I’ll give it a try now.
I have updated ./kernel/nvidia/drivers/media/i2c/Makefile
as follows
subdir-ccflags-y += -Werror
ccflags-y += -I$(srctree)/drivers/media/platform/tegra
ccflags-y += -I$(srctree)/drivers/video/tegra/camera
obj-$(CONFIG_NV_VIDEO_IMX185) += nv_imx185.o
obj-$(CONFIG_NV_VIDEO_IMX185) += nv_imx185_v1.o
obj-$(CONFIG_NV_VIDEO_IMX477) += nv_imx477.o
obj-$(CONFIG_NV_VIDEO_IMX219) += nv_imx219.o
obj-$(CONFIG_NV_VIDEO_IMX268) += nv_imx268.o
obj-$(CONFIG_NV_VIDEO_IMX274) += nv_imx274.o
obj-$(CONFIG_NV_VIDEO_IMX318) += nv_imx318.o
obj-y += imx415.o
obj-$(CONFIG_NV_VIDEO_LC898212) += nv_lc898212.o
obj-$(CONFIG_NV_VIDEO_OV5693) += nv_ov5693.o
obj-$(CONFIG_NV_VIDEO_OV9281) += nv_ov9281.o
obj-$(CONFIG_NV_VIDEO_OV10823) += nv_ov10823.o
obj-$(CONFIG_NV_VIDEO_OV23850) += nv_ov23850.o
obj-$(CONFIG_I2C_IOEXPANDER_PCA9570) += pca9570.o
obj-$(CONFIG_VIDEO_TC358840) += tc358840.o
obj-$(CONFIG_VIDEO_LT6911UXC) +=lt6911uxc.o
obj-$(CONFIG_I2C_IOEXPANDER_SER_MAX9295) += max9295.o
obj-$(CONFIG_I2C_IOEXPANDER_DESER_MAX9296) += max9296.o
obj-$(CONFIG_NV_VIDEO_IMX390) += nv_imx390.o
obj-$(CONFIG_NV_VIDEO_AR0234) += nv_ar0234.o
obj-$(CONFIG_NV_VIDEO_HAWK_OWL) += nv_hawk_owl.o
obj-$(CONFIG_NV_DESER_MAX96712) += max96712.o
obj-$(CONFIG_VIDEO_ECAM) += ar1335.o
ar1335-objs := ar1335_common.o
1 Like
Does NVIDIA supply the nv_imx415.c driver for imx415 sensor as for the 185, 129, 268, 274, 318, 390 and 477 ?
hello ttvexcv,
no, IMX415 is not supported by default.
all default supported camera drivers were located at… $public_sources/kernel_src/kernel/nvidia/drivers/media/i2c/*
you may check Jetson Linux 35.3.1 | NVIDIA Developer to download [Driver Package (BSP) Sources] for confirmation.
system
Closed
August 9, 2023, 5:22am
14
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.