Giter VIP home page Giter VIP logo

vc_mipi_nvidia's Introduction

Vision Components MIPI CSI-2 driver for NVIDIA Jetson Nano, Xavier NX, AGX Xavier, TX2, Orin Nano and Orin NX

VC MIPI camera

Version 0.18.0 (History)

Prerequisites for cross-compiling

Host PC

  • Recommended OS is Ubuntu 18.04 LTS or Ubuntu 20.04 LTS
  • You need git to clone this repository
  • All other packages are installed by the scripts contained in this repository

Quickstart

  1. Enter recovery mode by following the instructions in one of the guides:

    Quick Start Guide L4T 35.3.1 (NVIDIA Jetson Orin Nano, Orin NX, Xavier NX and AGX Xavier)

    Quick Start Guide L4T 32.7.3 (NVIDIA Jetson Nano, TX2, Xavier NX and AGX Xavier)

  2. Create a directory and clone the repository.

    cd <working_dir>
    git clone https://github.com/VC-MIPI-modules/vc_mipi_nvidia
  3. Start the quickstart installation process and follow the instructions.

    cd vc_mipi_nvidia/bin
    ./quickstart.sh

    If you have changed your hardware setup simply execute this script again.

    During the setup process of the quickstart.sh script, there will be executed the l4t_create_default_user.sh script from NVIDIA, which will create a default user with the credentials given by the user.

    • After setting up the toolchain, the user is prompted to this credentials mask.
    • This script has been available since L4T 32.6.1 and will be applied accordingly.
  4. (Optional)

    Set up the target by executing one of the following commands on the host computer when the target device is already running:

    cd vc_mipi_nvidia/bin
    ./setup.sh --target

    This function will configure a connection with the running target. It will backup the users known_hosts file and copy the users public rsa key, so that every time when a ssh connection to the device is opened, the user don't need to enter the password again. It will also copy the demo.sh and max_speed.sh script into the /home/username/test/ folder on the device.

    For more information about the mentioned scripts, please run the appropriate script with the option "--help" in a shell on the running device.

    vc@nvidia $./test/demo.sh --help

    or

    vc@nvidia $ ./test/max_speed.sh --help

    When operating with the max_speed.sh script, it should be run as root.
    E.g. speeding up the clocks:

    vc@nvidia $ sudo ./test/max_speed.sh --max

Changing camera settings in the device tree

GStreamer Support

If you want to use GStreamer with nvarguscamerasrc it is essential to adjust some properties in the device tree. To do that follow the instructions in this section. For each camera there is a mode0 node in the device tree. There is an additional comment in this node to mark the properties that you need to customize. In the tables below you will find the specific values for each camera.

The value of the property pixel_t lists the supported pixel formats. Here you have to choose one out of the following table.

pixel_t value RAW08 value RAW10 value RAW12
RGGB bayer_rggb8 bayer_rggb bayer_rggb12
GBRG bayer_gbrg8 bayer_gbrg bayer_gbrg12

The property max_framerate is given for the number of lanes and the pixel format. For example, 4L10 stands for 4 lanes and the pixel format RAW10. Always set the def_framerate to the same value as max_framerate

GStreamer properties for IMX296, IMX297, OV7251 (cameras with 1 lane support only)
Property IMX296 IMX297 OV7251
physical_w 4.968 4.968 1.920
physical_h 3.726 3.726 1.440
active_w 1440 720 640
active_h 1080 540 480
pixel_t RG 10 RG 10 RG 8,10
max_gain_val 48 48 18
step_gain_val 0.100 0.100 0.018
max_framerate (1L08) - - 104.0
max_framerate (1L10) 60.3 60.3 104.0
max_framerate (1L12) - - -
GStreamer properties for IMX264, IMX265, OV9281 (cameras with 2 lanes support only)
Property IMX264 IMX265 OV9281
physical_w 8.390 7.065 3.840
physical_h 7.066 5.299 2.400
active_w 2432 2048 1280
active_h 2048 1536 800
pixel_t RG 8,10,12 RG 8,10,12 RG 8,10
max_gain_val 48 48 12
step_gain_val 0.100 0.100 0.050
max_framerate (2L08) 35.5 55.3 120.6
max_framerate (2L10) 35.5 55.3 120.6
max_framerate (2L12) 35.5 55.3 -
GStreamer properties for IMX178, IMX183, IMX226 (cameras with 2 and 4 lanes support)
Property IMX178 IMX183 IMX226
physical_w 7.373 13.056 7.222
physical_h 4.915 8.755 5.550
active_w 3072 5440 3904
active_h 2048 3648 3000
pixel_t RG 8,10,12 RG 8,10,12 GB 8,10,12
max_gain_val 48 27 27
step_gain_val 0.100 0.026 0.014
max_framerate (2L08) 51.3 13.4 21.8
max_framerate (2L10) 41.6 13.4 21.8
max_framerate (2L12) 35.4 11.2 18.1
max_framerate (4L08) 58.2 26.8 43.6
max_framerate (4L10) 58.2 26.8 43.6
max_framerate (4L12) 51.3 22.4 36.3
GStreamer properties for IMX250, IMX252, IMX273, IMX392 (cameras with 2 and 4 lanes support)
Property IMX250 IMX252 IMX273 IMX392
physical_w 8.390 7.066 4.968 6.624
physical_h 7.066 5.299 3.726 4.140
active_w 2432 2048 1440 1920
active_h 2048 1536 1080 1200
pixel_t RG 8,10,12 RG 8,10,12 RG 8,10,12 RG 8,10,12
max_gain_val 48 48 48 48
step_gain_val 0.100 0.100 0.100 0.100
max_framerate (2L08) 65.7 102.0 195.6 132.4
max_framerate (2L10) 53.7 83.8 156.5 111.9
max_framerate (2L12) 45.5 69.8 136.9 95.0
max_framerate (4L08) 101.3 151.4 276.0 201.7
max_framerate (4L10) 82.5 123.5 226.5 167.0
max_framerate (4L12) 69.5 105.7 165.9 134.4
GStreamer properties for IMX290, IMX327, IMX335, IMX412, IMX415 and IMX462 (cameras with 2 and 4 lanes support)
Property IMX290/327 IMX335 IMX412 IMX415 IMX462
physical_w 5.568 5.184 6.250 5.568 5.568
physical_h 3.132 3.888 4.712 3.132 3.132
active_w 1920 2592 4032 3840 1920
active_h 1080 1944 3040 2160 1080
pixel_t RG 10 RG 10,12 RG 10 GB 10 RG 10
max_gain_val 71 72 51 72 71
step_gain_val 0.300 0.300 0.050 0.300 0.300
max_framerate (2L08) - - - - -
max_framerate (2L10) 60.0 15.0 20.0 31.7 60.0
max_framerate (2L12) - 15.0 - - -
max_framerate (4L08) - - - - -
max_framerate (4L10) 60.0 22.3 40.0 59.9 120.0
max_framerate (4L12) - 22.3 - - -
GStreamer properties for IMX565, IMX566, IMX567, IMX568 and IMX900 (cameras with 2 and 4 lanes support)
Property IMX565 IMX566 IMX567/568 IMX900
physical_w 11.311 7.804 6.752 4.608
physical_h 8.220 7.804 5.655 3.456
active_w 4128 2848 2464 2048
active_h 3000 2848 2064 1536
pixel_t RG 8,10,12 RG 8,10,12 RG 8,10,12 RG 8,10,12
max_gain_val 48 48 48 48
step_gain_val 0.100 0.100 0.100 0.100
max_framerate (2L08) 21.1 33.3 49.8 94,0
max_framerate (2L10) 17.0 26.9 41.3 76,7
max_framerate (2L12) 14.2 22.6 34.6 64,8
max_framerate (4L08) 40.7 68.2 96.2 128,0
max_framerate (4L10) 34.3 51.6 78.8 118,9
max_framerate (4L12) 27.8 43.6 66.7 70,9

Example

