No image capture from camera via FPD Link for Orin nano R36.3 module

Good health to all.
I run cameras via ser-des FPD Link on different modules.
What is currently working

  1. Working video capture on jetson nano one channel
  2. Works two virtual channels on Xvier NX
  3. Two virtual channels work on Orin NX

But for some reason it does not want to work capture on orin nano module.

Orin nano is not much different from Orin NX.
In Orin nano we use the same drivers and dtb settings as for Orin NX.
In Orin NX the image capture is there.

gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! 'video/x-raw(memory:NVMM), width=(int)1920,height=(int)1080,framerate=60/1' ! nvvidconv flip-method=0 ! 'video/x-raw, format=(string)I420' ! xvimagesink sync=false --verbose
libEGL warning: DRI2: failed to authenticate
Setting pipeline to PAUSED ...
ERROR: from element /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0: Could not initialise Xv output
Additional debug info:
../sys/xvimage/xvimagesink.c(1806): gst_xv_image_sink_open (): /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0:
No Xv Port available
ERROR: pipeline doesn't want to preroll.
Failed to set pipeline to PAUSED.
Setting pipeline to NULL ...
Freeing pipeline ...
(Argus) Error EndOfFile: Unexpected error in reading socket (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 277)
(Argus) Error EndOfFile: Receive worker failure, notifying 1 waiting threads (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 350)
(Argus) Error InvalidState: Argus client is exiting with 1 outstanding client threads (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 366)
(Argus) Error EndOfFile: Receiving thread terminated with error (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadWrapper(), line 379)
(Argus) Error EndOfFile: Client thread received an error from socket (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 145)
(Argus) Error EndOfFile:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 91)

In R36.3, rootfs does not include the nv** plugins for gstreamer
We installed them separately
sudo apt install nvidia-jetpack.
Could this be the problem?

If you run

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

It’s all working.

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps

The cameras in the system are visible and the entire driver and dts stack is running in Orin NX.

The cameras in the system are visible and the entire driver and dts stack is running in Orin NX.

It is not clear what the problem is in Orin nano?

hello akvadak66,

may I know which Jetpack release version you’re working with?
did you also setting environment variable with… $ export DISPLAY=:0?

anyways,
let’s try disable preview and shows frame-rate only to test your camera stream.
for instance,
$ gst-launch-1.0 nvarguscamerasrc sensor-id=0 sensor-mode=0 ! 'video/x-raw(memory:NVMM),width=1920, height=1080, framerate=30/1, format=NV12' ! nvvidconv ! fpsdisplaysink text-overlay=0 name=sink_0 video-sink=fakesink sync=0 -v

Hi JerryChang!
Thanks for the reply.

sudo apt-cache show nvidia-jetpack

Package: nvidia-jetpack
Source: nvidia-jetpack (6.0)
Version: 6.0+b106
Architecture: arm64
Maintainer: NVIDIA Corporation
Installed-Size: 194
Depends: nvidia-jetpack-runtime (= 6.0+b106), nvidia-jetpack-dev (= 6.0+b106)
Homepage: http://developer.nvidia.com/jetson
Priority: standard
Section: metapackages
Filename: pool/main/n/nvidia-jetpack/nvidia-jetpack_6.0+b106_arm64.deb
Size: 29296
SHA256: 561d38f76683ff865e57b2af41e303be7e590926251890550d2652bdc51401f8
SHA1: ef3fca0c1b5c780b2bad1bafae6437753bd0a93f
MD5sum: 95de21b4fce939dee11c6df1f2db0fa5
Description: NVIDIA Jetpack Meta Package
Description-md5: ad1462289bdbc54909ae109d1d32c0a8

Package: nvidia-jetpack
Source: nvidia-jetpack (6.0)
Version: 6.0+b87
Architecture: arm64
Maintainer: NVIDIA Corporation
Installed-Size: 194
Depends: nvidia-jetpack-runtime (= 6.0+b87), nvidia-jetpack-dev (= 6.0+b87)
Homepage: http://developer.nvidia.com/jetson
Priority: standard
Section: metapackages
Filename: pool/main/n/nvidia-jetpack/nvidia-jetpack_6.0+b87_arm64.deb
Size: 29298

