Sony IMX390 Linux driver

From RidgeRun Developer Wiki


Problems running the pipelines shown on this page?
Please see our GStreamer Debugging guide for help.


Disclaimer

The IMX390 is a sensor for automotive. RidgeRun can help you extending the driver as needed but the customer needs to be sure that they qualify as an automotive client for Sony in order to get access to the sensor documentation and provide it to RidgeRun. Otherwise, RidgeRun would be blocked on providing support.

Sony IMX390 features

The Sony IMX390 is a CMOS image sensor with the following features:

  • FPD-Link™ III camera with DS90UB953A Serializer
  • 192 degree and 56 degree lens options
  • Resolution: 1920 x 1080 @ 60fps
  • Formats: 24/20/12b RAW Combined HDR
  • Ultra-lightweight (<10 g excluding lens)
  • Excellent thermal management
  • Perfect camera axis alignment
  • Designed for harsh environmental conditions
  • Supports leading vision and sensor processors
  • Supports NVIDIA Jetson TX1/TX2 and AGX Xavier

Enabling the driver

Follow these instructions to build and install the kernel image and device tree.

1. Install dependencies

2. Set the environment variables for the sources L4T 31-1-0

3. Install the toolchain

4. Download the kernel sources

5. Apply driver patches

Before start building the kernel and dtb sources, apply the patch with IMX390 camera sources:

Copy the patches tarball into sources directory, decompress the tarball and apply the patch with the commands:

XAVIER_SOURCES=$(pwd)
mv 4.2_d3_ds90ub960_imx390.tar.gz $XAVIER_SOURCES/sources
cd $XAVIER_SOURCES/sources
tar -xvf 4.2_d3_ds90ub960_imx390.tar.gz
quilt push

6. Compile kernel and dtb

Follow the steps:

cd $XAVIER_SOURCES/sources
CROSS_COMPILE=${HOME}/toolchain_bin_${VERSION}/${TOOLCHAIN_DIR}/bin/$CC_PREFIX
KERNEL_OUT=$XAVIER_SOURCES/images/build
KERNEL_MODULES_OUT=$XAVIER_SOURCES/images/modules
cd $XAVIER_SOURCES/public_sources
make -C kernel/kernel-4.9/ ARCH=arm64 O=$KERNEL_OUT tegra_defconfig
make -C kernel/kernel-4.9/ ARCH=arm64 O=$KERNEL_OUT menuconfig
make -C kernel/kernel-4.9/ ARCH=arm64 O=$KERNEL_OUT CROSS_COMPILE=${CROSS_COMPILE} -j6 Image
make -C kernel/kernel-4.9/ ARCH=arm64 O=$KERNEL_OUT CROSS_COMPILE=${CROSS_COMPILE} -j6 dtbs
make -C kernel/kernel-4.9/ ARCH=arm64 O=$KERNEL_OUT CROSS_COMPILE=${CROSS_COMPILE} -j6 modules
make -C kernel/kernel-4.9/ ARCH=arm64 O=$KERNEL_OUT modules_install INSTALL_MOD_PATH=$KERNEL_MODULES_OUT

7. Flash Xavier

This guide assumes that the user already has JetPack 4.2 installed. This link contains details about how to install JetPack 4.2: https://docs.nvidia.com/sdk-manager/download-run-sdkm/index.html

JETPACK_4_2 contains the directory where JetPack 4.2 was installed. For example.

export JETPACK_4_2=$HOME/JetPack-L4T-4.2

Make sure the Xavier is in recovery mode

cd ${JETPACK_4_2}/JetPack_4.2_Linux_P2888/Linux_for_Tegra 
# Copy kernel generated
cp $XAVIER_SOURCES/images/build/arch/arm64/boot/Image kernel/
# Copy device tree generated
cp $XAVIER_SOURCES/images/build/arch/arm64/boot/dts/tegra194-p2888-0001-p2822-0000.dtb kernel/dtb/
# Copy new modules
sudo cp -a $XAVIER_SOURCES/images/modules/lib rootfs/
# Flash memory 
sudo ./flash.sh jetson-xavier mmcblk0p1

Using the driver

Capture at 1936x1100p@60fps

gst-launch-1.0 nvarguscamerasrc sensor-id=0 maxperf=true ! nvvidconv ! queue  ! xvimagesink sync=false async=true


RidgeRun Resources

Quick Start Client Engagement Process RidgeRun Blog Homepage
Technical and Sales Support RidgeRun Online Store RidgeRun Videos Contact Us
RidgeRun.ai: Artificial Intelligence | Generative AI | Machine Learning

Contact Us

Visit our Main Website for the RidgeRun Products and Online Store. RidgeRun Engineering informations are available in RidgeRun Professional Services, RidgeRun Subscription Model and Client Engagement Process wiki pages. Please email to support@ridgerun.com for technical questions and contactus@ridgerun.com for other queries. Contact details for sponsoring the RidgeRun GStreamer projects are available in Sponsor Projects page.