How to use LI-JETSON-KIT-IMX377M12-X with TX2

I have TX2 and camera ‘LI-JETSON-KIT-IMX377M12-X’.

and I connect two.

I take document about installing driver from Leopard(The company that made the camera)

following is document.

Please download the driver patch, kernel code and gcc tool chain from links below.

Drivers: https://www.dropbox.com/sh/dzn01wte5akuwb1/AACqfpVqQpWfJ5tP4rSE8FFua?dl=0

------Setup the driver on TX2

  1. Download the L4T R28.1 for TX2 from link below.

https://www.dropbox.com/sh/8p3kgws42csrulu/AADYMwGXYE2_qKjtPLVDawgta?dl=0

and follow below steps to flash the R28.1 image the TX2.

Set the TX2 to recovery mode

sudo tar xpf Tegra186_Linux_R28.1.0_aarch64.tbz2

cd Linux_for_Tegra/rootfs/

sudo tar xpf …/…/Tegra_Linux_Sample-Root-Filesystem_R28.1.0_aarch64.tbz2

cd …

sudo ./apply_binaries.sh

Copy and replace the tegra186-quill-p3310-1000-c03-00-base.dtb under Linux_for_Tegra/kernel/dtb

sudo ./flash.sh jetson-tx2 mmcblk0p1

Note: You can also download the Jetpack 3.1 (which includes the L4T R28.1) from Nvidia website and install it to TX2 if needed.

  1. After boot up, Copy Image, zImage to TX2 /boot.

  2. copy 4.4.38-tegra-leopard.tgz to TX2 /lib/modules

    sudo cp 4.4.38-tegra-leopard.tgz /lib/modules

    cd /lib/modules

    sudo tar zxvf 4.4.38-tegra-leopard.tgz

  3. Copy camera_overrides.isp to TX2 /var/nvidia/nvcam/settings (if there is isp file)

    sudo chmod 664 /var/nvidia/nvcam/settings/camera_overrides.isp

    sudo chown root:root /var/nvidia/nvcam/settings/camera_overrides.isp

  4. Reboot the TX2

  5. Open a terminal and do "nvgstcapture-1.0”. You can will get live video output.

Note: Please make sure there is a camera on J1.

------Setup Argus software

Download the files from link below.

https://www.dropbox.com/s/0t6388fsiocuvz7/argus_R28.1.tgz?dl=0

  1. sudo apt-get update

  2. sudo apt-get install cmake libgtk-3-dev libjpeg-dev libgles2-mesa-dev libgstreamer1.0-dev

  3. tar zxvf argus_R28.1.tgz

  4. cd argus

  5. mkdir build && cd build

  6. cmake …

  7. make

  8. sudo make install

  9. Do "argus_camera --device=0”, “argus_camera --device=1” and “argus_camera --device=2”to get the video output. Video0 is J1 camera, video1 is J2 camera, and video3 is J3 camera.

Note:

  1. You can also use gstreamer commands to get video output. Below is an example.

gst-launch-1.0 nvcamerasrc fpsRange=“60.0 60.0" sensor-id=0 ! ‘video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)60/1’ ! nvtee ! nvvidconv flip-method=2 ! ‘video/x-raw(memory:NVMM), format=(string)I420’ ! nvoverlaysink -e

  1. If you have cooling system (fan), you can use below commands to turn on/off the fan.

    1) switch to the root user.
    
       sudo su
    
    2) echo 255 > /sys/kernel/debug/tegra_fan/target_pwm   //turn on         
    
       echo 0 > /sys/kernel/debug/tegra_fan/target_pwm     //turn off
    
  2. If there are any new drivers, we will add them into link below.

https://www.dropbox.com/sh/j7kx7r7e6svp5b3/AAD3M7dtC_3mC4MhEIX3nBEfa?dl=0

  1. Compile the patch

If you would like to compile the patch file to get the driver. Please refer to below steps.

Download kernel code and Tool Chain from links below.

Kernel code: https://www.dropbox.com/s/awzxe90dhipfon2/kernel_src-tx2.tbz2?dl=0

