Getting green screen while using gstreamer

I’m trying to stream the video output of a 4k camera (from BlackMagic Design) using the tc358840 module on an auvidea j130 board carrying a Tx1 (R24.2.1).

The process went as followed :

  1. Load the module
sudo modprobe tc358840
  1. Put the tx1 on max performance using two scripts
./jetson_clocks_max.sh 
./max_perf.sh
  1. Launch the 4k stream (on /dev/video1)
gst-launch-1.0 v4l2src device=/dev/video1 do-timestamp=true ! 'video/x-raw, width=3840, height=2160, framerate=30/1, format=UYVY' ! nvvidconv ! 'video/x-raw(memory:NVMM), width=3840, height=2160, framerate=30/1, format=I420' ! nvoverlaysink sync=false

the stream opens and work but I’m getting huge chunks of green screen splitting it. I don’t get these on 1920x1080 so it has obviously something to do with the resolution. Both my screen and camera are set on 4k though. There is something I’m missing.

Do someone (or Nvidia of course) knows what is the reason behind this? I can’t find any proper solution on the net.

EDIT : It seems the problem resides on the camera output, the screen is fine. Still I can’t seem to find why

hello Forevermore,

may i have more details about below,

I don’t get these on 1920x1080

did you configure sensor output resolution as 1080p?
or
did you configure 4K sensor output and down-scale the preview image to 1080p?

@Forevermore
As I know the 3840x2160 is gang mode need report bus-width as 8 lanes. Could you check your device tree to make sure of it.

Second one, My sensor output is configured to 4k while I down-scaled the preview image to 1080p in order to see if the green noises were gone (and they were).

I’m sorry I didn’t understand your sentence, Could you please elaborate?

Hi,
Your TV has to have 4K mode, or you need to downscale to lower resolution.

You may try

gst-launch-1.0 v4l2src device=/dev/video1 do-timestamp=true ! 'video/x-raw, width=3840, height=2160, framerate=30/1, format=UYVY' ! nvvidconv ! 'video/x-raw(memory:NVMM), width=1920, height=1080, framerate=30/1, format=I420' ! nvoverlaysink sync=false

Please dump below information of your display. Also, you said you are using HDMI capture module. Where does your green line appear? Is it on your display or on the HDMI-in result?

sudo -s
cat /sys/kernel/debug/tegradc.0/mode
cat /sys/class/graphics/fb0/mode

@Forevermore
Did you see any syncpt timeout from the kernel message? If no you may hit the 4k display issue please try the solution from Jerry and Wayne, otherwise you need to check the bus-width in you device tree for tc358840.

this is what I get :

cat /sys/class/graphics/fb0/mode
U:3840x2160p-30

So I think its something wrong with the tc358840 like @ShaneCCC suggested, Since I have never did this operation before (I am quite new to the jetson) Could you please tell me how to check the bus width for the module? Or if there is a specified documentation about it.

Thanks !

@Forevermore
You have add relative DT for your device(tc358840) if you didn’t you can search this forum to figure what you need to add for this device.

After checking the dts about the tc358840 :

tc358840xbg@0f {
				pll_fbd = <0x7d>;
				pll_prd = <0xa>;
				hstxvregcnt = <0x20>;
				ths_trailcnt = <0x80006>;
				tclk_postcnt = <0xa>;
				twakeup = <0x3e80>;
				ths_headercnt = <0xd0004>;
				tclk_trailcnt = <0x40005>;
				tclk_headercnt = <0x180203>;
				lptxtimecnt = <0x4>;
				lineinitcnt = <0xfa0>;
				csi_port = <0x3>;
				enable_hdcp = <0x0>;
				ddc5v_delay = <0x1>;
				refclk_hz = <0x2dc6c00>;
				interrupts = <0x97 0x4>;
				interrupt-parent = <0x6b>;
				reset-gpios = <0x6b 0x94 0x1>;
				status = "okay";
				reg = <0xf>;
				compatible = "toshiba,tc358840xbg";

				port {

					endpoint {
						phandle = <0x73>;
						linux,phandle = <0x73>;
						remote-endpoint = <0x80>;
					};
				};
			};

I realized the bus-width has not been set on the port node (it should be using 8 lanes), Guess I have to set it manually then reflash the dtb.