I made a custom camera driver with ser-des and tried to use in Xavier.
And the followings are okay.
jmnam@xavier:~/lgit_ws$ v4l2-ctl --list-devices
NVIDIA Tegra Video Input Device (platform:tegra-camrtc-ca):
/dev/media0
vi-output, ox08b40 30-0044 (platform:tegra-capture-vi:0):
/dev/video0
jmnam@xavier:~/lgit_ws$ v4l2-ctl --list-formats-ext -d /dev/video0
ioctl: VIDIOC_ENUM_FMT
Type: Video Capture
[0]: 'BG10' (10-bit Bayer BGBG/GRGR)
Size: Discrete 3840x2162
Interval: Discrete 0.033s (30.000 fps)
jmnam@xavier:~/lgit_ws$ v4l2-ctl -d /dev/video0 --set-fmt-video=width=3840,height=2162,pixelformat=BG10 --set-ctrl bypass_mode=0 --stream-mmap --stream-count=100
<<<<<<<<<<<<<<<< 14.98 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 22.46 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 24.96 fps
<<<<<<<<<<<<<<<<<<<<<<<<
However, I got an error with nvarguscamerasrc command.
jmnam@xavier:~/lgit_ws$ gst-launch-1.0 nvarguscamerasrc num-buffers=200 ! 'video/x-raw(memory:NVMM), width=3840, height=2162, framerate=30/1, format=NV12' ! nvv4l2h264enc ! h264parse ! qtmux ! filesink location=test.mp4 -e
Setting pipeline to PAUSED ...
Opening in BLOCKING MODE
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, execute:751 No cameras available
NvMMLiteOpen : Block : BlockType = 4
===== NVMEDIA: NVENC =====
Redistribute latency...
NvMMLiteBlockCreate : Block : BlockType = 4
Got EOS from element "pipeline0".
Execution ended after 0:00:00.047612032
Setting pipeline to NULL ...
Freeing pipeline ...
Could you help me?
Hello @wyoung7222 .
Please make sure that your custom driver has the tegra-camera-platform
section and that the information in this section matches the information of your sensor node. You can check this link for information:
Regards,
Alejandro Flores,
Embedded SW Engineer at RidgeRun
Contact us: support@ridgerun.com
Developers wiki: https://developer.ridgerun.com/
Website: www.ridgerun.com
The attached is my dtsi which included the thing you memtioned. Could you check it?
tegra194-p2822-0000-rcam-ox08b40.dtsi (7.5 KB)
Try to dump the device tree to check if the tegra-camera-platform{} was overwrite.
sudo dtc -I fs -O dts -o extracted_proc.dts /proc/device-tree
Here is the dump file you wrote.
extracted_proc.dts (459.0 KB)
Add status = “okay”; after position.
module0 {
badge = "lgit_rivian8M_bottomleft";
position = "bottomleft";
status = "disabled";
orientation = [31 00];
phandle = <0x498>;
drivernode0 {
devname = "ox08b40 30-0044";
proc-device-tree = "/proc/device-tree/i2c@3180000/tca9548@70/i2c@0/ox08b40@44";
pcl_id = "v4l2_sensor";
status = "okay";
phandle = <0x499>;
};
2 Likes
I modified my dtsi as you suggested, but got the same result. Could you advise it again?
The followings are my new dtsi file and dump.
tegra194-p2822-rivian_8M.dtsi (7.7 KB)
Could you confirm if the same error?
If yes please enable the argus-daemon log to check.
Yes got the same exactly. The following is daemon log.
=== NVIDIA Libargus Camera Service (0.98.3)=== Listening for connections...=== gst-launch-1.0[2962]: Connection established (FFFFAB7AF900)NvPclSetHotplugCallback: ++++++++++++++++++++++
---- Imager: Calibration blob file handling supported in this build ----
NvPclHwGetModuleList: OFParserListModules Succeeded
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwPrintModuleDefinition -- Name: lgit_rivian8M_bottomleft
NvPclHwPrintModuleDefinition -- Position: 0
NvPclHwPrintModuleDefinition -- CalibrationData Found: 1
NvPclHwPrintCameraSubModule -- HwCamSubModule[0].Name: v4l2_sensor
NvPclHwPrintCameraSubModule -- HwCamSubModule[0].DevName: ox08b40 30-0044
NvPclHwGetModuleList: OFParserListModules Succeeded
NvPclModuleListInitialize: NvPclModule list[0]: lgit_rivian8M_bottomleft position0
NvPclHwScanExternalCameras -- adding video0 to discover list
NvPclHwScanExternalCameras -- adding video0 to discover list
NvPclHwScanExternalCameras -- adding video0 to discover list
getHotplugMonitor: Getting hotplug monitor instance
initializeHotplug++
hotPlugfunc ++
addWatch: Watch added wd='1'
CheckProcDTExists: INFO: accessing /proc/device-tree/tegra-virtual-camera-platform/modules/module0/drivernode1; No such file or directory
OFParserGetVirtualDevice: virtual device driver node not found in proc device-tree: /proc/device-tree/tegra-virtual-camera-platform/modules/module0/drivernode1
CheckProcDTExists: INFO: accessing /proc/device-tree/tegra-virtual-camera-platform/modules/module1/drivernode0; No such file or directory
OFParserGetVirtualDevice: virtual device driver node not found in proc device-tree: /proc/device-tree/tegra-virtual-camera-platform/modules/module1/drivernode0
setHotplugCallback: Registered new callback client
NvPclSetHotplugCallback: ----------------------
hotPlugfunc: reading from inotify FD, Thread waiting
NvPclOpen: ++++++++++++++++++++++
NvPclStateControllerOpen: Found GUID 0 match at index[0]
NvPclHwInitializeModule: allocate overrides pathname @ 0xffffa448bb10
NvPclHwInitializeModule: allocate overrides pathname @ 0xffffa4550e10
NvPclHwInitializeModule: allocate overrides pathname @ 0xffffa450b120
NvPclHwInitializeModule: allocate overrides pathname @ 0xffffa4491f90
NvPclHwInitializeModule: allocate overrides pathname @ 0xffffa45bad80
NvPclHwInitializeModule: allocate overrides pathname @ 0xffffa459b360
LoadOverridesFile: looking for override file [/Calib/camera_override.isp] 1/16
CheckOverridesPermissions: stat(/Calib/camera_override.isp) call failed
LoadOverridesFile: looking for override file [/data/vendor/nvcam/settings/camera_overrides.isp] 2/16
CheckOverridesPermissions: stat(/data/vendor/nvcam/settings/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/opt/nvidia/nvcam/settings/camera_overrides.isp] 3/16
CheckOverridesPermissions: stat(/opt/nvidia/nvcam/settings/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/var/nvidia/nvcam/settings/camera_overrides.isp] 4/16
CheckOverridesPermissions: stat(/var/nvidia/nvcam/settings/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/data/vendor/nvcam/camera_overrides.isp] 5/16
CheckOverridesPermissions: stat(/data/vendor/nvcam/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/data/vendor/nvcam/settings/lgit_rivian8M_bottomleft.isp] 6/16
CheckOverridesPermissions: stat(/data/vendor/nvcam/settings/lgit_rivian8M_bottomleft.isp) call failed
LoadOverridesFile: looking for override file [/opt/nvidia/nvcam/settings/lgit_rivian8M_bottomleft.isp] 7/16
CheckOverridesPermissions: stat(/opt/nvidia/nvcam/settings/lgit_rivian8M_bottomleft.isp) call failed
LoadOverridesFile: looking for override file [/var/nvidia/nvcam/settings/lgit_rivian8M_bottomleft.isp] 8/16
CheckOverridesPermissions: stat(/var/nvidia/nvcam/settings/lgit_rivian8M_bottomleft.isp) call failed
---- imager: No override file found. ----
Imager: looking for override file [/mnt/factory/camera/factory.bin] 1/16
Imager: looking for override file [/Calib/factory.bin] 2/16
Imager: looking for override file [/Calib/calibration.bin] 3/16
Imager: looking for override file [(null)] 4/16
Imager: looking for override file [(null)] 5/16
Imager: looking for override file [(null)] 6/16
Imager: looking for override file [(null)] 7/16
Imager: looking for override file [(null)] 8/16
Imager: looking for override file [(null)] 9/16
Imager: looking for override file [(null)] 10/16
Imager: looking for override file [(null)] 11/16
Imager: looking for override file [(null)] 12/16
Imager: looking for override file [(null)] 13/16
Imager: looking for override file [(null)] 14/16
Imager: looking for override file [(null)] 15/16
Imager: looking for override file [(null)] 16/16
Imager: looking for override file [/data/vendor/nvcam/settings/factory.bin] 1/16
Imager: looking for override file [/data/vendor/nvcam/settings/lgit_rivian8M_bottomleft.bin] 2/16
Imager: looking for override file [/opt/nvidia/nvcam/settings/lgit_rivian8M_bottomleft.bin] 3/16
Imager: looking for override file [/var/nvidia/nvcam/settings/lgit_rivian8M_bottomleft.bin] 4/16
Imager: looking for override file [(null)] 5/16
Imager: looking for override file [(null)] 6/16
Imager: looking for override file [(null)] 7/16
Imager: looking for override file [(null)] 8/16
Imager: looking for override file [(null)] 9/16
Imager: looking for override file [(null)] 10/16
Imager: looking for override file [(null)] 11/16
Imager: looking for override file [(null)] 12/16
Imager: looking for override file [(null)] 13/16
Imager: looking for override file [(null)] 14/16
Imager: looking for override file [(null)] 15/16
Imager: looking for override file [(null)] 16/16
NvPclCreateDriver: Found NvPcl Driver Hal dev_name match (v4l2_sensor)
NvPclCreateDriver: Found a Driver name match (v4l2_sensor)
NvPclConnectDrivers: hImager was NULL, creating new imager
NvPclInitializeDrivers: v4l2_sensor ++++++++++++++++++
OFDPropertyGetString: could not read property [devnode-bus]
OFDPropertyGetString: could not read property [use_decibel_gain]
OFDPropertyGetString: could not read property [delayed_gain]
OFDPropertyCopyToLong: could not read property [has-eeprom]
checkDriverVersion: Mixed or missing V4L2 controls!
checkDriverVersion: Make sure your kernel driver implements either
checkDriverVersion: V4L2_m_cidFrameLength + V4L2_m_cidCoarseTime(_SHORT)
checkDriverVersion: or
checkDriverVersion: V4L2_m_cidFrameRate + V4L2_m_cidExposure
(NvOdmDevice) Error BadParameter: (in dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function checkDriverVersion(), line 417)
(NvOdmDevice) Error BadParameter: (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function findCustomCids(), line 346)
(NvOdmDevice) Error BadParameter: (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function initializeV4L2Items(), line 242)
(NvOdmDevice) Error BadParameter: (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function initialize(), line 117)
NvPclDriverInitializeData: Unable to initialize driver v4l2_sensor
NvPclInitializeDrivers: error: Failed to init camera sub module v4l2_sensor
NvPclStartPlatformDrivers: Failed to start module drivers
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0xffffa4491f90
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0xffffa45bad80
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0xffffa459b360
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0xffffa448bb10
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0xffffa4550e10
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0xffffa450b120
NvPclStateControllerOpen: Failed ImagerGUID 0. (error 0x4)
NvPclStateControllerClose: Module lgit_rivian8M_bottomleft closed
NvPclOpen: PCL Open Failed. Error: 0xf
NvPclClose: ++++++++++++++++++++++
NvPclClose: ----------------------
NvPclOpen: ----------------------
SCF: Error BadParameter: Sensor could not be opened. (in src/services/capture/CaptureServiceDeviceSensor.cpp, function getSourceFromGuid(), line 646)
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 311)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function getSource(), line 477)
Acquiring SCF Camera device source via index 0 has failed. === gst-launch-1.0[2962]: CameraProvider initialized (0xffffa459ac30)=== gst-launch-1.0[2962]: CameraProvider destroyed (0xffffa459ac30)NvPclShutdown: ++++++++++++++++++++++
NvPclModuleListShutdown: Client still conntected, skipping shutdown
NvPclShutdown: ----------------------
NvPclRemoveHotplugCallback: ++++++++++++++++++++++
getHotplugMonitor: Getting hotplug monitor instance
shutdownHotplug: Requesting thread exit
hotPlugfunc: Read 16 bytes from inotify FD
hotPlugfunc: A File was Modified 00008000 NAME : CREATE : 00000100, DELETE : 00000200 IGNORED : 00008000 CLOSE_WRITE : 00000008
hotPlugfunc: Exit thread
hotPlugfunc --
shutdownHotplug -- : shutdown of hotplug is complete
Removed callback client
NvPclRemoveHotplugCallback: ----------------------
=== gst-launch-1.0[2962]: Connection closed (FFFFAB7AF900)=== gst-launch-1.0[2962]: Connection cleaned up (FFFFAB7AF900)^C
Your sensor driver have CID implement problem. Have reference to below topic to fix it.
The V4L2_CID_FRAME_LENGTH and V4L2_COARSE_TIME controls take 32-bit input parameters and V4L2_CID_FRAME_RATE and V4L2_EXPOSURE take 64-bit input parameters. Use either set of controls but do not mix or use both sets at once.
Mixed or missing V4L2 controls!
2 Likes
system
Closed
July 12, 2023, 1:25am
17
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.