GCC ToolChain: https://www.dropbox.com/sh/zf0eo7s2h5jts0k/AABzU8Ku5BOOxbHUFxFUfnqHa?dl=0

Compile the kernel under 64 bit Ubuntu OS on Intel x64 PC. (Virtual machine is fine. We are using Ubuntu 16.04 64 bit OS)

  1. Copy compile tool gcc-4.8.5-aarch64.tgz to /opt, and unzip it

    sudo tar zxvf gcc-4.8.5-aarch64.tgz

  2. Copy kernel_src.tbz2 and two patch files to /usr/src

    sudo tar xpf kernel_src-tx2.tbz2

    sudo chown -R <user_name> kernel

    sudo chown -R <user_name> hardware

    patch -p0 < tri_streaming_imx377_base28.1_TX2_NV_dtbs_20171208.patch

    patch -p0 < tri_streaming_imx377_base28.1_TX2_NV_kernel_20171208.patch

Note: <user_name> is the user name of your Ubuntu OS. For example: sudo chown -R leopard kernel

  1. Copy tx2.sh to /usr/src/kernel.

    under /usr/src/kernel, do

    source tx2.sh

  2. Create a work folder under /home:

    sudo mkdir /home/work

    sudo chown -R <user_name> /home/work

  3. In “kernel/kernel-4.4” folder, run:

    make O=$TEGRA_KERNEL_OUT tegra18_defconfig

    make O=$TEGRA_KERNEL_OUT zImage

    make O=$TEGRA_KERNEL_OUT dtbs

You will get Image and zImage under /home/work/TX2/kernel/kernel_out/arch/arm64/boot and tegra186-quill-p3310-1000-c03-00-base.dtb under /home/work/TX2/kernel/kernel_out/arch/arm64/boot/dts.

I have question.

after step 6.Open a terminal and do "nvgstcapture-1.0”. You can will get live video output.

error occurred.

nvidia@tegra-ubuntu:/$ nvgstcapture-1.0
Encoder null, cannot set bitrate!
Encoder Profile = Baseline
Supported resolutions in case of CSI Camera
  (2) : 640x480
  (3) : 1280x720
  (4) : 1920x1080
  (5) : 2104x1560
  (6) : 2592x1944
  (7) : 2616x1472
  (8) : 3840x2160
  (9) : 3896x2192
  (10): 4208x3120
  (11): 5632x3168
  (12): 5632x4224

