Trouble with nvargus-daemon, V4L2Device not available

I’m having trouble getting video from a raspberry pi camera attached to my Jetson Nano. It had been working, but now seem to be almost totally inoperable.

A reproduction of the basic error:

  1. enabled userspace logs with
export enableCamPclLogs=5
export enableCamScfLogs=5
  1. ran
sudo /usr/sbin/nvargus-daemon
  1. ran, in another terminal :
nvgstcapture-1.0

Looking back at the nvargus-daemon window I saw (in part):

=== NVIDIA Libargus Camera Service (0.97.3)=== Listening for connections...=== nvgstcapture-1.0[23812]: Connection established (7F97D311D0)OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found in proc device-tree
---- imager: No override file found. ----
LSC: LSC surface is not based on full res!
---- imager: No override file found. ----
(NvCamV4l2) Error ModuleNotPresent: V4L2Device not available (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function findDevice(), line 256)
(NvCamV4l2) Error ModuleNotPresent: (propagating from /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function initialize(), line 60)
(NvOdmDevice) Error ModuleNotPresent: (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function initialize(), line 106)
NvPclDriverInitializeData: Unable to initialize driver v4l2_sensor
NvPclInitializeDrivers: error: Failed to init camera sub module v4l2_sensor
NvPclStartPlatformDrivers: Failed to start module drivers
NvPclStateControllerOpen: Failed ImagerGUID 0. (error 0xA000E)
NvPclOpen: PCL Open Failed. Error: 0xf
SCF: Error BadParameter: Sensor could not be opened. (in src/services/capture/CaptureServiceDeviceSensor.cpp, function getSourceFromGuid(), line 582)
SCF: Error BadParameter: (propagating from src/services/capture/CaptureService.cpp, function addSourceByGuid(), line 437)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function addSourceByIndex(), line 295)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function getSource(), line 458)
Acquiring SCF Camera device source via index 1 has failed. === nvgstcapture-1.0[23812]: CameraProvider initialized (0x7f908432f0)LSC: LSC surface is not based on full res!

Here’s my device tree:

tegra-camera-platform {
                isp_bw_margin_pct = <0x19>;
                compatible = "nvidia, tegra-camera-platform";
                max_pixel_rate = <0x3a980>;
                num_csi_lanes = <0x2>;
                vi_peak_byte_per_pixel = <0x2>;
                status = "okay";
                max_lane_speed = <0x16e360>;
                phandle = <0xc4>;
                vi_bw_margin_pct = <0x19>;
                linux,phandle = <0xc4>;
                min_bits_per_pixel = <0xa>;
                isp_peak_byte_per_pixel = <0x5>;

                modules {

                        module0 {
                                badge = "porg_front_RBPCV2";
                                status = "okay";
                                phandle = <0xba>;
                                position = "front";
                                linux,phandle = <0xba>;
                                orientation = [31 00];

                                drivernode1 {
                                        pcl_id = "v4l2_lens";
                                        status = "okay";
                                        proc-device-tree = "/proc/device-tree/lens_imx219@RBPCV2/";
                                        phandle = <0xbc>;
                                        linux,phandle = <0xbc>;
                                };

                                drivernode0 {
                                        devname = "imx219 6-0010";
                                        pcl_id = "v4l2_sensor";
                                        status = "okay";
                                        proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/rbpcv2_imx219_a@10";
                                        phandle = <0xbb>;
                                        linux,phandle = <0xbb>;
                                };
                        };

                        module1 {
                                badge = "porg_rear_RBPCV2";
                                phandle = <0xca>;
                                position = "rear";
                                linux,phandle = <0xca>;
                                orientation = [31 00];

                                drivernode1 {
                                        pcl_id = "v4l2_lens";
                                        proc-device-tree = "/proc/device-tree/lens_imx219@RBPCV2/";
                                        phandle = <0xcc>;
                                        linux,phandle = <0xcc>;
                                };

                                drivernode0 {
                                        devname = "imx219 8-0010";
                                        pcl_id = "v4l2_sensor";
                                        proc-device-tree = "/proc/device-tree/cam_i2cmux/i2c@1/rbpcv2_imx219_e@10";
                                        phandle = <0xcb>;
                                        linux,phandle = <0xcb>;
                                };
                        };
                };
        };

This seems similar to https://devtalk.nvidia.com/default/topic/1055422/jetson-agx-xavier/v4l2-ctl-succeed-gst-launch-1-0-fail-/1, but perhaps not the same root cause?

Note that I’m using a Nano image grabbed from https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#write

Help would be appreciated! Thanks.

Looking back at this, I realize now that the messages about a module not being present (e.g. “Error ModuleNotPresent: V4L2Device not available”) are likely not the root cause of the other errors I’m seeing.

The first line indicates a successful connection with module0. The module not present lines appear to only concern module1. I can confirm that I am successfully able to get video from the camera via nvarguscamerasrc and a gstreamer pipeline even with these module1 errors.

I do wish the errors were a lot less misleading, but I consider this closed.