As an example the device tree for the IMX226 with 4 lanes and pixel format RAW10 is shown on the code snippet. Be aware of that the property values for gain are given in mdB [:)] and the frame rate in mHz. So, you have to multiply the values from the table with 1000.

  ...
  // ----------------------------------------------------
  // If you want to use GStreamer with nvarguscamerasrc
  // you have to adjust this settings
  physical_w              = "7.222";
  physical_h              = "5.550";
  // ----------------------------------------------------

  // This node is needed by the Tegra framework.
  // You don't have to change any settings if just want to use the V4L API.
  mode0 {
      ...

      // ----------------------------------------------------
      // If you want to use GStreamer with nvarguscamerasrc
      // you have to adjust this settings. 
      active_l                 = "0";
      active_t                 = "0";
      active_w                 = "3904";
      active_h                 = "3000";
#if LINUX_VERSION < 500
      pixel_t                  = "bayer_gbrg";
#else
      mode_type                = "bayer";
      pixel_phase              = "gbrg";
      csi_pixel_bit_depth      = "10";
#endif

      min_gain_val             = "0";         //     0.0 dB
      max_gain_val             = "27000";     //    27.0 dB
      step_gain_val            = "14";        //   0.014 dB
      default_gain             = "0";         //     0.0 dB
      
      min_exp_time             = "1";         //       1 us
      max_exp_time             = "1000000";   // 1000000 us
      step_exp_time            = "1";         //       1 us
      default_exp_time         = "10000";     //   10000 us

      min_framerate            = "1000";      //       1 Hz
      max_framerate            = "43600";     //    43.6 Hz
      step_framerate           = "100";       //     0.1 Hz
      default_framerate        = "43600";     //    43.6 Hz
      // ----------------------------------------------------
      ...

Device Tree File

If you want to change some settings of a camera in the device tree, please follow these steps.

  1. Edit the device tree file for your hardware setup.

    system on module carrier board device tree file
    NVIDIA Jetson Nano NVIDIA Jetson Nano Developer Kit src/devicetree/NV_DevKit_Nano/tegra210-camera-vc-mipi-cam.dtsi
    NVIDIA Jetson Nano Auvidea JNX30 src/devicetree/Auvidea_JNX30_Nano/tegra210-camera-vc-mipi-cam.dtsi
    NVIDIA Jetson Nano Auvidea JNX42 src/devicetree/Auvidea_JNX42_Nano/tegra210-camera-vc-mipi-cam.dtsi
    NVIDIA Jetson Xavier NX NVIDIA Jetson Xavier NX Developer Kit src/devicetree/NV_DevKit_XavierNX/tegra194-camera-vc-mipi-cam.dtsi
    NVIDIA Jetson Xavier NX Auvidea JNX30 src/devicetree/Auvidea_JNX30_XavierNX/tegra194-camera-vc-mipi-cam.dtsi
    NVIDIA Jetson Xavier NX Auvidea JNX42 src/devicetree/Auvidea_JNX42_XavierNX/tegra194-camera-vc-mipi-cam.dtsi
    NVIDIA Jetson AGX Xavier Auvidea J20 on DevKit src/devicetree/Auvidea_J20_AGXXavier/tegra194-camera-vc-mipi-cam.dtsi
    NVIDIA Jetson TX2 Auvidea J20 on DevKit src/devicetree/Auvidea_J20_TX2/tegra186-camera-vc-mipi-cam.dtsi
    NVIDIA Jetson TX2 NX Auvidea JNX30D src/devicetree/Auvidea_JNX30D_TX2NX/tegra186-camera-vc-mipi-cam.dtsi
    NVIDIA Jetson Orin Nano NVIDIA Jetson Orin Nano Developer Kit src/devicetree/NV_DevKit_OrinNano/tegra234-camera-vc-mipi-cam.dtsi
    Jetpack 5 (L4T 35.3.1, L4T 35.4.1)
    NVIDIA Jetson Orin Nano NVIDIA Jetson Orin Nano Developer Kit src/devicetree/NV_DevKit_OrinNano/tegra234-p3767-camera-p3768-vc_mipi-dual.dts
    Jetpack 6 (L4T 36.2.0 DP)
    NVIDIA Jetson Orin Nano Auvidea JNX42 src/devicetree/Auvidea_JNX42_OrinNano/tegra234-camera-vc-mipi-cam.dtsi
    NVIDIA Jetson Orin NX Auvidea JNX42 src/devicetree/Auvidea_JNX42_OrinNX/tegra234-camera-vc-mipi-cam.dtsi

    To edit the correct device tree file you can simply use the setup script. It will open the correct device tree file in the nano editor.

      ./setup.sh --camera
  2. Enter recovery mode by following the instructions in one of the guides:
    Quick Start Guide L4T 35.3.1 (NVIDIA Jetson Orin Nano, Orin NX, Xavier NX and AGX Xavier)
    Quick Start Guide L4T 32.7.3 (NVIDIA Jetson Nano, TX2, Xavier NX and AGX Xavier)

  3. Build and flash the device tree files to the target.

      ./build.sh --dt
      ./flash.sh --dt

    Regarding to Jetpack5 and higher, please have a look at the section Annotations.
    Flashing the device

Using long exposure times or external trigger mode with long waiting times (> 5 seconds)

If you want to use your camera in an application with long exposure times or external trigger and the time between two consecutively triggers is potentially long (> 5 seconds) it is necessary to adjust the timeout of the csi receiver. In this case please change following line of code.

system on module line in file
NVIDIA Jetson Nano 232 /kernel/nvidia/drivers/media/platform/tegra/camera/vi/vi2_fops.c
NVIDIA Jetson Xavier NX 36 /kernel/nvidia/drivers/media/platform/tegra/camera/vi/vi5_fops.c
NVIDIA Jetson AGX Xavier 36 /kernel/nvidia/drivers/media/platform/tegra/camera/vi/vi5_fops.c
NVIDIA Jetson TX2 1097 /kernel/nvidia/drivers/media/platform/tegra/camera/vi/vi4_fops.c
NVIDIA Jetson TX2 NX 1097 /kernel/nvidia/drivers/media/platform/tegra/camera/vi/vi4_fops.c

Tested with VC MIPI Camera Module Revision

  • IMX178 (Rev.02), IMX183 (Rev.15), IMX226 (Rev.16),
  • IMX250 (Rev.09), IMX252 (Rev.12), IMX264 (Rev.05), IMX265 (Rev.05), IMX273 (Rev.16), IMX392 (Rev.08)
  • IMX290 (Rev.02), IMX327 (Rev.02), IMX462 (Rev.01)
  • IMX296 (Rev.43), IMX297 (Rev.43)
  • IMX335 (Rev.02)
  • IMX412 (Rev.05)
  • IMX415 (Rev.02)
  • IMX565 (Rev.03), IMX566 (Rev.03), IMX567 (Rev.03), IMX568 (Rev.04)
  • IMX900 (Rev.00)
  • OV7251 (Rev.01), OV9281 (Rev.02)

You can find the revision of the camera module in the dmesg log.

dmesg | grep 'i2c'
[...] i2c 6-0010: +--- VC MIPI Camera -----------------------------------+
[...] i2c 6-0010: | MANUF. | Vision Components               MID: 0x0427 |
[...] i2c 6-0010: | MODULE | ID:  0x0183                     REV:   0012 |
[...] i2c 6-0010: | SENSOR | SONY IMX183                                 |
...

Integrate the driver in your own BSP

If you have your own BSP, you have to integrate the driver into it. Please follow these steps.

  1. Apply all patches in the folder kernel_common_32.3.1+ and the patches listed in the following table that match your hardware setup

    system on module carrier board BSP all patches in folder patch/...
    NVIDIA Jetson Nano NVIDIA DevKit 32.7.1 - 32.7.3 kernel_Nano_32.6.1+
    32.7.4 kernel_Nano_32.6.1+
    kernel_Nano_32.7.4
    Auvidea JNX30 32.7.1 - 32.7.3 kernel_Nano_32.6.1+
    dt_Auvidea_JNX30_Nano_32.5.0+
    32.7.4 kernel_Nano_32.6.1+
    kernel_Nano_32.7.4
    dt_Auvidea_JNX30_Nano_32.5.0+
    Auvidea JNX42 32.7.1 - 32.7.3 kernel_Nano_32.6.1+
    dt_Auvidea_JNX30_Nano_32.5.0+
    32.7.4 kernel_Nano_32.6.1+
    kernel_Nano_32.7.4
    dt_Auvidea_JNX30_Nano_32.5.0+
    NVIDIA Jetson Xavier NX NVIDIA DevKit 32.7.1 - 32.7.2 kernel_Xavier_32.6.1+
    32.7.3 kernel_Xavier_32.7.3+
    35.1.0 kernel_Xavier_35.1.0+
    35.2.1 kernel_Xavier_35.2.1+
    35.3.1 kernel_Xavier_35.3.1+
    35.4.1 kernel_Xavier_35.4.1+
    Auvidea JNX30 32.7.1 - 32.7.2 kernel_Xavier_32.6.1+
    dt_Auvidea_JNX30_XavierNX_32.5.0+
    32.7.3 kernel_Xavier_32.7.3+
    dt_Auvidea_JNX30_XavierNX_32.5.0+
    35.1.0 kernel_Xavier_35.1.0+
    35.2.1 kernel_Xavier_35.2.1+
    35.3.1 kernel_Xavier_35.3.1+
    35.4.1 kernel_Xavier_35.4.1+
    Auvidea JNX42 32.7.1 - 32.7.2 kernel_Xavier_32.6.1+
    dt_Auvidea_JNX30_XavierNX_32.5.0+
    32.7.3 kernel_Xavier_32.7.3+
    dt_Auvidea_JNX30_XavierNX_32.5.0+
    35.1.0 kernel_Xavier_35.1.0+
    35.2.1 kernel_Xavier_35.2.1+
    35.3.1 kernel_Xavier_35.3.1+
    35.4.1 kernel_Xavier_35.4.1+
    NVIDIA Jetson AGX Xavier DevKit + J20 32.7.1 - 32.7.2 kernel_Xavier_32.6.1+
    32.7.3 kernel_Xavier_32.7.3+
    35.1.0 kernel_Xavier_35.1.0+
    35.2.1 kernel_Xavier_35.2.1+
    35.3.1 kernel_Xavier_35.3.1+
    35.4.1 kernel_Xavier_35.4.1+
    NVIDIA Jetson TX2 DevKit + J20 32.7.1 - 32.7.2 kernel_Xavier_32.6.1+
    32.7.3 kernel_Xavier_32.7.3+
    NVIDIA Jetson TX2 NX Auvidea JNX30D 32.7.1 - 32.7.2 kernel_Xavier_32.6.1+
    32.7.3 kernel_Xavier_32.7.3+
    NVIDIA Jetson Orin Nano NVIDIA DevKit 35.3.1 kernel_Xavier_35.3.1+
    35.4.1 kernel_Xavier_35.4.1+
    36.2.0 kernel_Xavier_36.2.0+ *
    Auvidea JNX42 35.3.1 kernel_Xavier_35.3.1+
    35.4.1 kernel_Xavier_35.4.1+
    NVIDIA Jetson Orin NX Auvidea JNX42 35.2.1 kernel_Xavier_35.2.1+
    35.3.1 kernel_Xavier_35.3.1+
    35.4.1 kernel_Xavier_35.4.1+

*) For L4T 36.2.0, the kernel_common_32.3.1+ must be left out.

  1. Copy the camera device tree to the folder listed in the following table

    system on module carrier board copy from src/devicetree/... to folder
    NVIDIA Jetson Nano NVIDIA DevKit NV_DevKit_Nano/tegra210-camera-vc-mipi-cam.dtsi
    => /hardware/nvidia/platform/t210/porg/kernel-dts/porg-platforms
    Auvidea JNX30 Auvidea_JNX30_Nano/tegra210-camera-vc-mipi-cam.dtsi
    => /hardware/nvidia/platform/t210/porg/kernel-dts/porg-platforms
    Auvidea JNX42 Auvidea_JNX42_Nano/tegra210-camera-vc-mipi-cam.dtsi
    => /hardware/nvidia/platform/t210/porg/kernel-dts/porg-platforms
    NVIDIA Jetson Xavier NX NVIDIA DevKit NV_DevKit_XavierNX/tegra194-camera-vc-mipi-cam.dtsi
    => /hardware/nvidia/platform/t19x/jakku/kernel-dts/common
    Auvidea JNX30 Auvidea_JNX30_XavierNX/tegra194-camera-vc-mipi-cam.dtsi
    => /hardware/nvidia/platform/t19x/jakku/kernel-dts/common
    Auvidea JNX42 Auvidea_JNX42_XavierNX/tegra194-camera-vc-mipi-cam.dtsi
    => /hardware/nvidia/platform/t19x/jakku/kernel-dts/common
    NVIDIA Jetson AGX Xavier DevKit + J20 Auvidea_J20_AGXXavier/tegra194-camera-vc-mipi-cam.dtsi
    => /hardware/nvidia/platform/t19x/common/kernel-dts/t19x-common-modules
    NVIDIA Jetson TX2 DevKit + J20 Auvidea_J20_TX2/tegra186-camera-vc-mipi-cam.dtsi
    => /hardware/nvidia/platform/t18x/common/kernel-dts/t18x-common-modules
    NVIDIA Jetson TX2 NX Auvidea JNX30D Auvidea_JNX30D_TX2NX/tegra186-camera-vc-mipi-cam.dtsi
    => /hardware/nvidia/platform/t18x/lanai/kernel-dts/common
    NVIDIA Jetson Orin Nano NVIDIA DevKit NV_DevKit_OrinNano/tegra234-camera-vc-mipi-cam.dtsi
    => /hardware/nvidia/platform/t23x/p3768/kernel-dts/cvb
    (device tree include file used for Jetpack 5)
    NV_DevKit_OrinNano/tegra234-p3767-camera-p3768-vc_mipi-dual.dts
    => /hardware/nvidia/t23x/nv-public/overlay
    (device tree overlay file for Jetpack 6)
    Auvidea JNX42 Auvidea_JNX42_OrinNano/tegra234-camera-vc-mipi-cam.dtsi
    => /hardware/nvidia/platform/t23x/p3768/kernel-dts/cvb
    NVIDIA Jetson Orin NX Auvidea JNX42 Auvidea_JNX42_OrinNX/tegra234-camera-vc-mipi-cam.dtsi
    => /hardware/nvidia/platform/t23x/p3768/kernel-dts/cvb
  2. Copy all driver files from folder src/driver to /kernel/nvidia/drivers/media/i2c

Testing the camera

To test the camera you can use v4l2-test

Annotations

For Jetpack 5 (L4T 35.1.0, 35.2.1, 35.3.1, 35.4.1):

  • When the system has booted successfully, it is necessary to run the script max_speed.sh from the /target folder as superuser. It will read out the maximum frequencies and set them as the current ones. This is a recommendation from nvidia.

    sudo ./max_speed.sh --max

For Jetpack 6 (L4T 36.2.0 DP):

  • with this L4T 36.2 version, the tegra part is completely separated from the kernel

  • VC Mipi driver is now running as a couple of kernel modules

  • modifications to the camera device tree are realised with device tree overlays

  • nvarguscamerasrc+nvvidconv must be installed separately (gst-nvarguscamera_src.tbz2 and gst-nvvidconv_src.tbz2 are residing in the Linux_for_Tegra/source folder and will be copied automatically into the home directory of the target device)

    • the argus_camera sample application (nvidia-l4t-jetson-multimedia-api) can be used alternatively
  • a convenience script setup_nvidia.sh can be called on the running jetson to install some prerequisites (an internet connection must be present)

    • this script will install build essentials, nvidia-l4t-jetson-multimedia-api, lib-cuda-dev and v4l-utils
    • the nvarguscamerasrc and nvvidconv will be generated
    • the NVIDIA samples (including argus_camera) will be built and installed
  • device tree handling

    • the file tegra234-p3767-camera-p3768-vc_mipi-dual.dts can be edited with ./setup.sh --camera
    • the tegra234-p3767-camera-p3768-vc_mipi-dual.dtbo file will be generated with ./build.sh --dt | this step is automatically done by ./build.sh --all
    • the dtbo will be generated into the kernel/dtb directory on the host pc
    • when flashing the first time with sudo ./flash.sh --all, the overlay file will be flashed into uefi
    • to modify the camera-settings via tegra234-p3767-camera-p3768-vc_mipi-dual.dtbo file, the /boot/extlinux/extlinux.conf entry must be modified/duplicated and the
      OVERLAYS /boot/tegra234-p3767-camera-p3768-vc_mipi-dual.dtbo entry must be added. This will override the initial uefi dtbo and modifications can take effect
    • the dtbo file must be copied into the specified location before the restart
LABEL secondary
      MENU LABEL secondary kernel
      LINUX /boot/Image
      FDT /boot/dtb/kernel_tegra234-p3768-0000+p3767-0005-nv.dtb
      INITRD /boot/initrd
      APPEND ...

      OVERLAYS /boot/tegra234-p3767-camera-p3768-vc_mipi-dual.dtbo
  • this version has been tested with two identical IMX565, IMX567/8, IMX296, IMX226, IMX415 sensors
  • there might be problems when using only a single sensor

For NVIDIA Jetson TX2 NX

  • Currently the following camera modules do not work with the TX2 NX
    • IMX178, IMX183
    • IMX250, IMX252, IMX264, IMX265, IMX273, IMX392

Troubleshooting

Regarding to flashing issues, please have a look at Flashing the device

vc_mipi_nvidia's People

Contributors

bazo80 avatar merkeri avatar pmliquify avatar vc-support avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vc_mipi_nvidia's Issues

Flashing the device does not work on some PCs

OS: Ubuntu 20.04

On my PC the device in recovery mode is shown as "Nvidia Corp.", so the flash.sh script does not work.
Adding a -i to the grep in check_recovery_mode() resolves the issue.

check_recovery_mode() {
    if [[ -z $(lsusb | grep -i "NVIDIA Corp.") ]]; then
       echo "Recovery Mode not startet!"
       exit 1
    fi
}

Unable to flash drivers onto dev kit with emmc (not sd card)

I have previously been using these drivers with Jetson nano dev kits, which are the ones produced by Nvidia themselves. Now we are looking at using the Xavier NX but Nvidia no longer produces these, it is down to third parties to build and sell their own based on the Xavier NX module. We have acquired one such device but it uses emmc rather than an SD card. This appears to cause an error when flashing, when we select the dev kit option through the quickstart.sh script. So we are currently unable to flash this dev kit with the drivers.

Gstreamer and OV9281 error

Hi,

I have two OV9281 EK0033311 V1.0 from you which I wanted to connect to my Jetson Nano B01 dev board. However when I try to use them with gstreamer it fails. I've tried L4T versions 32.6.1 and 32.7.2.