Runtime CSI Camera Commands:

  Help : 'h'
  Quit : 'q'
  Set Capture Mode:
      mo:<val>
          (1): image
          (2): video
  Get Capture Mode:
      gmo
  Set Sensor Id (0 to 10):
      sid:<val> e.g., sid:2 
  Get Sensor Id:
      gsid
  Set sensor orientation:
      so:<val>
          (0): none
          (1): Rotate counter-clockwise 90 degrees
          (2): Rotate 180 degrees
          (3): Rotate clockwise 90 degrees
  Get sensor orientation:
      gso
  Set Whitebalance Mode:
      wb:<val>
          (0): off
          (1): auto
          (2): incandescent
          (3): fluorescent
          (4): warm-fluorescent
          (5): daylight
          (6): cloudy-daylight
          (7): twilight
          (8): shade
          (9): manual
  Get Whitebalance Mode:
      gwb
  Set Scene-Mode:
      scm:<val>
          (0): face-priority
          (1): action
          (2): portrait
          (3): landscape
          (4): night
          (5): night-portrait
          (6): theatre
          (7): beach
          (8): snow
          (9): sunset
          (10): steady-photo
          (11): fireworks
          (12): sports
          (13): party
          (14): candle-light
          (15): barcode
  Get Scene-Mode:
      gscm
  Set Color Effect Mode:
      ce:<val>
          (1): off
          (2): mono
          (3): negative
          (4): solarize
          (5): sepia
          (6): posterize
          (7): aqua
  Get Color Effect Mode:
      gce
  Set Auto-Exposure Mode:
      ae:<val>
          (1): off
          (2): on
          (3): OnAutoFlash
          (4): OnAlwaysFlash
          (5): OnFlashRedEye
  Get Auto-Exposure Mode:
      gae
  Set Flash Mode:
      f:<val>
          (0): off
          (1): on
          (2): torch
          (3): auto
  Get Flash Mode:
      gf
  Set Flicker Detection and Avoidance Mode:
      fl:<val>
          (0): off
          (1): 50Hz
          (2): 60Hz
          (3): auto
  Get Flicker Detection and Avoidance Mode:
      gfl
  Set Contrast (0 to 1):
      ct:<val> e.g., ct:0.75
  Get Contrast:
      gct
  Set Saturation (0 to 2):
      st:<val> e.g., st:1.25
  Get Saturation:
      gst
  Set Exposure Time in seconds:
      ext:<val> e.g., ext:0.033
  Get Exposure Time:
      gext
  Set Auto Exposure Lock(0/1):
      ael:<val> e.g., ael:1
  Get Auto Exposure Lock:
      gael
  Set Edge Enhancement (0 to 1):
      ee:<val> e.g., ee:0.75
  Get Edge Enhancement:
      gee
  Set ROI for AE:
      It needs five values, ROI coordinates(top,left,bottom,right)
      and weight in that order
      aer:<val> e.g., aer:20 20 400 400 1.2
  Get ROI for AE:
      gaer
  Set ROI for AWB:
      It needs five values, ROI coordinates(top,left,bottom,right)
      and weight in that order
      wbr:<val> e.g., wbr:20 20 400 400 1.2
  Get ROI for AWB:
      gwbr
  Set FPS range:
      It needs two values, FPS Range (low, high) in that order
      fpsr:<val> e.g., fpsr:15 30
  Get FPS range:
      gfpsr
  Set WB Gains:
      It needs four values (R, GR, GB, B) in that order
      wbg:<val> e.g., wbg:1.2 2.2 0.8 1.6
  Get WB Gains:
      gwbg
  Set TNR Strength (0 to 1):
      ts:<val> e.g., ts:0.75
  Get TNR Strength:
      gts
  Set TNR Mode:
      tnr:<val>
          (0): NoiseReduction_Off
          (1): NoiseReduction_Fast
          (2): NoiseReduction_HighQuality
  Get TNR Mode:
      gtnr
  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'
  Video snapshot  : enter '2' (While recording video)
  Set Preview Resolution:
      pcr:<val> e.g., pcr:3
          (2) : 640x480
          (3) : 1280x720
          (4) : 1920x1080
          (5) : 2104x1560
          (6) : 2592x1944
          (7) : 2616x1472
          (8) : 3840x2160
          (9) : 3896x2192
          (10): 4208x3120
          (11): 5632x3168
          (12): 5632x4224
  Note - For preview resolutions 4208x3120 and more use option --svs=nveglglessink
  Get Preview Resolution:
      gpcr
  Set Image Resolution:
      icr:<val> e.g., icr:3
          (2) : 640x480
          (3) : 1280x720
          (4) : 1920x1080
          (5) : 2104x1560
          (6) : 2592x1944
          (7) : 2616x1472
          (8) : 3840x2160
          (9) : 3896x2192
          (10): 4208x3120
          (11): 5632x3168
          (12): 5632x4224
  Get Image Capture Resolution:
      gicr
  Set Video Resolution:
      vcr:<val> e.g., vcr:3
          (2) : 640x480
          (3) : 1280x720
          (4) : 1920x1080
          (5) : 2104x1560
          (6) : 2592x1944
          (7) : 2616x1472
          (8) : 3840x2160
          (9) : 3896x2192
  Get Video Capture Resolution:
      gvcr


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' 


bitrate = 4000000
Encoder Profile = Baseline
Socket read error. Camera Daemon stopped functioning.....
gst_nvcamera_open() failed ret=0

** (nvgstcapture-1.0:19009): CRITICAL **: <create_capture_pipeline:4565> can't set camera to playing