Yes, I do export DISPLAY=:0.

It’s not working.

gst-launch-1.0 nvarguscamerasrc sensor-id=0 sensor-mode=0 ! 'video/x-raw(memory:NVMM),width=1920, height=1080, framerate=30/1, format=NV12' ! nvvidconv ! fpsdisplaysink text-overlay=0 name=sink_0 video-sink=fakesink sync=0 -v
libEGL warning: DRI2: failed to authenticate
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
/GstPipeline:pipeline0/GstFPSDisplaySink:sink_0/GstFakeSink:fakesink0: sync = false
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, execute:792 No cameras available
/GstPipeline:pipeline0/GstNvArgusCameraSrc:nvarguscamerasrc0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1
/GstPipeline:pipeline0/Gstnvvconv:nvvconv0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstFPSDisplaySink:sink_0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstFPSDisplaySink:sink_0/GstFakeSink:fakesink0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstFPSDisplaySink:sink_0.GstGhostPad:sink: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1
/GstPipeline:pipeline0/Gstnvvconv:nvvconv0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1
Redistribute latency...
/GstPipeline:pipeline0/GstFPSDisplaySink:sink_0/GstFakeSink:fakesink0: sync = false
Got EOS from element "pipeline0".
Execution ended after 0:00:00.006051298
Setting pipeline to NULL ...
Freeing pipeline ...
(Argus) Error EndOfFile: Unexpected error in reading socket (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 277)
(Argus) Error EndOfFile: Receive worker failure, notifying 1 waiting threads (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 350)
(Argus) Error InvalidState: Argus client is exiting with 1 outstanding client threads (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 366)
(Argus) Error EndOfFile: Receiving thread terminated with error (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadWrapper(), line 379)
(Argus) Error EndOfFile: Client thread received an error from socket (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 145)
(Argus) Error EndOfFile:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 91)

It looks like libargus is the problem.
But everything works on Orin NX

hello akvadak66,

let’s give it a try with infinite timeout enabled,
you may see-also Topic 293579 to apply SCF pre-built update to enable infinite timeout property, enableCamInfiniteTimeout=1

please double check sensor device tree settings, especially the Property-Value Pairs which used to initial camera stream.
besides, is it possible for moving forward to JetPack 6.1 for verification?

Hello JerryChang.
Thank you for your reply.

Checked it and it doesn’t work.

I installed the new R36.4 distribution.
It uses JetPack 6.1

 sudo apt-cache show nvidia-jetpack

Package: nvidia-jetpack
Source: nvidia-jetpack (6.1)
Version: 6.1+b123
Architecture: arm64
Maintainer: NVIDIA Corporation
Installed-Size: 194
Depends: nvidia-jetpack-runtime (= 6.1+b123), nvidia-jetpack-dev (= 6.1+b123)
Homepage: http://developer.nvidia.com/jetson
Priority: standard
Section: metapackages
Filename: pool/main/n/nvidia-jetpack/nvidia-jetpack_6.1+b123_arm64.deb
Size: 29312
SHA256: b6475a6108aeabc5b16af7c102162b7c46c36361239fef6293535d05ee2c2929
SHA1: f0984a6272c8f3a70ae14cb2ca6716b8c1a09543
MD5sum: a167745e1d88a8d7597454c8003fa9a4
Description: NVIDIA Jetpack Meta Package
Description-md5: ad1462289bdbc54909ae109d1d32c0a8

Orin nano does not work and behaves the same way as in the case of R36.3

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

v4l2-ctl -d /dev/video1 --set-fmt-video=width=1920,height=1080,pixelformat=RG10 --set-ctrl bypass_mode=0,sensor_mode=1 --stream-mmap --stream-count=100

It works for two virtual channels.

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! 'video/x-raw(memory:NVMM), width=(int)1920,height=(int)1080,framerate=60/1' ! nvvidconv flip-method=0 ! 'video/x-raw, format=(string)I420' ! xvimagesink sync=false --verbose

But there is no image capture.
Error below