My device tree file is:
/*
 * Copyright (c) 2020-2021, Vision Components GmbH.  All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include <dt-bindings/media/camera.h>
#include <dt-bindings/platform/t210/t210.h>

// ------------------------------------------------------------------------------------------------
//  Driver Configuration for NVIDIA Jetson Nano 4GB/2GB on NVIDIA Jetson Nano Developer Kit
// ------------------------------------------------------------------------------------------------
#define VC_MIPI_CAM_0       1   // 1: Enabled, 0: Disabled  (serial_a => CSI Port 0 => VI Stream 0)
#define VC_MIPI_CAM_1       1   // 1: Enabled, 0: Disabled  (serial_e => CSI Port 4 => VI Stream 4)
// ------------------------------------------------------------------------------------------------
//  Supported number of lanes
// -----+------------------------------------------------------------------------------------------
//  1   | OV7251, IMX296, IMX297
//  2   | OV9281, IMX264, IMX265
//  2,4 | IMX178, IMX183, IMX226, IMX250, IMX252, IMX273, IMX290, IMX327, IMX335, IMX392, 
//      | IMX412, IMX415, IMX568
// -----+------------------------------------------------------------------------------------------
#define VC_MIPI_LANES       2   // 1, 2 Lanes
// ------------------------------------------------------------------------------------------------
//   Sensor Manufacturer
// -----+------------------------------------------------------------------------------------------
//   1  | Sony Sensor (IMX)
//   2  | Omni Vision Sensor (OV)
// -----+------------------------------------------------------------------------------------------
#define VC_MIPI_MANUFACTURER 2
// ------------------------------------------------------------------------------------------------
//  GStreamer Support
// ------------------------------------------------------------------------------------------------
//  If you want to use GStreamer with nvarguscamerasrc you have to adjust this settings in the 
//  device tree below. The sections which have to be modified are marked by a comment. 
//  To find the correct parameter values please follow the instruction in the main README.md of 
//  this repository https://github.com/VC-MIPI-modules/vc_mipi_nvidia#gstreamer-support
// ------------------------------------------------------------------------------------------------

#define VC_MIPI_METADATA_H  "0"

#if VC_MIPI_LANES == 1
    #define BUS_WIDTH 1
    #define NUM_LANES "1" 
    #define NUM_CSI_LANES 2
#endif
#if VC_MIPI_LANES == 2
    #define BUS_WIDTH 2
    #define NUM_LANES "2" 
    #define NUM_CSI_LANES 4
#endif

#if VC_MIPI_CAM_0 == 1 && VC_MIPI_CAM_1 == 1
    #define VC_MIPI_CAMERAS 2
#else
    #define VC_MIPI_CAMERAS 1
#endif

/ {
    host1x {
        vc_vi_base: vi {
            num-channels = <VC_MIPI_CAMERAS>;
            ports {
                #address-cells = <1>;
                #size-cells = <0>;
#if VC_MIPI_CAM_0 == 1
                vc_vi_port0: port@0 {
                    reg = <0>;
                    vc_vi_in0: endpoint {
                        port-index = <0>;
                        bus-width = <BUS_WIDTH>;
                        remote-endpoint = <&vc_csi_out0>;
                    };
                };
#endif
#if VC_MIPI_CAM_1 == 1
                vc_vi_port1: port@1 {
                    reg = <1>;
                    vc_vi_in1: endpoint {
                        port-index = <4>;
                        bus-width = <BUS_WIDTH>;
                        remote-endpoint = <&vc_csi_out1>;
                    };
                };
#endif
            };
        };

        vc_csi_base: nvcsi {
            num-channels = <VC_MIPI_CAMERAS>;
            #address-cells = <1>;
            #size-cells = <0>;
#if VC_MIPI_CAM_0 == 1
            vc_csi_chan0: channel@0 {
                reg = <0>;
                ports {
                    #address-cells = <1>;
                    #size-cells = <0>;
                    vc_csi_chan0_port0: port@0 {
                        reg = <0>;
                        vc_csi_in0: endpoint@0 {
                            port-index = <0>;
                            bus-width = <BUS_WIDTH>;
                            remote-endpoint = <&vc_mipi_out0>;
                        };
                    };
                    vc_csi_chan0_port1: port@1 {
                        reg = <1>;
                        vc_csi_out0: endpoint@1 {
                            remote-endpoint = <&vc_vi_in0>;
                        };
                    };
                };
            };
#endif
#if VC_MIPI_CAM_1 == 1
            vc_csi_chan1: channel@1 {
                reg = <1>;
                ports {
                    #address-cells = <1>;
                    #size-cells = <0>;
                    vc_csi_chan1_port0: port@0 {
                        reg = <0>;
                        vc_csi_in1: endpoint@2 {
                            port-index = <4>;
                            bus-width = <BUS_WIDTH>;
                            remote-endpoint = <&vc_mipi_out1>;
                        };
                    };
                    vc_csi_chan1_port1: port@1 {
                        reg = <1>;
                        vc_csi_out1: endpoint@3 {
                            remote-endpoint = <&vc_vi_in1>;
                        };
                    };
                };
            };
#endif
        };
    };

    cam_i2cmux {
#if VC_MIPI_CAM_0 == 1
        i2c@0 {
#if VC_MIPI_MANUFACTURER == 1
            vc_mipi_cam0: vc_mipi@1a {
                reg                     = <0x1a>;
#else
            vc_mipi_cam0: vc_mipi@60 {
                reg                     = <0x60>;
#endif
                compatible              = "nvidia,vc_mipi";
                devnode                 = "video0";
                use_sensor_mode_id      = "false";
                sensor_model            = "vc_mipi";

                num_lanes               = NUM_LANES;
                trigger_mode            = "0";
                io_mode                 = "0";

                // ----------------------------------------------------
                // If you want to use GStreamer with nvarguscamerasrc
                // you have to adjust this settings
                physical_w              = "3.840";
                physical_h              = "2.400";
                // ----------------------------------------------------

                // This node is needed by the Tegra framework.
                // You don't have to change any settings if just want to use the V4L API.
                mode0 {
                    num_lanes                = NUM_LANES;
                    tegra_sinterface         = "serial_a";
                    embedded_metadata_height = VC_MIPI_METADATA_H;
                    readout_orientation      = "0";

                    // ----------------------------------------------------
                    // If you want to use GStreamer with nvarguscamerasrc
                    // you have to adjust this settings. 
                    active_l                 = "0";
                    active_t                 = "0";
                    active_w                 = "1280";
                    active_h                 = "800";
                    pixel_t                  = "bayer_rggb";

                    min_gain_val             = "0";         // mdB
                    max_gain_val             = "12000";     // mdB
                    step_gain_val            = "50";       // mdB
                    default_gain             = "0";         // mdB

                    min_exp_time             = "1";         // us
                    max_exp_time             = "1000000";   // us
                    step_exp_time            = "1";         // us
                    default_exp_time         = "10000";     // us

                    min_framerate            = "0";         // mHz
                    max_framerate            = "120600";     // mHz
                    step_framerate           = "100";       // mHz
                    default_framerate        = "120600";     // mHz
                    // ----------------------------------------------------

                    gain_factor              = "1000";
                    exposure_factor          = "1000000";
                    framerate_factor         = "1000";
                    inherent_gain            = "1";
                    min_hdr_ratio            = "1";
                    max_hdr_ratio            = "1";

                    line_length              = "0";
                    phy_mode                 = "DPHY";
                    discontinuous_clk        = "no";
                    mclk_khz                 = "24000";
                    pix_clk_hz               = "800000000";
                    mclk_multiplier          = "9.33";
                    cil_settletime           = "0";
                    dpcm_enable              = "false";
                };

                ports {
                    #address-cells = <1>;
                    #size-cells = <0>;
                    port@0 {
                        reg = <0>;
                        vc_mipi_out0: endpoint {
                            port-index = <0>;
                            bus-width = <BUS_WIDTH>;
                            remote-endpoint = <&vc_csi_in0>;
                        };
                    };
                };
            };
        };
#endif
#if VC_MIPI_CAM_1 == 1
        i2c@1 {
#if VC_MIPI_MANUFACTURER == 1
            vc_mipi_cam1: vc_mipi@1a {
                reg                     = <0x1a>;
#else
            vc_mipi_cam1: vc_mipi@60 {
                reg                     = <0x60>;
#endif
                compatible              = "nvidia,vc_mipi";
                devnode                 = "video1";
                use_sensor_mode_id      = "false";
                sensor_model            = "vc_mipi";

                num_lanes               = NUM_LANES;
                trigger_mode            = "0";
                io_mode                 = "0";

                // ----------------------------------------------------
                // If you want to use GStreamer with nvarguscamerasrc
                // you have to adjust this settings
                physical_w              = "3.840";
                physical_h              = "2.400";
                // ----------------------------------------------------

                // This node is needed by the Tegra framework.
                // You don't have to change any settings if just want to use the V4L API.
                mode0 {
                    num_lanes                = NUM_LANES;
                    tegra_sinterface         = "serial_e";
                    embedded_metadata_height = VC_MIPI_METADATA_H;
                    readout_orientation      = "0";

                    // ----------------------------------------------------
                    // If you want to use GStreamer with nvarguscamerasrc
                    // you have to adjust this settings. 
                    active_l                 = "0";
                    active_t                 = "0";
                    active_w                 = "1280";
                    active_h                 = "800";
                    pixel_t                  = "bayer_rggb";

                    min_gain_val             = "0";         // mdB
                    max_gain_val             = "12000";     // mdB
                    step_gain_val            = "50";       // mdB
                    default_gain             = "0";         // mdB

                    min_exp_time             = "1";         // us
                    max_exp_time             = "1000000";   // us
                    step_exp_time            = "1";         // us
                    default_exp_time         = "10000";     // us

                    min_framerate            = "0";         // mHz
                    max_framerate            = "120600";     // mHz
                    step_framerate           = "100";       // mHz
                    default_framerate        = "120600";     // mHz
                    // ----------------------------------------------------

                    gain_factor              = "1000";
                    exposure_factor          = "1000000";
                    framerate_factor         = "1000";
                    inherent_gain            = "1";
                    min_hdr_ratio            = "1";
                    max_hdr_ratio            = "1";

                    line_length              = "0";
                    phy_mode                 = "DPHY";
                    discontinuous_clk        = "no";
                    mclk_khz                 = "24000";
                    pix_clk_hz               = "800000000";
                    mclk_multiplier          = "9.33";
                    cil_settletime           = "0";
                    dpcm_enable              = "false";
                };

                ports {
                    #address-cells = <1>;
                    #size-cells = <0>;
                    port@0 {
                        reg = <0>;
                        vc_mipi_out1: endpoint {
                            port-index = <4>;
                            bus-width = <BUS_WIDTH>;
                            remote-endpoint = <&vc_csi_in1>;
                        };
                    };
                };
            };
        };
#endif
    };

    lens@vc_mipi {
        min_focus_distance  = "0.0";
        hyper_focal         = "0.0";
        focal_length        = "6.0";
        f_number            = "2.0";
        aperture            = "0.0";
    };
};

/ {
    tcp: tegra-camera-platform {
        compatible = "nvidia, tegra-camera-platform";

        num_csi_lanes = <NUM_CSI_LANES>;
        max_lane_speed = <1500000>;
        min_bits_per_pixel = <10>;
        vi_peak_byte_per_pixel = <2>;
        vi_bw_margin_pct = <25>;
        max_pixel_rate = <240000>;
        isp_peak_byte_per_pixel = <5>;
        isp_bw_margin_pct = <25>;

        modules {
#if VC_MIPI_CAM_0 == 1
            cam_module0: module0 {
                status = "okay";
                badge = "porg_front_vc_mipi";
                position = "front";
                orientation = "1";
                cam_module0_drivernode0: drivernode0 {
                    status = "okay";
                    pcl_id = "v4l2_sensor";
#if VC_MIPI_MANUFACTURER == 1
                    devname = "vc_mipi 7-001a";
                    proc-device-tree = "/proc/device-tree/cam_i2cmux/i2c@0/vc_mipi@1a";
#else
                    devname = "vc_mipi 7-0060";
                    proc-device-tree = "/proc/device-tree/cam_i2cmux/i2c@0/vc_mipi@60";
#endif
                };
                cam_module0_drivernode1: drivernode1 {
                    status = "okay";
                    pcl_id = "v4l2_lens";
                    proc-device-tree = "/proc/device-tree/lens@vc_mipi/";
                };
            };
#endif
#if VC_MIPI_CAM_1 == 1
            cam_module1: module1 {
                status = "okay";
                badge = "porg_rear_vc_mipi";
                position = "rear";
                orientation = "1";
                cam_module1_drivernode0: drivernode0 {
                    status = "okay";
                    pcl_id = "v4l2_sensor";
#if VC_MIPI_MANUFACTURER == 1
                    devname = "vc_mipi 8-001a";
                    proc-device-tree = "/proc/device-tree/cam_i2cmux/i2c@1/vc_mipi@1a";
#else
                    devname = "vc_mipi 8-0060";
                    proc-device-tree = "/proc/device-tree/cam_i2cmux/i2c@1/vc_mipi@60";
#endif
                };
                cam_module1_drivernode1: drivernode1 {
                    status = "okay";
                    pcl_id = "v4l2_lens";
                    proc-device-tree = "/proc/device-tree/lens@vc_mipi/";
                };
            };
#endif
        };
    };
};

#define CAM1_PWDN     TEGRA_GPIO(S, 7)
#define CAM2_PWDN     TEGRA_GPIO(T, 0)
#define CAM_I2C_MUX   TEGRA_GPIO(I, 0)

/ {
    cam_i2cmux {
        status = "okay";
        compatible = "i2c-mux-gpio";
        #address-cells = <1>;
        #size-cells = <0>;
        mux-gpios = <&gpio CAM_I2C_MUX GPIO_ACTIVE_HIGH>;
        i2c-parent = <&i2c7>;
#if VC_MIPI_CAM_0 == 1
        i2c@0 {
            status = "okay";
            reg = <0>;
            #address-cells = <1>;
            #size-cells = <0>;
#if VC_MIPI_MANUFACTURER == 1
            vc_mipi@1a {
#else
            vc_mipi@60 {
#endif
                status = "okay";
                reset-gpios = <&gpio CAM1_PWDN GPIO_ACTIVE_HIGH>;
            };
        };
#endif
#if VC_MIPI_CAM_1 == 1
        i2c@1 {
            status = "okay";
            reg = <1>;
            #address-cells = <1>;
            #size-cells = <0>;
#if VC_MIPI_MANUFACTURER == 1
            vc_mipi@1a {
#else
            vc_mipi@60 {
#endif
                status = "okay";
                reset-gpios = <&gpio CAM2_PWDN GPIO_ACTIVE_HIGH>;
            };
        };
#endif
    };

    gpio@6000d000 {
        camera-control-output-low {
            gpio-hog;
            output-low;
            gpios = <CAM1_PWDN 0 CAM2_PWDN 0>;
            label = "cam1-pwdn", "cam2-pwdn";
        };
    };
};

After setting

v4l2-ctl --set-fmt-video=pixelformat=RG10,width=1280,height=800

guvcview gives:

Show log
Opening in O_NONBLOCKING MODE 
libv4l2: error getting capabilities: Inappropriate ioctl for device
V4L2_CORE: ERROR opening V4L2 interface for /dev/v4l-subdev0
Opening in O_NONBLOCKING MODE 
libv4l2: error getting capabilities: Inappropriate ioctl for device
V4L2_CORE: ERROR opening V4L2 interface for /dev/v4l-subdev1
Opening in O_NONBLOCKING MODE 
libv4l2: error getting capabilities: Inappropriate ioctl for device
V4L2_CORE: ERROR opening V4L2 interface for /dev/v4l-subdev2
Opening in O_NONBLOCKING MODE 
libv4l2: error getting capabilities: Inappropriate ioctl for device
V4L2_CORE: ERROR opening V4L2 interface for /dev/v4l-subdev3
Opening in BLOCKING MODE
Available Sensor modes :
Resolution: 1280 x 800 ; Framerate = 120.599999; Analog Gain Range Min 0.000000, Max 12.000000, Exposure Range Min 1000, Max 1000000000

V4L2_CORE: Unable to find parent usb device.Opening in BLOCKING MODE
Available Sensor modes :
Resolution: 1280 x 800 ; Framerate = 120.599999; Analog Gain Range Min 0.000000, Max 12.000000, Exposure Range Min 1000, Max 1000000000

V4L2_CORE: Unable to find parent usb device.GUVCVIEW: version 2.0.5
GUVCVIEW: couldn't open /home/<user>/.config/guvcview2/video0 for read: No such file or directory
Opening in BLOCKING MODE
Available Sensor modes :
Resolution: 1280 x 800 ; Framerate = 120,599999; Analog Gain Range Min 0,000000, Max 12,000000, Exposure Range Min 1000, Max 1000000000

DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
V4L2_CORE: Error opening device /dev/video0: video capture not supported.
GUVCVIEW (1): Guvcview error
	 no video device found

(guvcview:22823): Gtk-WARNING **: 21:17:12.386: Theme parsing error: <data>:1:17: not a number

(guvcview:22823): Gtk-WARNING **: 21:17:12.387: Theme parsing error: <data>:1:31: Using Pango syntax for the font: style property is deprecated; please use CSS syntax

(guvcview:22823): Gtk-WARNING **: 21:17:12.387: Theme parsing error: <data>:1:17: not a number

(guvcview:22823): Gtk-WARNING **: 21:17:12.387: Theme parsing error: <data>:1:32: Using Pango syntax for the font: style property is deprecated; please use CSS syntax

(guvcview:22823): Gtk-WARNING **: 21:17:12.387: Theme parsing error: <data>:1:17: not a number

(guvcview:22823): Gtk-WARNING **: 21:17:12.387: Theme parsing error: <data>:1:26: Using Pango syntax for the font: style property is deprecated; please use CSS syntax
Gtk-Message: 21:17:12.479: GtkDialog mapped without a transient parent. This is discouraged.
Opening in O_NONBLOCKING MODE 
libv4l2: error getting capabilities: Inappropriate ioctl for device
V4L2_CORE: ERROR opening V4L2 interface for /dev/v4l-subdev0
Opening in O_NONBLOCKING MODE 
libv4l2: error getting capabilities: Inappropriate ioctl for device
V4L2_CORE: ERROR opening V4L2 interface for /dev/v4l-subdev1
Opening in O_NONBLOCKING MODE 
libv4l2: error getting capabilities: Inappropriate ioctl for device
V4L2_CORE: ERROR opening V4L2 interface for /dev/v4l-subdev2
Opening in O_NONBLOCKING MODE 
libv4l2: error getting capabilities: Inappropriate ioctl for device
V4L2_CORE: ERROR opening V4L2 interface for /dev/v4l-subdev3
Opening in BLOCKING MODE
Available Sensor modes :
Resolution: 1280 x 800 ; Framerate = 120.599999; Analog Gain Range Min 0.000000, Max 12.000000, Exposure Range Min 1000, Max 1000000000

V4L2_CORE: Unable to find parent usb device.Opening in BLOCKING MODE
Available Sensor modes :
Resolution: 1280 x 800 ; Framerate = 120.599999; Analog Gain Range Min 0.000000, Max 12.000000, Exposure Range Min 1000, Max 1000000000

V4L2_CORE: Unable to find parent usb device.GUVCVIEW: version 2.0.5
GUVCVIEW: couldn't open /home/<user>/.config/guvcview2/video1 for read: No such file or directory
Opening in BLOCKING MODE
Available Sensor modes :
Resolution: 1280 x 800 ; Framerate = 120,599999; Analog Gain Range Min 0,000000, Max 12,000000, Exposure Range Min 1000, Max 1000000000

DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
V4L2_CORE: Error opening device /dev/video1: video capture not supported.
GUVCVIEW (1): Guvcview error
	 no video device found

(guvcview:23012): Gtk-WARNING **: 21:17:18.014: Theme parsing error: <data>:1:17: not a number

(guvcview:23012): Gtk-WARNING **: 21:17:18.014: Theme parsing error: <data>:1:31: Using Pango syntax for the font: style property is deprecated; please use CSS syntax

(guvcview:23012): Gtk-WARNING **: 21:17:18.014: Theme parsing error: <data>:1:17: not a number

(guvcview:23012): Gtk-WARNING **: 21:17:18.015: Theme parsing error: <data>:1:32: Using Pango syntax for the font: style property is deprecated; please use CSS syntax

(guvcview:23012): Gtk-WARNING **: 21:17:18.015: Theme parsing error: <data>:1:17: not a number

(guvcview:23012): Gtk-WARNING **: 21:17:18.015: Theme parsing error: <data>:1:26: Using Pango syntax for the font: style property is deprecated; please use CSS syntax
Gtk-Message: 21:17:18.061: GtkDialog mapped without a transient parent. This is discouraged.
Opening in O_NONBLOCKING MODE 
libv4l2: error getting capabilities: Inappropriate ioctl for device
V4L2_CORE: ERROR opening V4L2 interface for /dev/v4l-subdev0
Opening in O_NONBLOCKING MODE 
libv4l2: error getting capabilities: Inappropriate ioctl for device
V4L2_CORE: ERROR opening V4L2 interface for /dev/v4l-subdev1
Opening in O_NONBLOCKING MODE 
libv4l2: error getting capabilities: Inappropriate ioctl for device
V4L2_CORE: ERROR opening V4L2 interface for /dev/v4l-subdev2
Opening in O_NONBLOCKING MODE 
libv4l2: error getting capabilities: Inappropriate ioctl for device
V4L2_CORE: ERROR opening V4L2 interface for /dev/v4l-subdev3
Opening in BLOCKING MODE
Available Sensor modes :
Resolution: 1280 x 800 ; Framerate = 120.599999; Analog Gain Range Min 0.000000, Max 12.000000, Exposure Range Min 1000, Max 1000000000

V4L2_CORE: Unable to find parent usb device.Opening in BLOCKING MODE
Available Sensor modes :
Resolution: 1280 x 800 ; Framerate = 120.599999; Analog Gain Range Min 0.000000, Max 12.000000, Exposure Range Min 1000, Max 1000000000

V4L2_CORE: Unable to find parent usb device.GUVCVIEW: version 2.0.5
GUVCVIEW: couldn't open /home/<user>/.config/guvcview2/video0 for read: No such file or directory
Opening in BLOCKING MODE
Available Sensor modes :
Resolution: 1280 x 800 ; Framerate = 120,599999; Analog Gain Range Min 0,000000, Max 12,000000, Exposure Range Min 1000, Max 1000000000

DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
DEFAULT no IOCTL called
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: Invalid argument
V4L2_CORE: Error opening device /dev/video0: video capture not supported.
GUVCVIEW (1): Guvcview error
	 no video device found

Running nvgstcapture-1.0 gives:

Show log
$ nvgstcapture-1.0 --camsrc=0 --cap-dev-node=0
Encoder null, cannot set bitrate!
Encoder Profile = High
Runtime USB Camera Commands:

  Help : 'h'
  Quit : 'q'
  Set Capture Mode:
      mo:<val>
          (1): image
          (2): video
  Get Capture Mode:
      gmo
  Capture: enter 'j' OR
           followed by a timer (e.g., jx5000, capture after 5 seconds) OR
           followed by multishot count (e.g., j:6, capture 6 images)
           timer/multihot values are optional, capture defaults to single shot with timer=0s
  Start Recording : enter '1'
  Stop Recording  : enter '0'
  Set Preview Resolution:
      pcr:<val> e.g., pcr:2
          (0) : 176x144
          (1) : 320x240
          (2) : 640x480
          (3) : 1280x720
          (4) : 1920x1080
  NOTE: Preview/Encode resolution will be same as Capture resolution for USB-Camera
  Get Preview Resolution:
      gpcr
  Get Image Capture Resolution:
      gicr
  Get Video Capture Resolution:
      gvcr
  Set Capture Device Node:
      cdn:<val> e.g., cdn:0
          (0): /dev/video0
          (1): /dev/video1
          (2): /dev/video2
  Get Capture Device Node:
      gcdn


Runtime encoder configuration options:

  Set Encoding Bit-rate(in bytes):
      br:<val> e.g., br:4000000
  Get Encoding Bit-rate(in bytes):
      gbr
  Set Encoding Profile(only for H.264):
      ep:<val> e.g., ep:1
          (0): Baseline
          (1): Main
          (2): High
  Get Encoding Profile(only for H.264):
      gep
  Force IDR Frame on video Encoder(only for H.264):
      Enter 'f' 


** Message: 21:27:49.643: <main:4670> iterating capture loop ....
ERROR on bus: by /GstPipeline:capture_native_pipeline/GstBin:cap_bin/GstV4l2Src:v4l2src0: Internal data stream error.
debug info:
gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:capture_native_pipeline/GstBin:cap_bin/GstV4l2Src:v4l2src0:
streaming stopped, reason not-negotiated (-4)
** Message: 21:27:49.703: <main:4680> Capture completed
** Message: 21:27:49.703: <main:4729> Camera application will now exit

Have I forgotten some setting?

XavierNX does not detect the camera

Use NV_DevKit_XavierNX. DTS from Auvidea_J20_AGXXavier is erroneously selected in scripts. But even if you turn on the right DTS, it still doesn't work.

vc@XavierNX:~$ sudo dmesg | grep -i i2c
[sudo] password for vc:
[ 2.911452] i2c /dev entries driver
[ 2.914621] tegra-i2c 3160000.i2c: Adding to iommu group 2
[ 2.920412] tegra-i2c c240000.i2c: Adding to iommu group 2
[ 2.926083] tegra-i2c 3180000.i2c: Adding to iommu group 2
[ 2.931133] tegra-i2c 3190000.i2c: Adding to iommu group 2
[ 2.936469] tegra-i2c 31b0000.i2c: Adding to iommu group 2
[ 2.942184] tegra-i2c 31c0000.i2c: Adding to iommu group 2
[ 2.947341] tegra-i2c c250000.i2c: Adding to iommu group 2
[ 5.508356] tegra-i2c 31e0000.i2c: Adding to iommu group 2
[ 7.914239] vc_mipi 9-001a: vc_mod_setup(): Unable to get module I2C client for address 0x10
[ 7.914714] i2c i2c-2: Added multiplexed i2c bus 9
[ 10.314191] vc_mipi 10-001a: vc_mod_setup(): Unable to get module I2C client for address 0x10
[ 10.314692] i2c i2c-2: Added multiplexed i2c bus 10
[ 10.314805] i2c-mux-gpio cam_i2cmux: 2 port mux on 3180000.i2c adapter

vc@XavierNX:~$ sudo dmesg | grep -i mipi
[ 0.006517] DTS File Name: /home/master/src/vc_mipi_nvidia/build/Xavier_35.3.1/Linux_for_Tegra/source/public/kernel/kernel-5.10/arch/arm64/boot/dts/../../../../../../hardware/nvidia/platform/t19x/jakku/kernel-dts/tegra194-p3668-0001-p3509-0000.dts
[ 5.511250] vc_mipi 9-001a: vc_probe(): Probing UNIVERSAL VC MIPI Driver (v0.14.1)
[ 7.914239] vc_mipi 9-001a: vc_mod_setup(): Unable to get module I2C client for address 0x10
[ 7.914447] vc_mipi 9-001a: vc_probe(): Error in vc_core_init!
[ 7.915673] vc_mipi 10-001a: vc_probe(): Probing UNIVERSAL VC MIPI Driver (v0.14.1)
[ 10.314191] vc_mipi 10-001a: vc_mod_setup(): Unable to get module I2C client for address 0x10
[ 10.314427] vc_mipi 10-001a: vc_probe(): Error in vc_core_init!

Camera cannot start

Jetson Orin Nano with VC IMX568 cam

command output

  • command: v4l2-ctl -d /dev/video0 --stream-mmap --stream-skip=1 --stream-count=1 --stream-to=file.raw
VIDIOC_REQBUFS returned -1 (Device or resource busy)

gstream

-gstream command

gst-launch-1.0 nvarguscamerasrc sensor-id=0
  • output
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
GST_ARGUS: Creating output stream
CONSUMER: Waiting until producer is connected...
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 2464 x 2048 FR = 78.800002 fps Duration = 12690355 ; Analog Gain range min 0.000000, max 48.000000; Exposure Range min 1000, max 1000000000;

GST_ARGUS: Running with following settings:
   Camera index = 0 
   Camera mode  = 0 
   Output Stream W = 2464 H = 2048 
   seconds to Run    = 0 
   Frame Rate = 78.800002 
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
CONSUMER: Producer has connected; continuing.
nvbuf_utils: dmabuf_fd -1 mapped entry NOT found
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, threadExecute:694 NvBufSurfaceFromFd Failed.
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, threadFunction:247 (propagating)
ERROR: from element /GstPipeline:pipeline0/GstNvArgusCameraSrc:nvarguscamerasrc0: CANCELLED
Additional debug info:
Argus Error Status
Execution ended after 0:00:00.420879376
Setting pipeline to NULL ...
GST_ARGUS: Cleaning up

dmesg output

[  189.067207] vc_mipi 9-001a: vc_core_set_framerate(): Set framerate 41554 mHz
[  189.074502] vc_mipi 9-001a: vc_sen_set_exposure(): Set sensor exposure: 10000 us
[  189.085201] vc_mipi 9-001a: vc_core_set_framerate(): Set framerate 30000 mHz
[  189.092527] vc_mipi 9-001a: vc_sen_set_exposure(): Set sensor exposure: 10000 us
[  189.101261] vc_mipi 9-001a: vc_sen_set_gain(): Set sensor gain: 10
[  189.107939] vc_mipi 9-001a: vc_sen_set_exposure(): Set sensor exposure: 33330 us
[  189.120776] bwmgr API not supported
[  189.121080] vc_mipi 9-001a: vc_core_set_format(): Set format 0x300f (RG10)
[  189.131793] vc_mipi 9-001a: vc_core_try_format(): Try format 0x300f (RG10, format: 0x2b)
[  189.131798] vc_mipi 9-001a: vc_update_image_size_from_mode(): Update image size from mode0 (l: 0, t: 0, w: 2464, h: 2048)
[  189.143094] vc_mipi 9-001a: vc_sen_set_gain(): Set sensor gain: 10
[  189.149729] vc_mipi 9-001a: vc_sen_set_exposure(): Set sensor exposure: 33330 us
[  189.158418] vc_mipi 9-001a: vc_core_set_framerate(): Set framerate 30000 mHz
[  189.165671] vc_mipi 9-001a: vc_sen_set_exposure(): Set sensor exposure: 33330 us
[  189.174355] i2c 9-0010: vc_mod_set_mode(): Set module mode: 10 (lanes: 4, format: RG10, type: EXT.TRG)
[  189.183944] i2c 9-0010: vc_mod_set_power(): Set module power: down
[  189.184213] i2c 9-0010: vc_mod_set_power(): Set module power: up
[  189.585492] vc_mipi 9-001a: vc_sen_set_roi(): Set sensor roi: (left: 0, top: 0, width: 2464, height: 2048)
[  189.596860] vc_mipi 9-001a: vc_sen_set_roi(): i2c_write_reg:  14658
[  189.603358] vc_mipi 9-001a: vc_sen_set_exposure(): Set sensor exposure: 33330 us
[  189.612125] vc_mipi 9-001a: vc_sen_set_gain(): Set sensor gain: 10
[  189.618818] vc_mipi 9-001a: vc_sen_set_blacklevel(): Set sensor black level: 60
[  189.626657] vc_mipi 9-001a: vc_sen_start_stream(): Start streaming
[  189.834097] bwmgr API not supported
[ 1034.174784] vc_mipi 9-001a: vc_sen_stop_stream(): Stop streaming
[ 1034.239951] bwmgr API not supported
[ 1036.795497] vc_mipi 9-001a: vc_core_set_framerate(): Set framerate 67060 mHz
[ 1036.806408] vc_mipi 9-001a: vc_sen_set_exposure(): Set sensor exposure: 33330 us
[ 1036.815174] vc_mipi 9-001a: vc_sen_set_gain(): Set sensor gain: 0
[ 1036.823687] vc_mipi 9-001a: vc_core_set_framerate(): Set framerate 30000 mHz
[ 1036.830982] vc_mipi 9-001a: vc_sen_set_exposure(): Set sensor exposure: 33330 us
[ 1036.840442] vc_mipi 9-001a: vc_sen_set_gain(): Set sensor gain: 10
[ 1036.850549] bwmgr API not supported
[ 1036.850859] vc_mipi 9-001a: vc_core_set_format(): Set format 0x300f (RG10)
[ 1036.861586] vc_mipi 9-001a: vc_core_try_format(): Try format 0x300f (RG10, format: 0x2b)
[ 1036.861591] vc_mipi 9-001a: vc_update_image_size_from_mode(): Update image size from mode0 (l: 0, t: 0, w: 2464, h: 2048)
[ 1036.872915] vc_mipi 9-001a: vc_sen_set_gain(): Set sensor gain: 10
[ 1036.879591] vc_mipi 9-001a: vc_sen_set_exposure(): Set sensor exposure: 33330 us
[ 1036.888319] vc_mipi 9-001a: vc_core_set_framerate(): Set framerate 30000 mHz
[ 1036.895696] vc_mipi 9-001a: vc_sen_set_exposure(): Set sensor exposure: 33330 us
[ 1036.904479] vc_mipi 9-001a: vc_sen_set_roi(): Set sensor roi: (left: 0, top: 0, width: 2464, height: 2048)
[ 1036.915849] vc_mipi 9-001a: vc_sen_set_roi(): i2c_write_reg:  14658
[ 1036.922304] vc_mipi 9-001a: vc_sen_set_exposure(): Set sensor exposure: 33330 us
[ 1036.931055] vc_mipi 9-001a: vc_sen_start_stream(): Start streaming
[ 1037.138411] bwmgr API not supported
[ 1077.915361] vc_mipi 9-001a: vc_sen_stop_stream(): Stop streaming
[ 1077.980722] bwmgr API not supported
[ 1088.440177] vc_mipi 9-001a: vc_core_set_framerate(): Set framerate 67060 mHz
[ 1088.451107] vc_mipi 9-001a: vc_sen_set_exposure(): Set sensor exposure: 33330 us
[ 1088.459915] vc_mipi 9-001a: vc_sen_set_gain(): Set sensor gain: 0
[ 1088.467680] vc_mipi 9-001a: vc_core_set_framerate(): Set framerate 30000 mHz
[ 1088.474980] vc_mipi 9-001a: vc_sen_set_exposure(): Set sensor exposure: 33330 us
[ 1088.483714] vc_mipi 9-001a: vc_sen_set_gain(): Set sensor gain: 10
[ 1088.493863] bwmgr API not supported
[ 1088.494171] vc_mipi 9-001a: vc_core_set_format(): Set format 0x300f (RG10)
[ 1088.504873] vc_mipi 9-001a: vc_core_try_format(): Try format 0x300f (RG10, format: 0x2b)
[ 1088.504878] vc_mipi 9-001a: vc_update_image_size_from_mode(): Update image size from mode0 (l: 0, t: 0, w: 2464, h: 2048)
[ 1088.516180] vc_mipi 9-001a: vc_sen_set_gain(): Set sensor gain: 10
[ 1088.522818] vc_mipi 9-001a: vc_sen_set_exposure(): Set sensor exposure: 33330 us
[ 1088.531503] vc_mipi 9-001a: vc_core_set_framerate(): Set framerate 30000 mHz
[ 1088.538774] vc_mipi 9-001a: vc_sen_set_exposure(): Set sensor exposure: 33330 us
[ 1088.547471] vc_mipi 9-001a: vc_sen_set_roi(): Set sensor roi: (left: 0, top: 0, width: 2464, height: 2048)
[ 1088.558607] vc_mipi 9-001a: vc_sen_set_roi(): i2c_write_reg:  14658
[ 1088.565067] vc_mipi 9-001a: vc_sen_set_exposure(): Set sensor exposure: 33330 us
[ 1088.573748] vc_mipi 9-001a: vc_sen_start_stream(): Start streaming
[ 1088.781042] bwmgr API not supported
[ 1101.227032] vc_mipi 9-001a: vc_sen_stop_stream(): Stop streaming
[ 1101.292261] bwmgr API not supported
[ 1102.786192] vc_mipi 9-001a: vc_core_set_framerate(): Set framerate 67060 mHz
[ 1102.797078] vc_mipi 9-001a: vc_sen_set_exposure(): Set sensor exposure: 33330 us
[ 1102.805919] vc_mipi 9-001a: vc_sen_set_gain(): Set sensor gain: 0
[ 1102.814286] vc_mipi 9-001a: vc_core_set_framerate(): Set framerate 30000 mHz
[ 1102.821649] vc_mipi 9-001a: vc_sen_set_exposure(): Set sensor exposure: 33330 us
[ 1102.830543] vc_mipi 9-001a: vc_sen_set_gain(): Set sensor gain: 10
[ 1102.840631] bwmgr API not supported
[ 1102.840940] vc_mipi 9-001a: vc_core_set_format(): Set format 0x300f (RG10)
[ 1102.851634] vc_mipi 9-001a: vc_core_try_format(): Try format 0x300f (RG10, format: 0x2b)
[ 1102.851639] vc_mipi 9-001a: vc_update_image_size_from_mode(): Update image size from mode0 (l: 0, t: 0, w: 2464, h: 2048)
[ 1102.862928] vc_mipi 9-001a: vc_sen_set_gain(): Set sensor gain: 10
[ 1102.869546] vc_mipi 9-001a: vc_sen_set_exposure(): Set sensor exposure: 33330 us
[ 1102.878193] vc_mipi 9-001a: vc_core_set_framerate(): Set framerate 30000 mHz
[ 1102.885449] vc_mipi 9-001a: vc_sen_set_exposure(): Set sensor exposure: 33330 us
[ 1102.894117] vc_mipi 9-001a: vc_sen_set_roi(): Set sensor roi: (left: 0, top: 0, width: 2464, height: 2048)
[ 1102.905203] vc_mipi 9-001a: vc_sen_set_roi(): i2c_write_reg:  14658
[ 1102.911671] vc_mipi 9-001a: vc_sen_set_exposure(): Set sensor exposure: 33330 us
[ 1102.920319] vc_mipi 9-001a: vc_sen_start_stream(): Start streaming``

Patch files fail to apply to release 32.6.1

I'm trying to apply the kernel patches listed in Integrate the driver in your own BSP to a kernel that I'm building for a Jetson AGX devkit. The kernel source is from R32.6.1. Unfortunately, the patches from the kernel_Xavier_32.6.1+ directory don't apply cleanly. Am I doing something wrong?

Using this simple shell snippet:

for patch in $vc_mipi_patch_dir/kernel_Xavier_32.6.1+/*.patch; do
	echo "--- APPLYING PATCH FILE: $patch ---"
	patch --dry-run --ignore-whitespace --binary -p1 -d $build_dir -i $patch
done

NOTE: I used a similar for-loop (without --dry-run) to apply the patches from kernel_common_32.3.1+ before running the above. Those patches, except the one for .gitignore, applied cleanly.

The resulting output:

--- APPLYING PATCH FILE: /home/build/vc_mipi_nvidia-0.12.3/patch/kernel_Xavier_32.6.1+/0001-Added-RAW8-grey-RAW10-y10-and-RAW12-y12-format-to-th.patch ---
checking file kernel/nvidia/drivers/media/platform/tegra/camera/camera_common.c
Hunk #1 succeeded at 126 (offset 5 lines).
checking file kernel/nvidia/drivers/media/platform/tegra/camera/sensor_common.c
Hunk #1 FAILED at 227 (different line endings).
1 out of 1 hunk FAILED
checking file kernel/nvidia/drivers/media/platform/tegra/camera/vi/vi5_formats.h
Hunk #1 FAILED at 95 (different line endings).
Hunk #2 FAILED at 115 (different line endings).
2 out of 2 hunks FAILED
--- APPLYING PATCH FILE: /home/build/vc_mipi_nvidia-0.12.3/patch/kernel_Xavier_32.6.1+/0001-Added-controls-trigger_mode-flash_mode-and-black_lev.patch ---
checking file kernel/nvidia/drivers/media/platform/tegra/camera/tegracam_ctrls.c
checking file kernel/nvidia/include/media/camera_common.h
checking file kernel/nvidia/include/media/tegra-v4l2-camera.h
--- APPLYING PATCH FILE: /home/build/vc_mipi_nvidia-0.12.3/patch/kernel_Xavier_32.6.1+/0001-Bugfix-in-destroy_buffer_table-.-When-the-capture_bu.patch ---
checking file kernel/nvidia/drivers/media/platform/tegra/camera/capture_common.c
--- APPLYING PATCH FILE: /home/build/vc_mipi_nvidia-0.12.3/patch/kernel_Xavier_32.6.1+/0001-Disable-VB2_BUF_STATE_REQUEUEING-in-vi5_fops.c.patch ---
checking file kernel/nvidia/drivers/media/platform/tegra/camera/vi/vi5_fops.c
--- APPLYING PATCH FILE: /home/build/vc_mipi_nvidia-0.12.3/patch/kernel_Xavier_32.6.1+/0002-Changed-control-flash_mode-to-io_mode.patch ---
checking file kernel/nvidia/drivers/media/platform/tegra/camera/tegracam_ctrls.c
Hunk #1 FAILED at 186.
Hunk #2 FAILED at 341.
Hunk #3 FAILED at 696.
Hunk #4 FAILED at 889.
4 out of 4 hunks FAILED
checking file kernel/nvidia/include/media/camera_common.h
Hunk #1 FAILED at 193.
1 out of 1 hunk FAILED
checking file kernel/nvidia/include/media/tegra-v4l2-camera.h
Hunk #1 FAILED at 39.
1 out of 1 hunk FAILED
--- APPLYING PATCH FILE: /home/build/vc_mipi_nvidia-0.12.3/patch/kernel_Xavier_32.6.1+/0002-Increased-tegra-channel-timeout-due-to-trigger-modes.patch ---
checking file kernel/nvidia/drivers/media/platform/tegra/camera/vi/vi5_fops.c
--- APPLYING PATCH FILE: /home/build/vc_mipi_nvidia-0.12.3/patch/kernel_Xavier_32.6.1+/0003-Added-RAW14-y14-format-to-the-tegra-framework.patch ---
checking file kernel/kernel-4.9/Documentation/media/uapi/v4l/pixfmt-y14.rst
checking file kernel/kernel-4.9/Documentation/media/uapi/v4l/yuv-formats.rst
checking file kernel/kernel-4.9/drivers/media/v4l2-core/v4l2-ioctl.c
checking file kernel/kernel-4.9/include/uapi/linux/media-bus-format.h
checking file kernel/kernel-4.9/include/uapi/linux/videodev2.h
checking file kernel/nvidia/drivers/media/platform/tegra/camera/camera_common.c
Hunk #1 succeeded at 126 with fuzz 2 (offset -15 lines).
checking file kernel/nvidia/drivers/media/platform/tegra/camera/sensor_common.c
Hunk #1 FAILED at 241.
1 out of 1 hunk FAILED
checking file kernel/nvidia/drivers/media/platform/tegra/camera/vi/vi5_formats.h
Hunk #1 succeeded at 116 with fuzz 2 (offset -6 lines).
--- APPLYING PATCH FILE: /home/build/vc_mipi_nvidia-0.12.3/patch/kernel_Xavier_32.6.1+/0003-Added-control-single_trigger-to-the-tegra-framework.patch ---
checking file kernel/nvidia/drivers/media/platform/tegra/camera/tegracam_ctrls.c
Hunk #1 FAILED at 178.
Hunk #2 FAILED at 188.
Hunk #3 FAILED at 198.
Hunk #4 FAILED at 347.
Hunk #5 FAILED at 710.
Hunk #6 FAILED at 907.
6 out of 6 hunks FAILED
checking file kernel/nvidia/include/media/camera_common.h
Hunk #1 FAILED at 195.
1 out of 1 hunk FAILED
checking file kernel/nvidia/include/media/tegra-v4l2-camera.h
Hunk #1 FAILED at 41.
1 out of 1 hunk FAILED
--- APPLYING PATCH FILE: /home/build/vc_mipi_nvidia-0.12.3/patch/kernel_Xavier_32.6.1+/0003-Changed-Interrupt-Mask-for-csi4-to-emit-CRC-and-mul.patch ---
checking file kernel/nvidia/drivers/media/platform/tegra/camera/csi/csi4_fops.c
--- APPLYING PATCH FILE: /home/build/vc_mipi_nvidia-0.12.3/patch/kernel_Xavier_32.6.1+/0004-Added-VC-MIPI-Driver-sources-to-Makefile.patch ---
checking file kernel/nvidia/drivers/media/i2c/Makefile

It appears that some of the problems are whitespace-related, despite passing --ignore-whitespace and --binary. I'm not sure if that's a problem with the version of patch that I'm using (GNU patch 2.7.6) or if there's something odd about the patch files themselves.

I've checked that $build_dir is correct given the paths in the patch files. I've also tried without --dry-run in case that was the problem.

Any other ideas?

Problems with driver in connection with AGX Xavier and L4T 35.2.1

I am currently trying to install the driver on an AGX Xavier with Nvidia L4T 35.2.1. So I create a folder, clone the file from Github with this command 'git clone https://github.com/pmliquify/vc_mipi_nvidia' and run the quickstart.sh. I make the necessary settings. The program runs and then unfortunately ends with: fatal: not in a git directory. See picture.
Screenshot from 2023-09-21 11-50-17

When I start the quickstart.sh again, then comes the following error:
Screenshot from 2023-09-21 12-03-31

Maybe someone can help me? Is the driver not working correctly at this point or am I doing something wrong?

Jetson Nano boot problem with dtsi setting bayer_gbrg8

Hello,
I have a problem while booting the Jetson Nano with kernel version 32.7.4 and JetPack release 4.6.4:

[    4.988443] i2c 7-0010: +--------+---------------------------------------------+
[    4.995872] i2c 7-0010: +--- Sensor Registers ------+--------+--------+--------+
[    5.003289] i2c 7-0010: |                           | low    | mid    | high   |
[    5.010704] i2c 7-0010: +---------------------------+--------+--------+--------+
[    5.018126] i2c 7-0010: | idle                      | 0x7000 |        |        |
[    5.023113] usb 1-2.5: new high-speed USB device number 3 using tegra-xusb
[    5.032394] i2c 7-0010: | horizontal start          | 0x6013 | 0x6014 |        |
[    5.039783] i2c 7-0010: | vertical start            | 0x600e | 0x600f |        |
[    5.047176] i2c 7-0010: | horizontal end            | 0x0000 | 0x0000 |        |
[    5.054606] i2c 7-0010: | vertical end              | 0x0000 | 0x0000 |        |
[    5.062040] i2c 7-0010: | hor. output width         | 0x6015 | 0x6016 |        |
[    5.067153] usb 2-1: usb_suspend_both: status 0
[    5.067264] usb 1-2.5: New USB device found, idVendor=0424, idProduct=7240
[    5.067270] usb 1-2.5: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    5.067274] usb 1-2.5: Product: USB2 Controller Hub
[    5.067278] usb 1-2.5: Manufacturer: Microchip Tech
[    5.067526] usb usb2: usb_suspend_both: status 0
[    5.102757] i2c 7-0010: | ver. output height        | 0x6010 | 0x6011 |        |
[    5.110148] i2c 7-0010: | exposure                  | 0x3034 | 0x3035 | 0x3036 |
[    5.117537] i2c 7-0010: | gain                      | 0x301f | 0x3020 |        |
[    5.124924] i2c 7-0010: +---------------------------+--------+--------+--------+
[    5.132313] i2c 7-0010: | clock for ext. trigger    | 74250000 Hz              |
[    5.139701] i2c 7-0010: | pixel clock               | 74250000 Hz              |
[    5.147105] i2c 7-0010: | shutter offset            |        0 us              |
[    5.154491] i2c 7-0010: +---------------------------+--------------------------+
[    5.161879] i2c 7-0010: +--- Module Modes -------+---------+---------+---------+
[    5.169265] i2c 7-0010: |  # | rate    | lanes   | format  | type    | binning |
[    5.176653] i2c 7-0010: +----+---------+---------+---------+---------+---------+
[    5.184044] i2c 7-0010: |  0 |    1500 |       2 | RAW08   | STREAM  |       0 |
[    5.191434] i2c 7-0010: |  1 |    1500 |       2 | RAW10   | STREAM  |       0 |
[    5.198825] i2c 7-0010: |  2 |    1500 |       2 | RAW12   | STREAM  |       0 |
[    5.206215] i2c 7-0010: |  3 |    1500 |       2 | RAW14   | STREAM  |       0 |
[    5.213603] i2c 7-0010: |  4 |    1500 |       2 | RAW08   | EXT.TRG |       0 |
[    5.220993] i2c 7-0010: |  5 |    1500 |       2 | RAW10   | EXT.TRG |       0 |
[    5.228382] i2c 7-0010: |  6 |    1500 |       2 | RAW12   | EXT.TRG |       0 |
[    5.235770] i2c 7-0010: |  7 |    1500 |       2 | RAW14   | EXT.TRG |       0 |
[    5.243159] i2c 7-0010: |  8 |    1500 |       4 | RAW08   | STREAM  |       0 |
[    5.250547] i2c 7-0010: |  9 |    1500 |       4 | RAW10   | STREAM  |       0 |
[    5.257936] i2c 7-0010: | 10 |    1500 |       4 | RAW12   | STREAM  |       0 |
[    5.265325] i2c 7-0010: | 11 |    1500 |       4 | RAW14   | STREAM  |       0 |
[    5.272712] i2c 7-0010: | 12 |    1500 |       4 | RAW08   | EXT.TRG |       0 |
[    5.280100] i2c 7-0010: | 13 |    1500 |       4 | RAW10   | EXT.TRG |       0 |
[    5.287488] i2c 7-0010: | 14 |    1500 |       4 | RAW12   | EXT.TRG |       0 |
[    5.294876] i2c 7-0010: | 15 |    1500 |       4 | RAW14   | EXT.TRG |       0 |
[    5.302262] i2c 7-0010: +----+---------+---------+---------+---------+---------+
[    5.309652] i2c 7-0010: vc_init_ctrl_imx178(): Initialising module control for IMX178
[    5.317477] i2c 7-0010: +-------+--------+----------+-----------+
[    5.323563] i2c 7-0010: | lanes | format | exposure | framerate |
[    5.329650] i2c 7-0010: |       |        | max [us] | max [mHz] |
[    5.335736] i2c 7-0010: +-------+--------+----------+-----------+
[    5.341825] i2c 7-0010: |     2 | RAW08  |  1200265 |     51363 |
[    5.347913] i2c 7-0010: |     2 | RAW10  |  1482704 |     41578 |
[    5.354001] i2c 7-0010: |     2 | RAW12  |  1736833 |     35494 |
[    5.360088] i2c 7-0010: |     2 | RAW14  |  2040504 |     30212 |
[    5.366176] i2c 7-0010: |     4 | RAW08  |  1058980 |     58213 |
[    5.372264] i2c 7-0010: |     4 | RAW10  |  1058980 |     58213 |
[    5.378352] i2c 7-0010: |     4 | RAW12  |  1200265 |     51363 |
[    5.384440] i2c 7-0010: |     4 | RAW14  |  2040504 |     30212 |
[    5.390526] i2c 7-0010: +-------+--------+----------+-----------+
[    5.396612] i2c 7-0010: VC MIPI Core succesfully initialized
[    5.402266] vc_mipi 7-001a: vc_init_io(): Init trigger and flash mode
[    5.408708] i2c 7-0010: vc_mod_set_trigger_mode(): Set trigger mode: DISABLED
[    5.415838] i2c 7-0010: vc_mod_set_io_mode(): Set IO mode: DISABLED
[    5.422103] vc_mipi 7-001a: vc_init_frmfmt(): Init frame (width: 3072, height: 2048, fps: 0)
[    5.430892] extract_pixel_format: Need to extend formatbayer_gbrg8
[    5.437072] vc_mipi 7-001a: Unsupported pixel format
[    5.442033] vc_mipi 7-001a: Failed to read mode0 image props
[    5.447690] vc_mipi 7-001a: Could not initialize sensor properties.
[    5.453951] vc_mipi 7-001a: Failed to initialize vc_mipi
[    5.459259] vc_mipi 7-001a: vc_probe(): Tegra camera device registration failed

sensor_common.c looks like this in the unpatched code:

static int extract_pixel_format(
	const char *pixel_t, u32 *format)
{
	size_t size = strnlen(pixel_t, OF_MAX_STR_LEN);

	if (strncmp(pixel_t, "bayer_bggr10", size) == 0)
		*format = V4L2_PIX_FMT_SBGGR10;
	else if (strncmp(pixel_t, "bayer_rggb10", size) == 0)
		*format = V4L2_PIX_FMT_SRGGB10;
	else if (strncmp(pixel_t, "bayer_grbg10", size) == 0)
		*format = V4L2_PIX_FMT_SGRBG10;
	else if (strncmp(pixel_t, "bayer_gbrg10", size) == 0)
		*format = V4L2_PIX_FMT_SGBRG10;
	else if (strncmp(pixel_t, "bayer_bggr12", size) == 0)
		*format = V4L2_PIX_FMT_SBGGR12;
	else if (strncmp(pixel_t, "bayer_rggb12", size) == 0)
		*format = V4L2_PIX_FMT_SRGGB12;
	else if (strncmp(pixel_t, "bayer_gbrg12", size) == 0)
		*format = V4L2_PIX_FMT_SGBRG12;
	else if (strncmp(pixel_t, "bayer_grbg12", size) == 0)
		*format = V4L2_PIX_FMT_SGRBG12;
	else if (strncmp(pixel_t, "rgb_rgb88824", size) == 0)
		*format = V4L2_PIX_FMT_RGB24;
	else if (strncmp(pixel_t, "bayer_wdr_pwl_rggb12", size) == 0)
		*format = V4L2_PIX_FMT_SRGGB12;
	else if (strncmp(pixel_t, "bayer_wdr_pwl_gbrg12", size) == 0)
		*format = V4L2_PIX_FMT_SGBRG12;
	else if (strncmp(pixel_t, "bayer_wdr_pwl_grbg12", size) == 0)
		*format = V4L2_PIX_FMT_SGRBG12;
	else if (strncmp(pixel_t, "bayer_wdr_dol_rggb10", size) == 0)
		*format = V4L2_PIX_FMT_SRGGB10;
	else if (strncmp(pixel_t, "bayer_xbggr10p", size) == 0)
		*format = V4L2_PIX_FMT_XBGGR10P;
	else if (strncmp(pixel_t, "bayer_xrggb10p", size) == 0)
		*format = V4L2_PIX_FMT_XRGGB10P;
	else if (strncmp(pixel_t, "yuv_yuyv16", size) == 0)
		*format = V4L2_PIX_FMT_YUYV;
	else if (strncmp(pixel_t, "yuv_yvyu16", size) == 0)
		*format = V4L2_PIX_FMT_YVYU;
	else if (strncmp(pixel_t, "yuv_uyvy16", size) == 0)
		*format = V4L2_PIX_FMT_UYVY;
	else if (strncmp(pixel_t, "yuv_vyuy16", size) == 0)
		*format = V4L2_PIX_FMT_VYUY;
	else {
		pr_err("%s: Need to extend format%s\n", __func__, pixel_t);
		return -EINVAL;
	}

	return 0;
}

The patch from patch/kernel_Nano_32.6.1+/0002-Added-RAW8-grey-RAW10-y10-and-RAW12-y12-format-to-th.patch adds this:

diff --git a/kernel/nvidia/drivers/media/platform/tegra/camera/sensor_common.c b/kernel/nvidia/drivers/media/platform/tegra/camera/sensor_common.c
index 32f7c417a..dd040dee2 100644
--- a/kernel/nvidia/drivers/media/platform/tegra/camera/sensor_common.c
+++ b/kernel/nvidia/drivers/media/platform/tegra/camera/sensor_common.c
@@ -227,6 +227,14 @@ static int extract_pixel_format(
 		*format = V4L2_PIX_FMT_UYVY;
 	else if (strncmp(pixel_t, "yuv_vyuy16", size) == 0)
 		*format = V4L2_PIX_FMT_VYUY;
+	else if (strncmp(pixel_t, "gray", size) == 0)
+		*format = V4L2_PIX_FMT_GREY;
+	else if (strncmp(pixel_t, "y10", size) == 0)
+		*format = V4L2_PIX_FMT_Y10;
+	else if (strncmp(pixel_t, "y12", size) == 0)
+		*format = V4L2_PIX_FMT_Y12;
+	else if (strncmp(pixel_t, "bayer_rggb8", size) == 0)
+		*format = V4L2_PIX_FMT_SRGGB8;
 	else {
 		pr_err("%s: Need to extend format%s\n", __func__, pixel_t);
 		return -EINVAL;

can you please add the bayer_gbrg8 to that patch?

Thank you

Initial values of V4L controls wrong

v4l2-ctl --list-ctrls displays wrong values after boot:

Camera Controls

                     group_hold 0x009a2003 (bool)   : default=0 value=0 flags=execute-on-write
                    sensor_mode 0x009a2008 (int64)  : min=0 max=1 step=1 default=0 value=0 flags=slider
                           gain 0x009a2009 (int64)  : min=0 max=51000 step=50 default=0 value=0 flags=slider
                       exposure 0x009a200a (int64)  : min=1 max=1000000 step=1 default=10000 value=1 flags=slider
                     frame_rate 0x009a200b (int64)  : min=1000 max=40000 step=100 default=40000 value=1000 flags=slider
                   trigger_mode 0x009a200e (int)    : min=0 max=7 step=1 default=0 value=0
                        io_mode 0x009a200f (int)    : min=0 max=5 step=1 default=0 value=0
                    black_level 0x009a2010 (int)    : min=0 max=2147483647 step=1 default=0 value=0 flags=slider
                 single_trigger 0x009a2011 (button) : flags=write-only, execute-on-write
                    bypass_mode 0x009a2064 (intmenu): min=0 max=1 default=0 value=0
                override_enable 0x009a2065 (intmenu): min=0 max=1 default=0 value=0
                   height_align 0x009a2066 (int)    : min=1 max=16 step=1 default=1 value=1
                     size_align 0x009a2067 (intmenu): min=0 max=2 default=0 value=0
               write_isp_format 0x009a2068 (bool)   : default=0 value=0
       sensor_signal_properties 0x009a2069 (u32)    : min=0 max=4294967295 step=1 default=0 [30][18] flags=read-only, has-payload
        sensor_image_properties 0x009a206a (u32)    : min=0 max=4294967295 step=1 default=0 [30][18] flags=read-only, has-payload
      sensor_control_properties 0x009a206b (u32)    : min=0 max=4294967295 step=1 default=0 [30][36] flags=read-only, has-payload
              sensor_dv_timings 0x009a206c (u32)    : min=0 max=4294967295 step=1 default=0 [30][16] flags=read-only, has-payload
               low_latency_mode 0x009a206d (bool)   : default=0 value=0
               preferred_stride 0x009a206e (int)    : min=0 max=65535 step=1 default=0 value=0
                   sensor_modes 0x009a2082 (int)    : min=0 max=30 step=1 default=30 value=1 flags=read-only

For example, the value of the exposure control is 1. The actual value in the sensor register seems to be 10000. We encountered wrong initial values also for other controls (e.g. black level).

Device tree not building?

Hi I've tried to install the camera driver for IMX327 to my Jetson nano, but keep running into this error.

make[2]: * No rule to make target 'arch/arm64/boot/dts/..//hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a00.dts', needed by 'arch/arm64/boot/dts/ddot//hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a00.dtb'. Stop.
make[2]: * Waiting for unfinished jobs....
DTC arch/arm64/boot/dts/ddot
cc1: fatal error: arch/arm64/boot/dts/..: No such file or directory
compilation terminated.
make[2]: * [/home/akbanshee/vc_mipi_nvidia/build/NanoSD_32.6.1/Linux_for_Tegra/source/public/kernel/kernel-4.9/arch/arm64/boot/dts/Makefile:133: arch/arm64/boot/dts/ddot] Error 1
make[1]: * [arch/arm64/Makefile:154: dtbs] Error 2
make: *** [Makefile:171: sub-make] Error 2

Any idea on how to solve this issue?

branch 14 TX2NX ./setup.sh -c brings up wrong DT file

enter 8-1 in config script.
./setup.sh -camera brings up:
vc_mipi_nvidia/src/devicetree/Auvidea_J20_AGXXavier/tegra194-camera-vc-mipi-cam.dtsi

should bring up
home/mat/sb3d/newtx2nx/vc_mipi_nvidia/src/devicetree/Auvidea_JNX30D_TX2NX/tegra186-camera-vc-mipi-cam.dtsi

Can't set "gray", "y10" or "y12" pixel formats in device tree modes if LINUX_VERSION >= 500

In order to have a choice of image formats for a connected camera in V4L2, I have found that there have to be multiple modes in the device tree - one for each image format supported by the camera. The formats included in the modes are listed by the command

v4l2-ctl --list-formats-ext

Is this expected behaviour?

In the mode section of the device tree, before Linux V500, the field pixel_t was used to specify the image format. After Linux V500 this was split into three fields, "mode_type", "pixel_phase" and "csi_pixel_bit_depth".

#if LINUX_VERSION < 500
        pixel_t                  = "bayer_rggb";
#else
        mode_type                = "bayer";
        pixel_phase              = "rggb";
        csi_pixel_bit_depth      = "10";
#endif

It is not possible to specify the pixel formats "gray", "y10" or "y12" using the new fields "mode_type", "pixel_phase" and "csi_pixel_bit_depth" because in the code*, they are combined into a pixel format string that contains an underscore character. (The above example would be "bayer_rggb10".) The field "csi_pixel_bit_depth" is required by other code so must be present.

The code will prefer to read the "pixel_t" if it is present, so a work around seems to be to include both the "pixel_t" fields
and the other fields:

        pixel_t                  = "gray";
#if LINUX_VERSION >= 500
        mode_type                = "";
        pixel_phase              = "gray";
        csi_pixel_bit_depth      = "8";
#endif
  • see Linux_for_Tegra/source/public/kernel/nvidia/drivers/media/platform/tegra/camera/sensor_common.c line 382:
    ret = sprintf(pix_format, "%s_%s%d", mode_str, phase_str, depth);

v4l2_control invalid argument and permission denied error

Using Auvidea JNX30D with L4T 32.7.3
Camera: IMX568

I'm writing a module for setting camera controls with v4l, and when i try to get/set values of controls, i have got an error with specific controls.

Code block:

bool getControl(int controlId, int &value) {
    struct v4l2_control ctrl;
    std::memset(&ctrl, 0, sizeof(ctrl));
    ctrl.id = controlId;
    
    if (ioctl(_fd, VIDIOC_G_CTRL, &ctrl) == -1) {
        std::perror(std::string("Error getting control of " + std::to_string(controlId)).c_str());
        return false;
    }
    value = ctrl.value;
    return true;
}

I'm getting the controlId with querying the controls:

void queryControls(const std::string &devicePath) {
    int fd = open(devicePath.c_str(), O_RDWR);
    if (fd == -1) {
        std::perror("error opening device");
        return;
    }

    v4l2_queryctrl queryctrl;
    std::memset(&queryctrl, 0, sizeof(queryctrl));
    queryctrl.id = V4L2_CTRL_FLAG_NEXT_CTRL;
    while (ioctl(fd, VIDIOC_QUERYCTRL, &queryctrl) == 0) {
        std::cout << "Control id = " << queryctrl.id << std::endl;
        std::cout << "Control Name = " << queryctrl.name << std::endl;

        // next control
        queryctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
    }

    close(fd);
}

But when I try to get all control values, i have faced with this output:

ID        Name                Value     
10100752  Black Level         0         
10100836  Bypass Mode         1         
Error getting control of 10092545: Permission denied
10092545  Camera Controls     1         
Error getting control of 10100746: Invalid argument
10100746  Exposure            1         
Error getting control of 10100747: Invalid argument
10100747  Frame Rate          1         
Error getting control of 10100745: Invalid argument
10100745  Gain                1         
10100739  Group Hold          0         
10100838  Height Align        1         
10100751  IO Mode             0         
10100845  Low Latency Mode    0         
10100837  Override Enable     1         
10100846  Preferred Stride    0         
Error getting control of 10100744: Invalid argument
10100744  Sensor Mode         0         
10100866  Sensor Modes        1         
Error getting control of 10100753: Permission denied
10100753  Single Trigger      1         
10100839  Size Align          0         
10100750  Trigger Mode        0         
10100840  Write ISP format    1

Any ideas why and how to fix it?

Best regards.

IMX568 image not ok on Jetson nano

Test setup: JNX30 + Jetson nano with L4T 32.6.1 and driver 0.14.1.

When streaming (mode does not seem to matter, for example 2 lanes, 10-bit, streaming mode) with the standard resolution (2472 x 2048) the image is not ok. It looks like the image width is wrong. When the image width is changed to 2432, 2464 or 2496 for example, 1 image out of 3 image look good and 2 out of 3 images are black. Additionnally the kernel log output the error message "image height is too long" (or too short).

After flashing Jetson Orin Nano, GUI not showing.

After flashing with using branch '9-support-for-jetson-orin-nano', GUI or display not working.

  • minicom working and looks like it's flashed successfully.
  • When using 'ACPI' on BIOS rather than 'Device Tree' option, GUI and display came but usb ports don't work.
  • In the script seems like everything is successful.
  • Selected camera: IMX568, but camera not connected to device.(Should it be connected?)

Issues with VC-MIPI Driver Version 0.14 on Jetson Xavier NX with Auvidea JNX30 Carrier Board

I have observed several problems while using VC-MIPI Driver version 0.14 on my Jetson Xavier NX with the Auvidea JNX30 Carrier Board to test it with the IMX183 Sensor.

  1. Device Tree Selection Issue:
    During the flashing process, the incorrect Device Tree was displayed. The message indicated the usage of a device tree camera file from the path: ../Auvidea_J20_AGXXavier/..., while I had selected XavierNX and Auvidea_JNX30 as shown below:
    image

  2. Pixelformat GREY Error:
    After successfully flashing the Jetson, I installed V4L (Video for Linux) and attempted to select the Pixelformat GREY, which I had used previously. However, I encountered an error message stating that this Pixelformat was invalid. Only the RGGB 8 bit format was available in the list-formats output. (I had configured this Pixelformat in the devicetree.)
    image
    image

  3. Streaming and Test Image Issue:
    I also tried to create a test image using a V4L command, but this process failed. Whenever I attempt to start streaming, the system tries to capture an image every 10 seconds (as set in vi5_fops.c), but it fails to do so. The command I used is:
    v4l2-ctl -d /dev/video0 --set-ctrl bypass_mode=0 --stream-mmap --stream-count=1 --stream-to=test_5440x3648.raw
    image

devnode is not honored

How can we control which camera gets assigned to which device (/dev/videoX).
The devnode devicetree attribute is not honored (L4T 35.4.1), no matter what I put in there it will always assign it in the same way. But I want to switch video0 and video1.

vc_mipi_camera.c: error: 'struct sensor_image_properties' has no member named 'left'

Hello,
I'm trying to include the drivers into my system, but the compilation fails at one point:
error: 'struct sensor_image_properties' has no member named 'left'

void vc_update_image_size_from_mode(struct tegracam_device *tc_dev,  __u32 *left, __u32 *top, __u32 *width, __u32 *height)
{
	struct vc_cam *cam = tegracam_to_cam(tc_dev);
	struct device *dev = vc_core_get_sen_device(cam);
	struct sensor_mode_properties *mode = NULL;
	struct sensor_image_properties *image = NULL;
	int mode_idx = 0;

	if (tc_dev->s_data->use_sensor_mode_id) 
		mode_idx = tc_dev->s_data->sensor_mode_id;

	mode = tegracam_to_mode(tc_dev, mode_idx);
	if (mode == NULL)
		return;

	image = &mode->image_properties;
	if (image->width != 0 && image->height != 0) {
		*left = image->left;
		*top = image->top;
		*width = image->width;
		*height = image->height;

		vc_notice(dev, "%s(): Update image size from mode%u (l: %u, t: %u, w: %u, h: %u)\n",
			__FUNCTION__, mode_idx, *left, *top, *width, *height);
	}
}

in image = &mode->image_properties; and the following lines, somehow the parameter left is being accessed, but there is no left defined in the struct sensor_image_properties :
(from tegra-v4l2-camera.h):

struct sensor_image_properties {
	__u32 width;
	__u32 height;
	__u32 line_length;
	__u32 pixel_format;
	__u32 embedded_metadata_height;
	__u32 reserved[11];
};

How can this be resolved?

Cannot make any video operation on Orin Nano

Hi,

I have Orin Nano developer kit and I’ve been trying to use a camera imx568c on Orin Nano with MIPI-CSI-2 by using this repo
Jetson 5.1.2
R35 (release), REVISION: 4.1

First I did quicksetup with the instructions. Setup completed and no error seen. I can see the camera but I think it shows the wrong model for the camera.

v4l2-ctl --list-devices
NVIDIA Tegra Video Input Device (platform:tegra-camrtc-ca):
        /dev/media0

vi-output, imx219 10-0010 (platform:tegra-capture-vi:2):
        /dev/video0

My camera dtsi configuration is below.

/*
 * Copyright (c) 2023, Vision Components GmbH.  All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include <dt-bindings/media/camera.h>

// ------------------------------------------------------------------------------------------------
//  Driver Configuration for NVIDIA Jetson Orin Nano on NVIDIA Jetson Orin Nano Developer Kit
// ------------------------------------------------------------------------------------------------
#define VC_MIPI_CAM_1       1   // 1: Enabled, 0: Disabled  (serial_a => CSI Port 0 => VI Stream 0)
#define VC_MIPI_CAM_0       0   // 1: Enabled, 0: Disabled  (serial_c => CSI Port 2 => VI Stream 2)
// ------------------------------------------------------------------------------------------------
//  Supported number of lanes
// -----+------------------------------------------------------------------------------------------
//  1   | OV7251, IMX296, IMX297
//  2   | OV9281, IMX264, IMX265
//  2,4 | IMX178, IMX183, IMX226, IMX250, IMX252, IMX273, IMX290, IMX327, IMX335, IMX392, 
//      | IMX412, IMX415, IMX568
// -----+------------------------------------------------------------------------------------------
#define VC_MIPI_LANES       2   // 1, 2, 4 Lanes
// ------------------------------------------------------------------------------------------------
//  Embedded Metadata Height
// -----+------------------------------------------------------------------------------------------
//  0   | IMX178, IMX183, IMX226, IMX250, IMX252, IMX264, IMX265, IMX273, IMX392, OV7251, OV9281
//  1   | IMX290, IMX327, IMX335, IMX415, IMX568
//  2   | IMX296, IMX297, IMX412
// -----+------------------------------------------------------------------------------------------
#define VC_MIPI_METADATA_H  "1" // "0", "1", "2" Lines of meta data
// ------------------------------------------------------------------------------------------------
//   Sensor Manufacturer
// -----+------------------------------------------------------------------------------------------
//   1  | Sony Sensor (IMX)
//   2  | Omni Vision Sensor (OV)
// -----+------------------------------------------------------------------------------------------
#define VC_MIPI_MANUFACTURER 1
// ------------------------------------------------------------------------------------------------
//  GStreamer Support
// ------------------------------------------------------------------------------------------------
//  If you want to use GStreamer with nvarguscamerasrc you have to adjust this settings in the 
//  device tree below. The sections which have to be modified are marked by a comment. 
//  To find the correct parameter values please follow the instruction in the main README.md of 
//  this repository https://github.com/VC-MIPI-modules/vc_mipi_nvidia#gstreamer-support
// ------------------------------------------------------------------------------------------------

#if VC_MIPI_LANES == 1
    #define BUS_WIDTH 1
    #define NUM_LANES "1" 
    #define NUM_CSI_LANES 2
#endif
#if VC_MIPI_LANES == 2
    #define BUS_WIDTH 2
    #define NUM_LANES "2" 
    #define NUM_CSI_LANES 4
#endif
#if VC_MIPI_LANES == 4
    #define BUS_WIDTH 4
    #define NUM_LANES "4" 
    #define NUM_CSI_LANES 8
#endif

#if VC_MIPI_CAM_1 == 1 && VC_MIPI_CAM_0 == 1
    #define VC_MIPI_CAMERAS 2
#else
    #define VC_MIPI_CAMERAS 1
#endif

/ {
	tegra-capture-vi  {
		num-channels = <VC_MIPI_CAMERAS>;
		ports {
			#address-cells = <1>;
			#size-cells = <0>;
#if VC_MIPI_CAM_1 == 1
			vc_vi_port0: port@0 {
				reg = <0>;
				vc_vi_in0: endpoint {
					port-index = <1>;
					bus-width = <BUS_WIDTH>;
					remote-endpoint = <&vc_csi_out0>;
				};
			};
#endif
#if VC_MIPI_CAM_0 == 1
			vc_vi_port1: port@1 {
				reg = <1>;
				vc_vi_in1: endpoint {
					port-index = <2>;
					bus-width = <BUS_WIDTH>;
					remote-endpoint = <&vc_csi_out1>;
				};
			};
#endif
		}; // ports
	};

	host1x@13e00000 {
		nvcsi@15a00000 {
			num-channels = <VC_MIPI_CAMERAS>;
			#address-cells = <1>;
			#size-cells = <0>;
#if VC_MIPI_CAM_1 == 1
			vc_csi_chan0: channel@0 {
				reg = <0>;
				ports {
					#address-cells = <1>;
					#size-cells = <0>;
						vc_csi_chan0_port0: port@0 {
						reg = <0>;
						vc_csi_in0: endpoint@0 {
							port-index = <1>;
							bus-width = <BUS_WIDTH>;
							remote-endpoint = <&vc_mipi_out0>;
						};
					};
					vc_csi_chan0_port1: port@1 {
						reg = <1>;
						vc_csi_out0: endpoint@1 {
							remote-endpoint = <&vc_vi_in0>;
						};
					};
				};
			};
#endif

#if VC_MIPI_CAM_0 == 1
			vc_csi_chan1: channel@1 {
				reg = <1>;
				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					vc_csi_chan1_port0: port@0 {
						reg = <0>;
						vc_csi_in1: endpoint@2 {
							port-index = <2>;
							bus-width = <BUS_WIDTH>;
							remote-endpoint = <&vc_mipi_out1>;
						};
					};
					vc_csi_chan1_port1: port@1 {
						reg = <1>;
						vc_csi_out1: endpoint@3 {
							remote-endpoint = <&vc_vi_in1>;
						};
					};
				};
			};
#endif
		};
	};

	cam_i2cmux {
#if VC_MIPI_CAM_1 == 1
		i2c@0 {
#if VC_MIPI_MANUFACTURER == 1
			vc_mipi_cam0: vc_mipi@1a {
				reg                     = <0x1a>;
#else
			vc_mipi_cam0: vc_mipi@60 {
				reg                     = <0x60>;
#endif
				compatible              = "nvidia,vc_mipi";
				devnode                 = "video0";
				use_sensor_mode_id      = "false";
				sensor_model            = "vc_mipi";

				num_lanes               = NUM_LANES;
				trigger_mode            = "0";
				io_mode                 = "0";

				// ----------------------------------------------------
				// If you want to use GStreamer with nvarguscamerasrc
				// you have to adjust this settings
				physical_w              = "6.773";
				physical_h              = "5.612";
				// ----------------------------------------------------

				// This node is needed by the Tegra framework.
				// You don't have to change any settings if just want 
				// to use the V4L API.
				mode0 {
					num_lanes                = NUM_LANES;
					tegra_sinterface         = "serial_b";
					embedded_metadata_height = VC_MIPI_METADATA_H;
					readout_orientation      = "0";
					lane_polarity            = "6";

					// ----------------------------------------------------
					// If you want to use GStreamer with nvarguscamerasrc
					// you have to adjust this settings. 
					active_l                 = "0";
					active_t                 = "0";
					active_w                 = "2472";
					active_h                 = "2048";
					mode_type                = "bayer";
					pixel_phase              = "rggb";
					csi_pixel_bit_depth      = "10";

					min_gain_val             = "0";         // mdB
					max_gain_val             = "48000";     // mdB
					step_gain_val            = "1";       // mdB
					default_gain             = "0";         // mdB

					min_exp_time             = "1";         // us
					max_exp_time             = "1000000";   // us
					step_exp_time            = "1";         // us
					default_exp_time         = "10000";     // us

					// For applications like argus_camera, there should 
					// be a minimal frame rate greater than zero!
					min_framerate            = "100";       // mHz
					max_framerate            = "60000";     // mHz
					step_framerate           = "100";       // mHz
					default_framerate        = "60000";     // mHz
					// ----------------------------------------------------

					gain_factor              = "1000";
					exposure_factor          = "1000000";
					framerate_factor         = "1000";
					inherent_gain            = "1";
					min_hdr_ratio            = "1";
					max_hdr_ratio            = "1";

					line_length              = "0";
					phy_mode                 = "DPHY";
					discontinuous_clk        = "no";
					mclk_khz                 = "24000";
					pix_clk_hz               = "215000000";
					mclk_multiplier          = "0.0";  	// deprecated
					cil_settletime           = "0";
					dpcm_enable              = "false";
				};

				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					port@0 {
						reg = <0>;
						vc_mipi_out0: endpoint {
							port-index = <1>;
							bus-width = <BUS_WIDTH>;
							remote-endpoint = <&vc_csi_in0>;
						};
					};
				};
			};
		};
#endif // VC_MIPI_CAM_1

#if VC_MIPI_CAM_0 == 1
		i2c@1 {
#if VC_MIPI_MANUFACTURER == 1
			vc_mipi_cam1: vc_mipi@1a {
				reg                     = <0x1a>;
#else
			vc_mipi_cam1: vc_mipi@60 {
				reg                     = <0x60>;
#endif
				compatible              = "nvidia,vc_mipi";
				devnode                 = "video1";
				use_sensor_mode_id      = "false";
				sensor_model            = "vc_mipi";

				num_lanes               = NUM_LANES;
				trigger_mode            = "0";
				io_mode                 = "0";

				// ----------------------------------------------------
				// If you want to use GStreamer with nvarguscamerasrc
				// you have to adjust this settings
				physical_w              = "6.773";
				physical_h              = "5.655";
				// ----------------------------------------------------

				// This node is needed by the Tegra framework.
				// You don't have to change any settings if just want 
				// to use the V4L API.
				mode0 {
					num_lanes                = NUM_LANES;
					tegra_sinterface         = "serial_c";
					embedded_metadata_height = VC_MIPI_METADATA_H;
					readout_orientation      = "0";
					lane_polarity            = "0";

					// ----------------------------------------------------
					// If you want to use GStreamer with nvarguscamerasrc
					// you have to adjust this settings. 
					active_l                 = "0";
					active_t                 = "0";
					active_w                 = "2472";
					active_h                 = "2048";
					mode_type                = "bayer";
					pixel_phase              = "rggb";
					csi_pixel_bit_depth      = "10";

					min_gain_val             = "0";         // mdB
					max_gain_val             = "48000";     // mdB
					step_gain_val            = "100";       // mdB
					default_gain             = "0";         // mdB

					min_exp_time             = "1";         // us
					max_exp_time             = "1000000";   // us
					step_exp_time            = "1";         // us
					default_exp_time         = "10000";     // us

					// For applications like argus_camera, there should 
					// be a minimal frame rate greater than zero!
					min_framerate            = "100";       // mHz
					max_framerate            = "57290";     // mHz
					step_framerate           = "100";       // mHz
					default_framerate        = "57290";     // mHz
					// ----------------------------------------------------

					gain_factor              = "1000";
					exposure_factor          = "1000000";
					framerate_factor         = "1000";
					inherent_gain            = "1";
					min_hdr_ratio            = "1";
					max_hdr_ratio            = "1";

					line_length              = "0";
					phy_mode                 = "DPHY";
					discontinuous_clk        = "no";
					mclk_khz                 = "24000";
					pix_clk_hz               = "600000000"; // 205000000 - 600000000 tested with IMX568
					mclk_multiplier          = "0.0";		// deprecated
					cil_settletime           = "0";
					dpcm_enable              = "false";
				};

				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					port@0 {
						reg = <0>;
						vc_mipi_out1: endpoint {
							port-index = <2>;
							bus-width = <BUS_WIDTH>;
							remote-endpoint = <&vc_csi_in1>;
						};
					};
				};
			};
		};
#endif // VC_MIPI_CAM_0
	};

	lens@vc_mipi {
		min_focus_distance  = "0.0";
		hyper_focal         = "0.0";
		focal_length        = "6.0";
		f_number            = "2.0";
		aperture            = "0.0";
	};
};

/ {
	tcp: tegra-camera-platform {
		compatible = "nvidia, tegra-camera-platform";

		num_csi_lanes = <NUM_CSI_LANES>;
		max_lane_speed = <1500000>;
		min_bits_per_pixel = <10>;
		vi_peak_byte_per_pixel = <2>;
		vi_bw_margin_pct = <25>;
		max_pixel_rate = <240000>;
		isp_peak_byte_per_pixel = <5>;
		isp_bw_margin_pct = <25>;

		modules {
#if VC_MIPI_CAM_1 == 1
			cam_module0: module0 {
				badge = "jakku_front_vc_mipi";
				position = "front";
				orientation = "1";
				cam_module0_drivernode0: drivernode0 {
					pcl_id = "v4l2_sensor";
#if VC_MIPI_MANUFACTURER == 1
					devname = "vc_mipi 9-001a";
					proc-device-tree = "/proc/device-tree/cam_i2cmux/i2c@0/vc_mipi@1a";
#else
					devname = "vc_mipi 9-0060";
					proc-device-tree = "/proc/device-tree/cam_i2cmux/i2c@0/vc_mipi@60";
#endif
				};
				cam_module0_drivernode1: drivernode1 {
					pcl_id = "v4l2_lens";
					proc-device-tree = "/proc/device-tree/lens@vc_mipi/";
				};
			};
#endif // VC_MIPI_CAM_1
			
#if VC_MIPI_CAM_0 == 1
			cam_module1: module1 {
				badge = "jakku_rear_vc_mipi";
				position = "rear";
				orientation = "1";
				cam_module1_drivernode0: drivernode0 {
				pcl_id = "v4l2_sensor";
#if VC_MIPI_MANUFACTURER == 1
				devname = "vc_mipi 10-001a";
				proc-device-tree = "/proc/device-tree/cam_i2cmux/i2c@1/vc_mipi@1a";
#else
				devname = "vc_mipi 10-0060";
				proc-device-tree = "/proc/device-tree/cam_i2cmux/i2c@1/vc_mipi@60";
#endif	
				};
				cam_module1_drivernode1: drivernode1 {
					pcl_id = "v4l2_lens";
					proc-device-tree = "/proc/device-tree/lens@vc_mipi/";
				};
			};
#endif // VC_MIPI_CAM_0
		};
	};
};

#define CAM0_PWDN	TEGRA234_MAIN_GPIO(H, 6)
#define CAM1_PWDN	TEGRA234_MAIN_GPIO(AC, 0)
#define CAM_I2C_MUX 	TEGRA234_AON_GPIO(CC, 3)

/ {
	cam_i2cmux {
		status = "okay";
		compatible = "i2c-mux-gpio";
		#address-cells = <1>;
		#size-cells = <0>;
		mux-gpios = <&tegra_aon_gpio CAM_I2C_MUX GPIO_ACTIVE_HIGH>;
		i2c-parent = <&cam_i2c>;
#if VC_MIPI_CAM_1 == 1
		i2c@0 {
			status = "okay";
			reg = <0>;
			#address-cells = <1>;
			#size-cells = <0>;
#if VC_MIPI_MANUFACTURER == 1
			vc_mipi@1a {
#else
			vc_mipi@60 {
#endif
				reset-gpios = <&tegra_main_gpio CAM0_PWDN GPIO_ACTIVE_HIGH>;
			};
		};
#endif
#if VC_MIPI_CAM_0 == 1
		i2c@1 {
			status = "okay";
			reg = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
#if VC_MIPI_MANUFACTURER == 1
			vc_mipi@1a {
#else
            		vc_mipi@60 {
#endif
				reset-gpios = <&tegra_main_gpio CAM1_PWDN GPIO_ACTIVE_HIGH>;
			};
		};
#endif
	};

	gpio@2200000 {
		camera-control-output-low {
			gpio-hog;
			output-low;
			gpios = <CAM0_PWDN 0 CAM1_PWDN 0>;
			label = "cam0-pwdn","cam1-pwdn";
		};
	};
};

Formats are listing as below

v4l2-ctl --list-formats-ext -d /dev/video0 
ioctl: VIDIOC_ENUM_FMT
	Type: Video Capture

	[0]: 'RG10' (10-bit Bayer RGRG/GBGB)
		Size: Discrete 3280x2464
			Interval: Discrete 0.048s (21.000 fps)
		Size: Discrete 3280x1848
			Interval: Discrete 0.036s (28.000 fps)
		Size: Discrete 1920x1080
			Interval: Discrete 0.033s (30.000 fps)
		Size: Discrete 1640x1232
			Interval: Discrete 0.033s (30.000 fps)
		Size: Discrete 1280x720
			Interval: Discrete 0.017s (60.000 fps)

dmesg is here

[  509.046577] EXT4-fs error (device mmcblk1p1): ext4_lookup:1706: inode #920955: comm dpkg: iget: checksum invalid
[  509.060091] EXT4-fs error (device mmcblk1p1): ext4_lookup:1706: inode #920955: comm dpkg: iget: checksum invalid
[  525.105837] EXT4-fs error (device mmcblk1p1): ext4_lookup:1706: inode #920955: comm dpkg: iget: checksum invalid
[  525.254362] EXT4-fs error (device mmcblk1p1): ext4_lookup:1706: inode #920955: comm dpkg: iget: checksum invalid
[  601.668422] EXT4-fs error (device mmcblk1p1): ext4_lookup:1706: inode #920955: comm dpkg: iget: checksum invalid
[  601.679969] EXT4-fs error (device mmcblk1p1): ext4_lookup:1706: inode #920955: comm dpkg: iget: checksum invalid
[ 5415.167390] bwmgr API not supported
[ 5417.835568] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[ 5417.848323] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[ 5417.858831] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 5417.866589] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=2, csi_port=2
[ 5417.877282] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 5417.885015] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 2 vc- 0
[ 5417.895891] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[ 5420.651514] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[ 5420.660677] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[ 5420.671110] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 5420.678842] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=2, csi_port=2
[ 5420.689512] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 5420.697235] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 2 vc- 0
[ 5420.708118] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[ 5423.467267] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[ 5423.476422] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[ 5423.486985] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 5423.494718] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=2, csi_port=2
[ 5423.505390] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 5423.513105] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 2 vc- 0
[ 5423.523945] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[ 5426.283216] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[ 5426.292372] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[ 5426.302817] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 5426.310534] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=2, csi_port=2
[ 5426.321238] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 5426.328967] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 2 vc- 0
[ 5426.339831] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[ 5429.099162] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[ 5429.108314] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[ 5429.119772] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 5429.127508] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=2, csi_port=2
[ 5429.138191] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 5429.145914] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 2 vc- 0
[ 5429.156949] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel

I’ve tried the commands like

v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=RG10 --set-ctrl bypass_mode=0 --stream-mmap --stream-count=1 --stream-to=ov1080.raw -d /dev/video0 

the command execution frozen until I hit ctrl-c and ov1080.raw is 0 byte

gstreamer command that I tried

gst-launch-1.0 v4l2src ! videoconvert ! x264enc ! matroskamux ! filesink location=data.mkv

It is frozen until I hit ctrl-c and data.mkv cannot be opened by vlc also it’s size is 0 byte

I also tried vpc mipi demo

./vcmipidemo -ao 1000 -g 10

but it is black screen with 24.5mb size files

resim

So, It looks it installed wrong driver? because it says imx219 but I’m sure my camera imx568c. Could the problem be related with L4T version?

Infinite CSI Timeout in Trigger Mode

In trigger mode, the driver should dynamically adjust the CSI timeout to infinite. Otherwise the CSI interface will be resetted after this hardcoded time period. If the trigger event occures during this reset, the image will be dropped.
Increasing the hardcoded timeout in the driver seems not to be a valid option, because this makes the driver hang when the camera is stopped.

Tested on Jetson Nano, L4T 32.7.3/4

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.