** (nvgstcapture-1.0:19009): CRITICAL **: <main:5367> Capture Pipeline creation failed
** Message: <main:5374> Capture completed
** Message: <main:5424> Camera application will now exit

how can i fix ?

I connect the camera as follows.

https://leopardimaging.com/product/li-jetson-kit-imx377m12-x/

@jc.jang
Please check the sensor by “v4l2-ctl --list-devices” to know the sensor driver status first.

this is leopard team.

  1. please confirm if you have done these two teps.
    Copy and replace the tegra186-quill-p3310-1000-c03-00-base.dtb under Linux_for_Tegra/kernel/dtb
    sudo ./flash.sh jetson-tx2 mmcblk0p1
    After boot up, Copy Image, zImage to TX2 /boot.
    Reboot the TX2

  2. share dmesg log or v4l2-ctl --list-devices message, check if sensor detected.

Hi xingxing

I have question.

you say Copy Image, zImage to TX2 /boot.

In ‘/boot’, is it correct to copy the file named ‘Image’ with the name ‘zImage’?

no, just copy the two files(Image, zImage) to the /boot folder

Hi jc.jang,

Please try below steps again. We just tried it here, and it works properly on our side.

  1. Download the L4T R28.1 for TX2 from link below.

https://www.dropbox.com/sh/8p3kgws42csrulu/AADYMwGXYE2_qKjtPLVDawgta?dl=0

and follow below steps to flash the R28.1 image the TX2.
Set the TX2 to recovery mode.

sudo tar xpf Tegra186_Linux_R28.1.0_aarch64.tbz2
cd Linux_for_Tegra/rootfs/
sudo tar xpf …/…/Tegra_Linux_Sample-Root-Filesystem_R28.1.0_aarch64.tbz2
cd …
sudo ./apply_binaries.sh

Copy and replace the tegra186-quill-p3310-1000-c03-00-base.dtb under Linux_for_Tegra/kernel/dtb

sudo ./flash.sh jetson-tx2 mmcblk0p1

Note: Please make sure you copy and replace the tegra186-quill-p3310-1000-c03-00-base.dtb file.

  1. Download the binary files from link below. After boot up the TX2, Copy Image, zImage to /boot (on TX2) with below commands.

https://www.dropbox.com/sh/teej2vfqaifbf1c/AABRTl6JVV6--b5GIX9D0AHwa?dl=0

sudo cp Image /boot
sudo cp zImage /boot

  1. copy 4.4.38-tegra-leopard.tgz to /lib/modules on TX2.

sudo cp 4.4.38-tegra-leopard.tgz /lib/modules
cd /lib/modules
sudo tar zxvf 4.4.38-tegra-leopard.tgz

Note: Without this step, the WIFI won’t work after boot up.

  1. Copy camera_overrides.isp to TX2 /var/nvidia/nvcam/settings.

sudo chmod 664 /var/nvidia/nvcam/settings/camera_overrides.isp
sudo chown root:root /var/nvidia/nvcam/settings/camera_overrides.isp

Note: The ISP file will improve the image quality.

  1. Reboot the TX2

  2. Open a terminal and do "nvgstcapture-1.0”. You can will get live video output.

Note: Please make sure there is a camera on J1.

Hi SimonZhu

I did what you said.

I gave this message

nvidia@tegra-ubuntu:~$ nvgstcapture-1.0
Encoder null, cannot set bitrate!
Encoder Profile = Baseline
Supported resolutions in case of CSI Camera
  (2) : 640x480
  (3) : 1280x720
  (4) : 1920x1080
  (5) : 2104x1560
  (6) : 2592x1944
  (7) : 2616x1472
  (8) : 3840x2160
  (9) : 3896x2192
  (10): 4208x3120
  (11): 5632x3168
  (12): 5632x4224

