IMX290 driver for TX2

Hi,
Anybody have tried connecting the IMX290 camera to TX2?
I am struggling to find drivers for it. It seems creating a driver for a camera is not an easy task. Right?

Hi Glenn_alday,

NVIDIA BSP does not provide driver for IMX290.

And as you guessed, developing sensor driver from scratch is not trivial even if you have access to sensor datasheet. It’s better to contact the vendor and and get driver or at least more details to develop a driver.

There are few IMX sensor drivers in /drivers/media/i2c folder of kernel source which could be conisdered as nice entry points to develop your own driver.

Regards,
Rejeesh

Hi Rejeesh,
Thanks for the inputs. I can’t find the drivers folder, is it hidden?
I am totally new on using ubunto OS.

Regards,
Glenn

Hi Glenn,

Hope you downloaded L4T27.1 source code. If not, here is the link:
http://developer.nvidia.com/embedded/dlc/l4t-sources-27-1/

You need to extract kernel_src.tbz2 for kernel source.

You should find the V4L2 sensor drivers in the below folder.

kernel/kernel-4.4/drivers/media/i2c

Regards,
Rejeesh

Thanks Rejeesh!
I think I will use the existing IMX driver as a starting point for developing the driver. Can you please teach how to compile and test it?

Best Regards,
Glenn

Hi Glenn,

I think few IMX sensors are already built as part of kernel (it is advised to build sensor driver as static modules & not as separate modules).

JetsonHacks provides some nice tutorials on using TX1/TX2. Below link explain how to build kernel and modules (from target):
http://www.jetsonhacks.com/2017/03/25/build-kernel-and-modules-nvidia-jetson-tx2/

Please refer the L4T documentation for understanding BSP architecure, in particular sensor driver architecture. This is available at:
https://developer.nvidia.com/embedded/dlc/l4t-documentation-27-1

Please note that section “Sensor Driver Programming Guide” is not updated for TX2 (it still refers to TX1 BSP architecture).

Regards,
Rejeesh

Hi Rejeesh,

I have a question regarding the “Sensor Driver Programming Guide” document, on page 5 about the camera modules. I can’t any camera modules on arch/arm[64]/boot/dts directory. Is it transferred on TX2 to a different location? I also would like to ask if adding your own sensor driver is easy as putting your driver file on the i2c folder and compile the whole kernel? Or I need to do other things like editing some files other than the driver files?

hello glenn_alday,

FYI, TX2 has already moving device tree source codes to the new path.
it’s moving to

$TOP/hardware/nvidia/platform/t18x/

Are there any plans on NVIDIA side to incorporate the sensor driver into the kernel?

There is actually a driver written in official linux kernel github, that fits into v4l subsystem. As I understand the code over there, the driver registers itself into v4l allowing use of communication function. The upstreamed drivers prepared by NVIDIA looks a little bit differently, but as I understand that correctly, it is due to nvargus subsystem integration?

So as long as one can use v4l only, it’s just matter of recompiling the 4.9.140 kernel including the v4l IMX290 driver? Am I understand it correctly? Also I was a little problems with configuration to recompile the kernel in a way it include imx290.c. But is it worth trying?

In the meantime I was able to incorporate the driver from v5 official kernel branch as upstreamed drivers as NVIDIA does, but there were some changes in v4l. The necessery changes exists in v4.18.* kernel. Does somebody confirmed that updating the kernel to this version work? And how the process of updating looks like?

hello michal.meina,

please refer to Camera Architecture Stack, it’s software architecture that includes NVIDIA components that allow for ease of development and customization.

you may access L4T Sources via jetson download center for drivers;
and you should also check BSP Customization chapter for reference,
thanks