Platform: Xavier NX
Device: max9296 + max9295 + imx556
Kernal: R35.3.1
I have 3 questions, listed in order of importance:
1. Q1
I can use v4l2 to get data from gmsl camera normally, but using argus api or nvargus_nvraw tools to get data basically fails, and occasionally it succeeds once or twice randomly. After each failure, I need to restart the nvargus-daemon service to run argus again. The relevant logs are as follows:
- nvargus_nvraw LOG:
pcai@tegra-ubuntu:~$ nvargus_nvraw --c 0 --mode 0 --file ~/gmsl_imx556_new.nvraw --format "nvraw, raw"
nvargus_nvraw version 1.14.0
("nvargus_nvraw") Error BadParameter (0x04): No events in queue (in capture_nvraw/src/mobile/ArgusNvRawCapture.cpp,
func captureRequest(), line 700)
("nvargus_nvraw") Error BadParameter (0x04): (propagating from capture_nvraw/src/mobile/ArgusNvRawCapture.cpp,
func capture(), line 810)
- nvargus_nvraw DEBUG LOG:
pcai@tegra-ubuntu:~$ nvargus_nvraw --c 0 --mode 0 --file ~/gmsl_imx556_new.nvraw --format "nvraw, raw" --verbosity debug
nvargus_nvraw version 1.14.0
Argus Version: 0.99.3.3 (multi-process)
Number of sensors 1
User provided sensor ID 0, Sensor mode 0
Selected Sensor ID 0 Sensor Mode 0
initialize: Default frame duration (33,333,334 to 500,000,224 ns) FPS (30.00 to 2.00)
initialize: Frame count 90
initialize: numExposures 1 HDR Ratio Range: min 1.00 max 1.00
getExposureSetCount: i 0 exposureSet[i].size() 0
getExposureSetCount: i 1 exposureSet[i].size() 0
getExposureSetCount: i 2 exposureSet[i].size() 0
getExposureSetCount: i 3 exposureSet[i].size() 0
getExposureSetCount: i 4 exposureSet[i].size() 0
getExposureSetCount: i 5 exposureSet[i].size() 0
getExposureSetCount: i 6 exposureSet[i].size() 0
getExposureSetCount: i 7 exposureSet[i].size() 0
initialize: Embedded data is supported. Size 2560
Number of sensors 1, Number of sensor modes 1
m_selectedCameraDevice 0xaaab01156450, m_sensorMode 0xaaab01156560, m_iSensorMode 0xaaab011565f0
capture: createCaptureSession succes, value 0xaaab01156730
ICaptureSession::createOutputStream(0) success, value 0xaaab011568a0
createOutputStreams: Concurrent raw disabled. Skipping Yuv stream creation
EGLStream::FrameConsumer::create(0) success, value 0xaaab011b4310
createBuffers: Concurrent raw disabled. Skipping Yuv buffer creation
createBuffers: m_queue value 0xaaab011b4980
createBuffers: m_iQueue value 0xaaab011b4dc0
createCaptureRequest: Maximum burst request count 6
: Embedded data supported. Calling setMetadataEnable
createCaptureRequest: IRequest::enableOutputStream(0) success 0xaaab011b4e40
createCaptureRequest: concurrent raw disabled, skipping enableOutputStream(Yuv)
: Embedded data supported. Calling setMetadataEnable
createCaptureRequest: IRequest::enableOutputStream(0) success 0xaaab011b4fe0
createCaptureRequest: concurrent raw disabled, skipping enableOutputStream(Yuv)
: Embedded data supported. Calling setMetadataEnable
createCaptureRequest: IRequest::enableOutputStream(0) success 0xaaab011b5120
createCaptureRequest: concurrent raw disabled, skipping enableOutputStream(Yuv)
: Embedded data supported. Calling setMetadataEnable
createCaptureRequest: IRequest::enableOutputStream(0) success 0xaaab011b5240
createCaptureRequest: concurrent raw disabled, skipping enableOutputStream(Yuv)
: Embedded data supported. Calling setMetadataEnable
createCaptureRequest: IRequest::enableOutputStream(0) success 0xaaab011b5380
createCaptureRequest: concurrent raw disabled, skipping enableOutputStream(Yuv)
: Embedded data supported. Calling setMetadataEnable
createCaptureRequest: IRequest::enableOutputStream(0) success 0xaaab011b54c0
createCaptureRequest: concurrent raw disabled, skipping enableOutputStream(Yuv)
User has not requested a focus position change
User has not requested aperture position change
setSensorModeAndManualControls: setSensorMode(0xaaab01156560) success
User has not requested a focus position change
User has not requested aperture position change
setSensorModeAndManualControls: setSensorMode(0xaaab01156560) success
User has not requested a focus position change
User has not requested aperture position change
setSensorModeAndManualControls: setSensorMode(0xaaab01156560) success
User has not requested a focus position change
User has not requested aperture position change
setSensorModeAndManualControls: setSensorMode(0xaaab01156560) success
User has not requested a focus position change
User has not requested aperture position change
setSensorModeAndManualControls: setSensorMode(0xaaab01156560) success
User has not requested a focus position change
User has not requested aperture position change
setSensorModeAndManualControls: setSensorMode(0xaaab01156560) success
captureRequest: frame 0, value 0xaaab011b4e40
("nvargus_nvraw") Error BadParameter (0x04): No events in queue (in capture_nvraw/src/mobile/ArgusNvRawCapture.cpp,
func captureRequest(), line 700)
("nvargus_nvraw") Error BadParameter (0x04): (propagating from capture_nvraw/src/mobile/ArgusNvRawCapture.cpp,
func capture(), line 810)
deinitialize:++
capture_deinitialize:++
(Argus) Error Timeout: (propagating from src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 137)
(Argus) Error Timeout: (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 91)
capture_deinitialize:--
(Argus) Error Timeout: (propagating from src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 137)
(Argus) Error Timeout: (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 91)
(Argus) Error InvalidState: Argus client is exiting with 2 outstanding client threads (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 366)
deinitialize:--
("nvargus_nvraw") Error BadParameter (0x04): Unable to capture (propagating from capture_nvraw/src/mobile/main.cpp,
func main(), line 97)
capture_deinitialize:++
capture_deinitialize:--
deinitialize:++
capture_deinitialize:++
capture_deinitialize:--
deinitialize:--
- nvargus-daemon LOG:
pcai@tegra-ubuntu:~$ sudo nvargus-daemon
=== NVIDIA Libargus Camera Service (0.99.33)=== Listening for connections...=== nvargus_nvraw[22512]: Connection established (FFFF9355B900)OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module2
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module3
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module4
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module5
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module6
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module7
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found in proc device-tree
---- 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 107)
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 689)
SCF: Error BadParameter: (propagating from src/services/capture/CaptureService.cpp, function addSourceByGuid(), line 453)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function addSourceByIndex(), line 333)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function getSource(), line 505)
---- 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 107)
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 2. (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 689)
SCF: Error BadParameter: (propagating from src/services/capture/CaptureService.cpp, function addSourceByGuid(), line 453)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function addSourceByIndex(), line 333)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function getSource(), line 505)
---- 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 107)
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 3. (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 689)
SCF: Error BadParameter: (propagating from src/services/capture/CaptureService.cpp, function addSourceByGuid(), line 453)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function addSourceByIndex(), line 333)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function getSource(), line 505)
---- 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 107)
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 4. (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 689)
SCF: Error BadParameter: (propagating from src/services/capture/CaptureService.cpp, function addSourceByGuid(), line 453)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function addSourceByIndex(), line 333)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function getSource(), line 505)
---- 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 107)
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 5. (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 689)
SCF: Error BadParameter: (propagating from src/services/capture/CaptureService.cpp, function addSourceByGuid(), line 453)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function addSourceByIndex(), line 333)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function getSource(), line 505)
---- 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 107)
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 6. (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 689)
SCF: Error BadParameter: (propagating from src/services/capture/CaptureService.cpp, function addSourceByGuid(), line 453)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function addSourceByIndex(), line 333)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function getSource(), line 505)
---- 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 107)
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 7. (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 689)
SCF: Error BadParameter: (propagating from src/services/capture/CaptureService.cpp, function addSourceByGuid(), line 453)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function addSourceByIndex(), line 333)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function getSource(), line 505)
=== nvargus_nvraw[22512]: CameraProvider initialized (0xffff8c7527f0)SCF: Error BadValue: NvPHSSendThroughputHints (in src/common/CameraPowerHint.cpp, function sendCameraPowerHint(), line 56)
LSC: LSC surface is not based on full res!
SCF: Error InvalidState: 2 buffers still pending during EGLStreamProducer destruction (propagating from src/services/gl/EGLStreamProducer.cpp, function freeBuffers(), line 300)
SCF: Error InvalidState: (propagating from src/services/gl/EGLStreamProducer.cpp, function ~EGLStreamProducer(), line 49)
SCF: Error InvalidState: Timeout waiting on frame start sensor guid 1, capture sequence ID = 0 (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameStart(), line 514)
SCF: Error Timeout: (propagating from src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameEnd(), line 600)
SCF: Error Timeout: (propagating from src/common/Utils.cpp, function workerThread(), line 114)
SCF: Error Timeout: Worker thread ViCsiHw frameComplete failed (in src/common/Utils.cpp, function workerThread(), line 133)
SCF: Error InvalidState: (propagating from src/common/Utils.cpp, function workerThread(), line 114)
SCF: Error InvalidState: Worker thread ViCsiHw frameStart failed (in src/common/Utils.cpp, function workerThread(), line 133)
SCF: Error Timeout: (propagating from src/services/capture/CaptureServiceEvent.cpp, function wait(), line 59)
Error: Camera HwEvents wait, this may indicate a hardware timeout occured,abort current/incoming cc
waitForIdleLocked remaining request 102
waitForIdleLocked remaining request 101
SCF: Error Timeout: waitForIdle() timed out (in src/api/Session.cpp, function waitForIdleLocked(), line 922)
(Argus) Error Timeout: (propagating from src/api/CaptureSessionImpl.cpp, function destroy(), line 216)
-
Here is my dump device tree file:
extracted_proc.dts.txt (395.5 KB)
2. Q2
When I accidentally ran argus successfully, the metadata obtained using gmsl camera was missing half of the data. Using a non-gmsl camera can get complete and correct data.
3. Q3
Of the two CSI interfaces on the board, argus can only run when connected to PORT-1(CAM1). PORT-0(CAM0) cannot get data. I have tested this with the officially supported imx219. I also tested it with non-gmsl imx556 and got the same result.
I hope to get relevant support and help to solve the above three problems. Any suggestions are greatly appreciated.