Runtime CSI Camera Commands:

  Help : 'h'
  Quit : 'q'
  Set Capture Mode:
      mo:<val>
          (1): image
          (2): video
  Get Capture Mode:
      gmo
  Set Sensor Id (0 to 10):
      sid:<val> e.g., sid:2 
  Get Sensor Id:
      gsid
  Set sensor orientation:
      so:<val>
          (0): none
          (1): Rotate counter-clockwise 90 degrees
          (2): Rotate 180 degrees
          (3): Rotate clockwise 90 degrees
  Get sensor orientation:
      gso
  Set Whitebalance Mode:
      wb:<val>
          (0): off
          (1): auto
          (2): incandescent
          (3): fluorescent
          (4): warm-fluorescent
          (5): daylight
          (6): cloudy-daylight
          (7): twilight
          (8): shade
          (9): manual
  Get Whitebalance Mode:
      gwb
  Set Scene-Mode:
      scm:<val>
          (0): face-priority
          (1): action
          (2): portrait
          (3): landscape
          (4): night
          (5): night-portrait
          (6): theatre
          (7): beach
          (8): snow
          (9): sunset
          (10): steady-photo
          (11): fireworks
          (12): sports
          (13): party
          (14): candle-light
          (15): barcode
  Get Scene-Mode:
      gscm
  Set Color Effect Mode:
      ce:<val>
          (1): off
          (2): mono
          (3): negative
          (4): solarize
          (5): sepia
          (6): posterize
          (7): aqua
  Get Color Effect Mode:
      gce
  Set Auto-Exposure Mode:
      ae:<val>
          (1): off
          (2): on
          (3): OnAutoFlash
          (4): OnAlwaysFlash
          (5): OnFlashRedEye
  Get Auto-Exposure Mode:
      gae
  Set Flash Mode:
      f:<val>
          (0): off
          (1): on
          (2): torch
          (3): auto
  Get Flash Mode:
      gf
  Set Flicker Detection and Avoidance Mode:
      fl:<val>
          (0): off
          (1): 50Hz
          (2): 60Hz
          (3): auto
  Get Flicker Detection and Avoidance Mode:
      gfl
  Set Contrast (0 to 1):
      ct:<val> e.g., ct:0.75
  Get Contrast:
      gct
  Set Saturation (0 to 2):
      st:<val> e.g., st:1.25
  Get Saturation:
      gst
  Set Exposure Time in seconds:
      ext:<val> e.g., ext:0.033
  Get Exposure Time:
      gext
  Set Auto Exposure Lock(0/1):
      ael:<val> e.g., ael:1
  Get Auto Exposure Lock:
      gael
  Set Edge Enhancement (0 to 1):
      ee:<val> e.g., ee:0.75
  Get Edge Enhancement:
      gee
  Set ROI for AE:
      It needs five values, ROI coordinates(top,left,bottom,right)
      and weight in that order
      aer:<val> e.g., aer:20 20 400 400 1.2
  Get ROI for AE:
      gaer
  Set ROI for AWB:
      It needs five values, ROI coordinates(top,left,bottom,right)
      and weight in that order
      wbr:<val> e.g., wbr:20 20 400 400 1.2
  Get ROI for AWB:
      gwbr
  Set FPS range:
      It needs two values, FPS Range (low, high) in that order
      fpsr:<val> e.g., fpsr:15 30
  Get FPS range:
      gfpsr
  Set WB Gains:
      It needs four values (R, GR, GB, B) in that order
      wbg:<val> e.g., wbg:1.2 2.2 0.8 1.6
  Get WB Gains:
      gwbg
  Set TNR Strength (0 to 1):
      ts:<val> e.g., ts:0.75
  Get TNR Strength:
      gts
  Set TNR Mode:
      tnr:<val>
          (0): NoiseReduction_Off
          (1): NoiseReduction_Fast
          (2): NoiseReduction_HighQuality
  Get TNR Mode:
      gtnr
  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'
  Video snapshot  : enter '2' (While recording video)
  Set Preview Resolution:
      pcr:<val> e.g., pcr:3
          (2) : 640x480
          (3) : 1280x720
          (4) : 1920x1080
          (5) : 2104x1560
          (6) : 2592x1944
          (7) : 2616x1472
          (8) : 3840x2160
          (9) : 3896x2192
          (10): 4208x3120
          (11): 5632x3168
          (12): 5632x4224
  Note - For preview resolutions 4208x3120 and more use option --svs=nveglglessink
  Get Preview Resolution:
      gpcr
  Set Image Resolution:
      icr:<val> e.g., icr:3
          (2) : 640x480
          (3) : 1280x720
          (4) : 1920x1080
          (5) : 2104x1560
          (6) : 2592x1944
          (7) : 2616x1472
          (8) : 3840x2160
          (9) : 3896x2192
          (10): 4208x3120
          (11): 5632x3168
          (12): 5632x4224
  Get Image Capture Resolution:
      gicr
  Set Video Resolution:
      vcr:<val> e.g., vcr:3
          (2) : 640x480
          (3) : 1280x720
          (4) : 1920x1080
          (5) : 2104x1560
          (6) : 2592x1944
          (7) : 2616x1472
          (8) : 3840x2160
          (9) : 3896x2192
  Get Video Capture Resolution:
      gvcr


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' 