libEGL warning: DRI2: failed to authenticate
Setting pipeline to PAUSED ...
ERROR: from element /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0: Could not initialise Xv output
Additional debug info:
../sys/xvimage/xvimagesink.c(1806): gst_xv_image_sink_open (): /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0:
No Xv Port available
ERROR: pipeline doesn't want to preroll.
Failed to set pipeline to PAUSED.
Setting pipeline to NULL ...
Freeing pipeline ...
(Argus) Error EndOfFile: Unexpected error in reading socket (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 277)
(Argus) Error EndOfFile: Receive worker failure, notifying 1 waiting threads (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 350)
(Argus) Error InvalidState: Argus client is exiting with 1 outstanding client threads (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 366)
(Argus) Error EndOfFile: Receiving thread terminated with error (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadWrapper(), line 379)
(Argus) Error EndOfFile: Client thread received an error from socket (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 145)
(Argus) Error EndOfFile:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 92)

Note to self.

I have two modules Orin nano and Orin NX.

The module is used with a carrier board in which an NVME SSD is installed.

The Orin nano module was installed in the carrier board and Linux R36.4 was installed.

After that the necessary drivers and dtb were assembled.

With the Orin nano module there is no image capture.

I then inserted the Orin NX module into the carrier board (instead of Orin nano) and image capture from the two cameras worked.

Please note that I inserted the Orin NX module and did not change anything in the system.

I did not change Image and dtb.

Why capture doesn’t work in Orin nano

hello akvadak66,

may I know the SKUs of your Orin NX and Orin Nano?
as you can see in the Porting the Linux Kernel Device Tree section, it uses different dtb file for the supported module SKU.

let’s narrow down the issue,
had you tried re-flash the Orin Nano + your carrier board with r36.4 completely?

Hello JerryChang.


Orin NX

Orin nano

Yes I know that different modules require different dtb’s but…

I wrote above, now I’ll try to tell you what is done step by step.

  1. The Orin nano module is installed in our carrier board
  2. NVME disk installed
  3. through recovery mode, R36.4 image is written.
    Please note that for Orin nano module R36.4 is written to NVME disk.
    Everything works.
  4. In the folder /boot/dtb/kernel_tegra234-p3768-0000+p3767-0004-nv.dtb - this is the default dtb installed by the system for orin nano.
  5. Assemble the necessary driver modules imx477 and FPD link module ds90ub954
  6. Modify and build the dtb for our hardware
  7. Add and register our modules to the system
  8. In the /boot/dtb/ folder copy the file tegra234-p3768-0000+p3767-0004-nv.dtb
  9. In the /boot/extlinux/extlinux.conf file add the following line
    FDT /boot/dtb/tegra234-p3768-0000+p3767-0004-nv.dtb
  10. Reboot and see our cameras :
 media-ctl -p -d /dev/media0
Media controller API version 5.15.148

Media device information
------------------------
driver          tegra-camrtc-ca
model           NVIDIA Tegra Video Input Device
serial
bus info
hw revision     0x3
driver version  5.15.148

Device topology
- entity 1: 13e00000.host1x:nvcsi@15a00000- (2 pads, 2 links)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev0
        pad0: Sink
                <- "imx477 0-0010":0 [ENABLED]
        pad1: Source
                -> "vi-output, imx477 0-0010":0 [ENABLED]

- entity 4: 13e00000.host1x:nvcsi@15a00000- (2 pads, 2 links)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev1
        pad0: Sink
                <- "imx477 0-001c":0 [ENABLED]
        pad1: Source
                -> "vi-output, imx477 0-001c":0 [ENABLED]

- entity 7: imx477 0-0010 (1 pad, 1 link)
            type V4L2 subdev subtype Sensor flags 0
            device node name /dev/v4l-subdev2
        pad0: Source
                [fmt:SRGGB10_1X10/3840x2160 field:none colorspace:srgb]
                -> "13e00000.host1x:nvcsi@15a00000-":0 [ENABLED]

- entity 9: vi-output, imx477 0-0010 (1 pad, 1 link)
            type Node subtype V4L flags 0
            device node name /dev/video0
        pad0: Sink
                <- "13e00000.host1x:nvcsi@15a00000-":1 [ENABLED]

