Some problems using gstreamer with the nvarguscamerasrc plugin

Hi,

I’m developing sensor driver and trying to display ISP processing data.
I use gstreamer with the nvarguscamerasrc plugin, but some errors and warnings occured.

Jan 28 23:40:26 jetson-0423218010774 nvargus-daemon[5788]: === gst-launch-1.0[7742]: Connection established (7F7C6E41D0)
Jan 28 23:40:26 jetson-0423218010774 kernel: [  112.757513] tegra194-isp5 14800000.isp: isp_channel_power_on
Jan 28 23:40:26 jetson-0423218010774 kernel: [  112.761796] tegra194-isp5 14800000.isp: 6 GoS tables configured.
Jan 28 23:40:26 jetson-0423218010774 kernel: [  112.761809] tegra194-isp5 14800000.isp: gos[0] = 0xeca00000
Jan 28 23:40:26 jetson-0423218010774 kernel: [  112.761827] tegra194-isp5 14800000.isp: gos[1] = 0xeca01000
Jan 28 23:40:26 jetson-0423218010774 kernel: [  112.761832] tegra194-isp5 14800000.isp: gos[2] = 0xeca02000
Jan 28 23:40:26 jetson-0423218010774 kernel: [  112.761835] tegra194-isp5 14800000.isp: gos[3] = 0xeca03000
Jan 28 23:40:26 jetson-0423218010774 kernel: [  112.761839] tegra194-isp5 14800000.isp: gos[4] = 0xeca04000
Jan 28 23:40:26 jetson-0423218010774 kernel: [  112.761842] tegra194-isp5 14800000.isp: gos[5] = 0xeca05000
Jan 28 23:40:26 jetson-0423218010774 kernel: [  112.797158] [RCE] Total number of isp channels : 16 
Jan 28 23:40:26 jetson-0423218010774 nvargus-daemon[5788]: NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
Jan 28 23:40:26 jetson-0423218010774 nvargus-daemon[5788]: NvPclHwGetModuleList: No module data found
Jan 28 23:40:27 jetson-0423218010774 nvargus-daemon[5788]: OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found in proc device-tree
Jan 28 23:40:27 jetson-0423218010774 nvargus-daemon[5788]: ---- imager: No override file found. ----
Jan 28 23:40:27 jetson-0423218010774 nvargus-daemon[5788]: LSC: LSC surface is not based on full res!
Jan 28 23:40:27 jetson-0423218010774 nvargus-daemon[5788]: === gst-launch-1.0[7742]: CameraProvider initialized (0x7f7463ef90)
Jan 28 23:40:27 jetson-0423218010774 kernel: [  113.362400] tegra194-vi5 15c10000.vi: vi_channel_power_on_vi_device
Jan 28 23:40:27 jetson-0423218010774 kernel: [  113.362606] tegra194-vi5 15c10000.vi: 6 GoS tables configured.
Jan 28 23:40:27 jetson-0423218010774 kernel: [  113.362623] tegra194-vi5 15c10000.vi: gos[0] = 0xeca00000
Jan 28 23:40:27 jetson-0423218010774 kernel: [  113.362627] tegra194-vi5 15c10000.vi: gos[1] = 0xeca01000
Jan 28 23:40:27 jetson-0423218010774 kernel: [  113.362632] tegra194-vi5 15c10000.vi: gos[2] = 0xeca02000
Jan 28 23:40:27 jetson-0423218010774 kernel: [  113.362636] tegra194-vi5 15c10000.vi: gos[3] = 0xeca03000
Jan 28 23:40:27 jetson-0423218010774 kernel: [  113.362640] tegra194-vi5 15c10000.vi: gos[4] = 0xeca04000
Jan 28 23:40:27 jetson-0423218010774 kernel: [  113.362643] tegra194-vi5 15c10000.vi: gos[5] = 0xeca05000
Jan 28 23:40:27 jetson-0423218010774 gnome-software[7600]: failed to call gs_plugin_refresh on fwupd: [*/cabinet/*/source/fwupd/*] failed to download https://cdn.fwupd.org/downloads/firmware.xml.gz.asc: Cannot resolve hostname
Jan 28 23:40:27 jetson-0423218010774 nvargus-daemon[5788]: LSC: LSC surface is not based on full res!
Jan 28 23:40:27 jetson-0423218010774 kernel: [  113.413142] [RCE] vi5_hwinit: firmware CL2018061801 protocol version 2.2
Jan 28 23:40:27 jetson-0423218010774 gnome-software[7600]: failed to call gs_plugin_add_installed on shell-extensions: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such interface 'org.gnome.Shell.Extensions' on object at path /org/gnome/Shell
Jan 28 23:40:27 jetson-0423218010774 gnome-software[7600]: Only 0 apps for recent list, hiding
Jan 28 23:40:27 jetson-0423218010774 kernel: [  113.856042] tegra194-vi5 15c10000.vi: vi_channel_power_off_vi_device

I think that device-tree has a mistake, but please tell me where to check.

And an error occured at PWL setting.

Jan 28 23:40:31 jetson-0423218010774 nvargus-daemon[5788]: SCF: Error InvalidState: Number of control points, more than expected (in src/services/capture/NvCaptureViCsiHw.cpp, function updateViCsiResolution(), line 327)
Jan 28 23:40:31 jetson-0423218010774 nvargus-daemon[5788]: SCF: Error InvalidState:  (propagating from src/services/capture/CaptureServiceDeviceViCsi.cpp, function setMode(), line 434)
Jan 28 23:40:31 jetson-0423218010774 nvargus-daemon[5788]: SCF: Error InvalidState:  (propagating from src/services/capture/CaptureRecord.cpp, function updateMode(), line 438)
Jan 28 23:40:31 jetson-0423218010774 nvargus-daemon[5788]: SCF: Error InvalidState:  (propagating from src/services/capture/CaptureServiceDevice.cpp, function issueCaptures(), line 1105)
Jan 28 23:40:31 jetson-0423218010774 nvargus-daemon[5788]: SCF: Error InvalidState:  (propagating from src/common/Utils.cpp, function workerThread(), line 116)
Jan 28 23:40:31 jetson-0423218010774 nvargus-daemon[5788]: SCF: Error InvalidState: Worker thread CaptureScheduler frameStart failed (in src/common/Utils.cpp, function workerThread(), line 133)
Jan 28 23:40:31 jetson-0423218010774 nvargus-daemon[5788]: SCF: Error Timeout:  (propagating from src/api/Buffer.cpp, function waitForUnlock(), line 637)
Jan 28 23:40:31 jetson-0423218010774 nvargus-daemon[5788]: SCF: Error Timeout:  (propagating from src/components/CaptureContainerImpl.cpp, function returnBuffer(), line 358)

The PWL setting is same as TX2, so are there any restrictions on settings?

Thanks.

hello k0butanet,

may I know what’s your PWL settings, it seems there’s error reporting.

Jan 28 23:40:31 jetson-0423218010774 nvargus-daemon[5788]: SCF: Error InvalidState: Number of control points, more than expected (in src/services/capture/NvCaptureViCsiHw.cpp, function updateViCsiResolution(), line 327)

could you please share your device tree settings of the PWL sensor-mode.
thanks

Hello JerryChang,

Thank you for replying.

My device tree settings of PWL sensor-mode is below.

mode_type = "bayer_wdr_pwl";
				        csi_pixel_bit_depth = "12";
				        dynamic_pixel_bit_depth = "24";
				        pixel_phase = "rggb";
				        num_control_point = "10";
				        control_point_x_0 = "0";
				        control_point_x_1 = "384";
				        control_point_x_2 = "1600";
				        control_point_x_3 = "3700";
				        control_point_x_4 = "24000";
				        control_point_x_5 = "73000";
				        control_point_x_6 = "210392";
				        control_point_x_7 = "1500000";
				        control_point_x_8 = "5000000";
				        control_point_x_9 = "16777215";
				        control_point_y_0 = "0";
				        control_point_y_1 = "384";
				        control_point_y_2 = "789";
				        control_point_y_3 = "1022";
				        control_point_y_4 = "1278";
				        control_point_y_5 = "1586";
				        control_point_y_6 = "2019";
				        control_point_y_7 = "2415";
				        control_point_y_8 = "2951";
				        control_point_y_9 = "3854";

Thanks.

hello k0butanet,

please have modification of PWL properties following with below two suggestions.
thanks

  1. since we had only test PWL sensor-mode as high as 16-bits with IMX-185 for a reference. suggest you configure the DynamicPixelBitDepth to 16-bit for testing.
mode_type = "bayer_wdr_pwl";
				        csi_pixel_bit_depth = "12";
				        dynamic_pixel_bit_depth = "24";
  1. with some experiments, we found there might be constraint that x-coordinate values of the control points should rounded up by 256.
control_point_x_0 = "0";
				        control_point_x_1 = "384";
				        control_point_x_2 = "1600";
				        control_point_x_3 = "3700";
				        control_point_x_4 = "24000";
				        control_point_x_5 = "73000";
				        control_point_x_6 = "210392";
				        control_point_x_7 = "1500000";
				        control_point_x_8 = "5000000";
				        control_point_x_9 = "16777215";

Hello JerryChang,

Thank you for your advice and sorry for the late reply.
If I set it up like the advice I received, the error no longer occurs.

I want to know following PWL specification.
Please tell me if you do not mind.

DynamicPixelBitDepth (upper limit)
num_control_point(upper limit)

Thanks.

hello k0butanet,

we’re working internally to investigate these PWL properties constraints.
this may take some time to have more details into the documentation. [Sensor Driver Programming Guide]
please consider two suggestions settings in comment #4 for temporary solutions.
thanks

k0butanet,

According to the sensor driver programming guide the upper limit for control points is 16. I do not believe the upper limit for dynamic pixel bit depth is documented anywhere.