bitrate = 4000000
Encoder Profile = Baseline
Socket read error. Camera Daemon stopped functioning.....
gst_nvcamera_open() failed ret=0

** (nvgstcapture-1.0:2075): CRITICAL **: <create_capture_pipeline:4565> can't set camera to playing


** (nvgstcapture-1.0:2075): CRITICAL **: <main:5367> Capture Pipeline creation failed
** Message: <main:5374> Capture completed
** Message: <main:5424> Camera application will now exit

here is picture about my whole kit.

http://planjang.tistory.com/103

Hi jc.jang,
Thanks for the picture. It looks like you connect two sensor boards to J2 and J3 of the adapter board. Please make sure there is a camera on J1 because camera on J1 is video0. The “nvgstcapture-1.0” only run the camera video0.
If needed, you can use the argus command " argus_camera --device=1" and “argus_camera --device=2” to run video1 and video2 after you install the argus software based on our driver guide.

Hi Simonzhu
Thanks for advice.

As you said, I setup Argus software like this.

------Setup Argus software



Download the files from link below.



https://www.dropbox.com/s/0t6388fsiocuvz7/argus_R28.1.tgz?dl=0



1. sudo apt-get update

2. sudo apt-get install cmake libgtk-3-dev libjpeg-dev libgles2-mesa-dev libgstreamer1.0-dev

3. tar zxvf argus_R28.1.tgz

4. cd argus

5. mkdir build && cd build

6. cmake ..

7. make

8. sudo make install

9. Do "argus_camera --device=0”, “argus_camera --device=1” and “argus_camera --device=2”to get the video output.  Video0 is J1 camera, video1 is J2 camera, and video3 is J3 camera.

but i error occurred. like this