- entity 23: imx477 0-001c (1 pad, 1 link)
             type V4L2 subdev subtype Sensor flags 0
             device node name /dev/v4l-subdev3
        pad0: Source
                [fmt:SRGGB10_1X10/3840x2160 field:none colorspace:srgb]
                -> "13e00000.host1x:nvcsi@15a00000-":0 [ENABLED]

- entity 25: vi-output, imx477 0-001c (1 pad, 1 link)
             type Node subtype V4L flags 0
             device node name /dev/video1
        pad0: Sink
                <- "13e00000.host1x:nvcsi@15a00000-":1 [ENABLED]
  1. Run:
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat=RG10 --set-ctrl bypass_mode=0,sensor_mode=1 --stream-mmap --stream-count=1000
and
v4l2-ctl -d /dev/video1 --set-fmt-video=width=1920,height=1080,pixelformat=RG10 --set-ctrl bypass_mode=0,sensor_mode=1 --stream-mmap --stream-count=1000

Frame counting works

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps

  1. Start image capture
gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! 'video/x-raw(memory:NVMM), width=(int)1920,height=(int)1080,framerate=60/1' ! nvvidconv ! xvimagesink sync=false --verbose

All ends with an error

libEGL warning: DRI2: failed to authenticate
Setting pipeline to PAUSED ...
ERROR: from element /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0: Could not initialise Xv output
Additional debug info:
../sys/xvimage/xvimagesink.c(1806): gst_xv_image_sink_open (): /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0:
No Xv Port available
ERROR: pipeline doesn't want to preroll.
Failed to set pipeline to PAUSED.
Setting pipeline to NULL ...
Freeing pipeline ...
(Argus) Error EndOfFile: Unexpected error in reading socket (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 277)
(Argus) Error EndOfFile: Receive worker failure, notifying 1 waiting threads (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 350)
(Argus) Error InvalidState: Argus client is exiting with 1 outstanding client threads (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 366)
(Argus) Error EndOfFile: Receiving thread terminated with error (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadWrapper(), line 379)
(Argus) Error EndOfFile: Client thread received an error from socket (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 145)
(Argus) Error EndOfFile:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 92)

This was all done with the Orin nano module


Now I don’t change anything in the system.
Everything remains as it is.
I just turn off the board and replace the Orin nano module with the Orin Nx module in the connector.
Once again I emphasize that in the system dtb remains for Orin nano
/boot/dtb/tegra234-p3768-0000+p3767-0004-nv.dtb
13. Turning on the board with Orin NX module
I’ll tell you right away that the system is not always booted (because we have dtb for another module), but when the system is booted I can capture the image.

gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! 'video/x-raw(memory:NVMM), width=(int)1920,height=(int)1080,framerate=60/1' ! nvvidconv ! xvimagesink sync=false --verbose

I can see the image on the screen.

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstNvArgusCameraSrc:nvarguscamerasrc0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/Gstnvvconv:nvvconv0.GstPad:src: caps = video/x-raw, width=(int)1920, height=(int)1080, framerate=(fraction)60/1, format=(string)YUY2
/GstPipeline:pipeline0/GstXvImageSink:xvimagesink0.GstPad:sink: caps = video/x-raw, width=(int)1920, height=(int)1080, framerate=(fraction)60/1, format=(string)YUY2
/GstPipeline:pipeline0/Gstnvvconv:nvvconv0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)60/1
GST_ARGUS: Creating output stream
CONSUMER: Waiting until producer is connected...
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 3840 x 2160 FR = 29,999999 fps Duration = 33333334 ; Analog Gain range min 1,000000, max 22,250000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1920 x 1080 FR = 59,999999 fps Duration = 16666667 ; Analog Gain range min 1,000000, max 22,250000; Exposure Range min 13000, max 683709000;

GST_ARGUS: Running with following settings:
   Camera index = 0
   Camera mode  = 1
   Output Stream W = 1920 H = 1080
   seconds to Run    = 0
   Frame Rate = 59,999999
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
CONSUMER: Producer has connected; continuing.
Redistribute latency...
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:50.090348218