nvidia@tegra-ubuntu:~/Downloads/argus/build$ argus_camera --device=1
Executing Argus Sample Application (argus_camera)
Argus Version: 0.96.2 (multi-process)
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, initialize:848 No cameras available
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, Dispatcher:801 (propagating)
(NvCameraUtils) Error InvalidState: Mutex already initialized (in Mutex.cpp, function initialize(), line 41)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/ClientSocketManager.cpp, function open(), line 54)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function openSocketConnection(), line 205)
(Argus) Error InvalidState: Cannot create camera provider (in src/rpc/socket/client/SocketClientDispatch.cpp, function createCameraProvider(), line 129)
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, initialize:840 Failed to create CameraProvider
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, getInstance:824 Initalization failed
(Argus) Error InvalidState: Receive thread is not running cannot send. (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 94)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 101)
(Argus) Error InvalidState: Receive thread is not running cannot send. (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 94)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 101)
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, initialize:840 Failed to create CameraProvider
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, getInstance:824 Initalization failed
(NvCameraUtils) Error InvalidState: Mutex already initialized (in Mutex.cpp, function initialize(), line 41)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/ClientSocketManager.cpp, function open(), line 54)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function openSocketConnection(), line 205)
(Argus) Error InvalidState: Cannot create camera provider (in src/rpc/socket/client/SocketClientDispatch.cpp, function createCameraProvider(), line 129)
(Argus) Error InvalidState: Receive thread is not running cannot send. (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 94)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 101)
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, initialize:840 Failed to create CameraProvider
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, getInstance:824 Initalization failed
(Argus) Error InvalidState: Receive thread is not running cannot send. (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 94)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 101)
(Argus) Error InvalidState: Receive thread is not running cannot send. (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 94)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 101)
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, initialize:840 Failed to create CameraProvider
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, getInstance:824 Initalization failed
(NvCameraUtils) Error InvalidState: Mutex already initialized (in Mutex.cpp, function initialize(), line 41)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/ClientSocketManager.cpp, function open(), line 54)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function openSocketConnection(), line 205)
(Argus) Error InvalidState: Cannot create camera provider (in src/rpc/socket/client/SocketClientDispatch.cpp, function createCameraProvider(), line 129)
(Argus) Error InvalidState: Receive thread is not running cannot send. (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 94)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 101)
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, initialize:840 Failed to create CameraProvider
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, getInstance:824 Initalization failed
(Argus) Error InvalidState: Receive thread is not running cannot send. (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 94)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 101)
(Argus) Error InvalidState: Receive thread is not running cannot send. (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 94)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 101)
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, initialize:840 Failed to create CameraProvider
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, getInstance:824 Initalization failed
terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_M_construct null not valid
Aborted (core dumped)
nvidia@tegra-ubuntu:~/Downloads/argus/build$ argus_camera --device=2
Executing Argus Sample Application (argus_camera)
Argus Version: 0.96.2 (multi-process)
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, initialize:848 No cameras available
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, Dispatcher:801 (propagating)
(NvCameraUtils) Error InvalidState: Mutex already initialized (in Mutex.cpp, function initialize(), line 41)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/ClientSocketManager.cpp, function open(), line 54)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function openSocketConnection(), line 205)
(Argus) Error InvalidState: Cannot create camera provider (in src/rpc/socket/client/SocketClientDispatch.cpp, function createCameraProvider(), line 129)
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, initialize:840 Failed to create CameraProvider
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, getInstance:824 Initalization failed
(Argus) Error InvalidState: Receive thread is not running cannot send. (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 94)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 101)
(Argus) Error InvalidState: Receive thread is not running cannot send. (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 94)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 101)
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, initialize:840 Failed to create CameraProvider
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, getInstance:824 Initalization failed
(NvCameraUtils) Error InvalidState: Mutex already initialized (in Mutex.cpp, function initialize(), line 41)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/ClientSocketManager.cpp, function open(), line 54)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function openSocketConnection(), line 205)
(Argus) Error InvalidState: Cannot create camera provider (in src/rpc/socket/client/SocketClientDispatch.cpp, function createCameraProvider(), line 129)
(Argus) Error InvalidState: Receive thread is not running cannot send. (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 94)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 101)
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, initialize:840 Failed to create CameraProvider
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, getInstance:824 Initalization failed
(Argus) Error InvalidState: Receive thread is not running cannot send. (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 94)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 101)
(Argus) Error InvalidState: Receive thread is not running cannot send. (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 94)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 101)
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, initialize:840 Failed to create CameraProvider
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, getInstance:824 Initalization failed
(NvCameraUtils) Error InvalidState: Mutex already initialized (in Mutex.cpp, function initialize(), line 41)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/ClientSocketManager.cpp, function open(), line 54)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function openSocketConnection(), line 205)
(Argus) Error InvalidState: Cannot create camera provider (in src/rpc/socket/client/SocketClientDispatch.cpp, function createCameraProvider(), line 129)
(Argus) Error InvalidState: Receive thread is not running cannot send. (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 94)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 101)
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, initialize:840 Failed to create CameraProvider
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, getInstance:824 Initalization failed
(Argus) Error InvalidState: Receive thread is not running cannot send. (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 94)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 101)
(Argus) Error InvalidState: Receive thread is not running cannot send. (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 94)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 101)
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, initialize:840 Failed to create CameraProvider
Error generated. /home/nvidia/Downloads/argus/apps/camera/modules/Dispatcher.cpp, getInstance:824 Initalization failed
terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_M_construct null not valid
Aborted (core dumped)