What is wrong with Orin nano?

hello akvadak66,

may I know what’s the output format types after FPDLink?


BTW,
there’s one difference, Orin Nano does not have the NVENC engine.
you may see-also Camera and Encoding Pipelines for another testing.

Hello JerryChang.

The DS90UB954-Q1 supports two main FPD-Link III operating modes:
• CSI-2 Mode (DS90UB953-Q1 and DS90UB935-Q1 compatible)
• RAW Mode (DS90UB913A-Q1 and DS90UB933-Q1 compatible)

We use DS90UB953 serialisers.
Therefore, we use CSI-2 mode
The DS90UB953->DS90UD954 (Ser-Des) bundle sends signals from our imx477 sensor through the coaxial cable.

FPD Link works on the modules
Jetson Nano one channel (nano does not support virtual channels)
Jetson Xavier NX two channels
Jetson Orin NX two channels

Problem with Orin Nano

I checked it doesn’t work.

How important is this to virtualisation?
NVENC engine what role does it play?
Does the NVENC engine need to be configured in dtb?

hello akvadak66,

I’m still wondering this is the issue related to BOARDSKU.
as you can see in the board configuration file, it applies different DTB binary file accordingly.

update_flash_args_common()
{
...
        elif [ "${board_sku}" = "0001" ]; then
                BPFDTB_FILE="tegra234-bpmp-3767-0001-3509-a02.dtb";
                DTB_FILE=tegra234-p3768-0000+p3767-0001-nv.dtb;
        elif [ "${board_sku}" = "0003" ]; then
                BPFDTB_FILE="tegra234-bpmp-3767-0003-3509-a02.dtb";
                DTB_FILE=tegra234-p3768-0000+p3767-0003-nv.dtb;
        elif [ "${board_sku}" = "0004" ]; then
                BPFDTB_FILE="tegra234-bpmp-3767-0004-3509-a02.dtb";
                DTB_FILE=tegra234-p3768-0000+p3767-0004-nv.dtb;
        elif [ "${board_sku}" = "0005" ]; then
                BPFDTB_FILE="tegra234-bpmp-3767-0003-3509-a02.dtb";
                DTB_FILE=tegra234-p3768-0000+p3767-0005-nv.dtb;

hence, let’s check the board SKUs via reading Jetson EEPROM.
for instance,
(1) Orin NX 16GB, BOARDID=3767, BOARDSKU=0000, FAB=300.

$ sudo i2cdump -f -y 0 0x50

No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 02 00 fe 00 00 00 00 00 00 00 00 ff 00 00 00 00    ?.?.............
10: 00 01 00 01 36 39 39 2d 31 33 37 36 37 2d 30 30    .?.?699-13767-00
20: 30 30 2d 33 30 30 20 4a 2e 31 00 00 00 00 00 00    00-300 J.1......

(2) Orin Nano 8GB, BOARDID=3767, BOARDSKU=0005, FAB=RC1.

$ sudo i2cdump -f -y 0 0x50

No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 02 00 fe 00 00 00 00 00 00 00 00 ff 00 00 00 00    ?.?.............
10: 00 01 00 01 36 39 39 2d 31 33 37 36 37 2d 30 30    .?.?699-13767-00
20: 30 35 2d 52 43 31 20 42 2e 34 00 00 00 00 00 00    05-RC1 B.4......

Hello JerryChang.

Dumps from our boards

(1) Orin NX 8GB, BOARDID=3767, BOARDSKU=0001, FAB=300.

No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 02 00 fe 00 00 00 00 00 00 00 00 ff 00 00 00 00    ?.?.............
10: 00 01 00 01 36 39 39 2d 31 33 37 36 37 2d 30 30    .?.?699-13767-00
20: 30 31 2d 33 30 30 20 48 2e 33 00 00 00 00 00 00    01-300 H.3......
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
40: b0 48 00 00 b0 cc ed 2d b0 48 31 36 31 31 33 32    ?H..???-?H161132
50: 33 36 35 30 32 31 37 00 00 00 00 00 00 00 00 00    3650217.........
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
90: 00 00 00 00 00 00 4e 56 43 42 00 ff 4d 31 00 00    ......NVCB..M1..
a0: 00 00 00 00 00 00 00 00 00 00 00 00 b0 cc ed 2d    ............???-
b0: b0 48 01 00 00 00 00 00 00 00 00 00 00 00 00 00    ?H?.............
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2d    ...............-

(2) Orin Nano 4GB, BOARDID=3767, BOARDSKU=0004, FAB=300.

No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 02 00 fe 00 00 00 00 00 00 00 00 ff 00 00 00 00    ?.?.............
10: 00 01 00 01 36 39 39 2d 31 33 37 36 37 2d 30 30    .?.?699-13767-00
20: 30 34 2d 33 30 30 20 4e 2e 32 00 00 00 00 00 00    04-300 N.2......
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
40: b0 48 00 00 72 4d f0 2d b0 48 31 36 31 32 38 32    ?H..rM?-?H161282
50: 33 36 35 30 32 30 36 00 00 00 00 00 00 00 00 00    3650206.........
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
90: 00 00 00 00 00 00 4e 56 43 42 00 ff 4d 31 00 00    ......NVCB..M1..
a0: 00 00 00 00 00 00 00 00 00 00 00 00 72 4d f0 2d    ............rM?-
b0: b0 48 01 00 00 00 00 00 00 00 00 00 00 00 00 00    ?H?.............
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06    ...............?

Hello JerryChang.

Any update for us would be deeply appreciated

hello akvadak66,

since your camera stream works with v4l2 IOCTL, this failure seems related to library dependency.
please double check you’ve install the latest utility,
for instance,
$ sudo apt-get install nvidia-l4t-gstreamer
$ sudo apt install nvidia-l4t-jetson-multimedia-api

besides, please disassembler your dtb file into text file for cross checking.
$ dtc -I dtb -O dts -o Nano-dtb.txt kernel_tegra234-p3768-0000+p3767-0003-nv.dtb

Hi JerryChang.
Checked the latest versions.

sudo apt-get install nvidia-l4t-gstreamer

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
nvidia-l4t-gstreamer is already the newest version (36.4.0-20240912212859).
The following packages were automatically installed and are no longer required:
  gdal-data libaec0 libarmadillo10 libarpack2 libavcodec-dev libavformat-dev libavutil-dev libblosc1 libcfitsio9 libcharls2 libdc1394-dev libdouble-conversion3
  libevent-core-2.1-7 libevent-pthreads-2.1-7 libexif-dev libfabric1 libfreexl1 libfyba0 libgdal30 libgdcm-dev libgdcm3.0 libgeos-c1v5 libgeos3.10.2 libgeotiff5
  libgl2ps1.4 libglew2.2 libgphoto2-dev libhdf4-0-alt libhdf5-103-1 libhdf5-hl-100 libheif1 libhwloc-plugins libhwloc15 libilmbase-dev libkmlbase1 libkmldom1
  libkmlengine1 liblept5 libminizip1 libmysqlclient21 libnetcdf19 libodbc2 libodbcinst2 libogdi4.1 libopencv-calib3d4.5d libopencv-contrib4.5d libopencv-dnn4.5d
  libopencv-features2d4.5d libopencv-flann4.5d libopencv-highgui4.5d libopencv-imgcodecs4.5d libopencv-imgproc4.5d libopencv-ml4.5d libopencv-objdetect4.5d
  libopencv-photo4.5d libopencv-shape4.5d libopencv-stitching4.5d libopencv-superres4.5d libopencv-video4.5d libopencv-videoio4.5d libopencv-videostab4.5d
  libopencv-viz4.5d libopenexr-dev libopenmpi3 libpmix2 libpq5 libproj22 libraw1394-dev librttopo1 libsocket++1 libspatialite7 libsuperlu5 libswresample-dev
  libswscale-dev libsz2 libtbb-dev libtesseract4 libucx0 liburiparser1 libvtk9.1 libxerces-c3.2 libxnvctrl0 mysql-common proj-data unixodbc-common
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 163 not upgraded.

 sudo apt install nvidia-l4t-jetson-multimedia-api
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
nvidia-l4t-jetson-multimedia-api is already the newest version (36.4.0-20240912212859).
The following packages were automatically installed and are no longer required:
  gdal-data libaec0 libarmadillo10 libarpack2 libavcodec-dev libavformat-dev libavutil-dev libblosc1 libcfitsio9 libcharls2 libdc1394-dev libdouble-conversion3
  libevent-core-2.1-7 libevent-pthreads-2.1-7 libexif-dev libfabric1 libfreexl1 libfyba0 libgdal30 libgdcm-dev libgdcm3.0 libgeos-c1v5 libgeos3.10.2 libgeotiff5
  libgl2ps1.4 libglew2.2 libgphoto2-dev libhdf4-0-alt libhdf5-103-1 libhdf5-hl-100 libheif1 libhwloc-plugins libhwloc15 libilmbase-dev libkmlbase1 libkmldom1
  libkmlengine1 liblept5 libminizip1 libmysqlclient21 libnetcdf19 libodbc2 libodbcinst2 libogdi4.1 libopencv-calib3d4.5d libopencv-contrib4.5d libopencv-dnn4.5d
  libopencv-features2d4.5d libopencv-flann4.5d libopencv-highgui4.5d libopencv-imgcodecs4.5d libopencv-imgproc4.5d libopencv-ml4.5d libopencv-objdetect4.5d
  libopencv-photo4.5d libopencv-shape4.5d libopencv-stitching4.5d libopencv-superres4.5d libopencv-video4.5d libopencv-videoio4.5d libopencv-videostab4.5d
  libopencv-viz4.5d libopenexr-dev libopenmpi3 libpmix2 libpq5 libproj22 libraw1394-dev librttopo1 libsocket++1 libspatialite7 libsuperlu5 libswresample-dev
  libswscale-dev libsz2 libtbb-dev libtesseract4 libucx0 liburiparser1 libvtk9.1 libxerces-c3.2 libxnvctrl0 mysql-common proj-data unixodbc-common
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 163 not upgraded.

Below is my decompiled dtb file lkz Orin Nano

Nano-dtb.txt (320.5 KB)

Thank you.

but… you’re working with r36.3 release version, right?

Hi, JerryChang
Thanks for the reply.

We completely reflashed to R36.4.

cat /etc/nv_tegra_release

# R36 (release), REVISION: 4.0, GCID: 37537400, BOARD: generic, EABI: aarch64, D                                                                  ATE: Fri Sep 13 04:36:44 UTC 2024
# KERNEL_VARIANT: oot
TARGET_USERSPACE_LIB_DIR=nvidia
TARGET_USERSPACE_LIB_DIR_PATH=usr/lib/aarch64-linux-gnu/nvidia

Installed it in the process, following your advice.

hello akvadak66,

your device tree looks okay.
this should be minor,
it’s by default using cam_i2c: i2c@3180000, but it seems you’re using gen1_i2c: i2c@3160000.
just double check you’ve assign the correct i2c bus to your camera sensors.

Hi, JerryChang.
The thing is, in our carrier board FPD Link (DS90UB954) is connected to i2c@3160000.
So the camera is controlled from this i2c@3160000 port.
Everything is correct there.
The camera is fully initialized and detected in the system.
Other modules Orin Nx, Xaver Nx and Jetson Nano (one channel) work from this I2C port.
The problem is Orin Nano which does not want to work.
And the camera is visible in the system, there is no image capture only.
Above we have fully described all the steps.

hello akvadak66,

it’s weird since Orin NX/Nano they’re sharing the same software stack,
please configure below settings on the target to gather debug logs on Orin Nano.
for instance,

$ sudo su 
# pkill nvargus-daemon
# export enableCamScfLogs=5
# export enableCamPclLogs=5
# nvargus-daemon 2>&1 | tee argus-output.log

Hi, JerryChang.

Pipeline to run

gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! 'video/x-raw(memory:NVMM), width=(int)1920,height=(int)1080,framerate=60/1' ! nvvidconv ! xvimagesink sync=false --verbose

Have implemented your recommendations and am attaching the debug logs

argus-output.log (3.5 KB)