Hi jc.jang,

If you plug the camera to J1 of the adapter board and do “nvgstcapture-1.0”, can you see video output?
Could you do “ls /dev” to see if there is video0 under /dev ?

Hi SimonZhu

I plug the camera to J1 of the adapter board like this :

http://planjang.tistory.com/104

and do “nvgstcapture-1.0” then I can’t see video output.

also, I couldn’t see video0 under /dev.

Thank you.

Hi jc.jang,

Did you copy and replace the tegra186-quill-p3310-1000-c03-00-base.dtb under Linux_for_Tegra/kernel/dtb before you flash the OS image to TX2?

You mean tegra186-quill-p3310-1000-c03-00-base.dtb in Ubuntu host pc to TX2 under Linux_for_Tegra/kernel/dtb?

Yes.

actually, There is not Linux_for_Tegra/kernel/dtb in my TX2.

Hi jc.jang,
No, it’s not on the TX2. Linux_for_Tegra/kernel/dtb is on your Ubuntu host PC.

After you did below steps on your Ubuntu host pc , you will see the Linux_for_Tegra/kernel/dtb.

  1. Download the L4T R28.1 for TX2 from link below.

and follow below steps to flash the R28.1 image the TX2.
Set the TX2 to recovery mode.

sudo tar xpf Tegra186_Linux_R28.1.0_aarch64.tbz2
cd Linux_for_Tegra/rootfs/
sudo tar xpf …/…/Tegra_Linux_Sample-Root-Filesystem_R28.1.0_aarch64.tbz2
cd …
sudo ./apply_binaries.sh

on TX2, ‘Linux_for_Tegra / kernel / dtb’ can be made when i type the command ‘sudo ./flash.sh jetson-tx2 mmcblk0p1’. Is that correct?

I have followed your steps 3 times and I am not successful! The /dev/video0 is not created after going thru your steps. Also, when untar 4.4.38-tegra-leopard.tgz in /lib/modules, the build and source points your local directory /home/simon/…

I am getting same errors i.e nvgstcapture-1.0 fails and nvcamera-daemon faults.

Please help.

Hi jc.jang and nkumarpsjes,
It’s strange. I have my colleague to test my steps again, and he can get video output successfully.

After you do below steps, you can will see the Linux_for_Tegra / kernel / dtb. Please check the pictures in link below. Then you can copy and replace the tegra186-quill-p3310-1000-c03-00-base.dtb, and do sudo ./flash.sh jetson-tx2 mmcblk0p1 to flash the TX2. After TX2 boot up, copy the Image and zImage based my guide.

[i]1. Download the L4T R28.1 for TX2 from link below.

and follow below steps to flash the R28.1 image the TX2.
Set the TX2 to recovery mode.

sudo tar xpf Tegra186_Linux_R28.1.0_aarch64.tbz2
cd Linux_for_Tegra/rootfs/
sudo tar xpf …/…/Tegra_Linux_Sample-Root-Filesystem_R28.1.0_aarch64.tbz2
cd …
sudo ./apply_binaries.sh[/i]

If above steps still don’t work, could you take some snapshots for us for how you flash the TX2?

Strange. I have the same output for tar contents.
Ok, when you say “Then you can copy and replace the tegra186-quill-p3310-1000-c03-00-base.dtb”, you mean replace the one in Linux_for_Tegra/kernel/dtb - what are we replacing with?
Here is what I did:

  1. Downloaded Driver.zip from https://www.dropbox.com/sh/jobztkd8p2vcy78/AAAXj-acgl5RJIf5CmEmOVQha?dl=0

2 Copied Driver/Binaries/tegra186-quill-p3310-1000-c03-00-base.dtb to Linux_for_Tegra/kernel/dtb

  1. sudo ./flash.sh jetson-tx2 mmcblk0p1 to flash the TX2

Do we replace Linux_for_Tegra/kernel/dtb/tegra186-quill-p3310-1000-c03-00-base.dtb after running sudo ./appy_binaries.sh ?