Hi,
I’m trying to capture from three sensors at the same time on a TX2. My current setup has sensor have the particularity that there’s one master sensor and two slave sensor were using a broadcasted i2c command; the master sensor will start the stream for the two slave sensors. So for instance when using a pipeline like the following:
GST_DEBUG=2 DISPLAY=:0 gst-launch-1.0 nvcamerasrc exposure-time=0.006 fpsRange="30 30" auto-exposure=off sensor-id=2 ! 'video/x-raw(memory:NVMM),width=(int)4656,height=(int)3496,format=(string)I420,framerate=(fraction)21/1' ! nvvidconv ! "video/x-raw,width=(int)640,height=(int)480,format=(string)I420,framerate=(fraction)21/1" ! queue ! mixer.sink_0 nvcamerasrc auto-exposure=off exposure-time=0.006 sensor-id=1 fpsRange="30 30" ! 'video/x-raw(memory:NVMM),width=(int)4656,height=(int)3496,format=(string)I420,framerate=(fraction)21/1' ! nvvidconv ! "video/x-raw,width=(int)640,height=(int)480,format=(string)I420,framerate=(fraction)21/1" ! queue ! mixer.sink_1 nvcamerasrc auto-exposure=off exposure-time=0.006 sensor-id=0 fpsRange="30 30" ! 'video/x-raw(memory:NVMM),width=(int)4656,height=(int)3496,format=(string)I420,framerate=(fraction)21/1' ! nvvidconv ! "video/x-raw,width=(int)640,height=(int)480,format=(string)I420,framerate=(fraction)21/1" ! queue ! mixer.sink_2 videomixer background=1 name=mixer sink_0::xpos=0 sink_0::ypos=0 sink_1::xpos=640 sink_1::ypos=0 sink_2::xpos=320 sink_2::ypos=480 ! queue ! nvoverlaysink sync=false -v
The driver of the sensor with the id 0 then will sent the command to all the sensors; this involves that the cameras should start in the order 1->2 for the slaves, and finally sensor 0 to broadcast the start stream.
This seems to be working well but in some occasions I get the following timeout and the capture subsystem (nvcamera-daemon) crashes:
[ 232.517597] fence timeout on [ffffffc04a34f900] after 1500ms
[ 232.521233] fence timeout on [ffffffc050530800] after 1500ms
[ 232.521243] name=[nvhost_sync:86], current value=12 waiting value=13
[ 232.521249] ---- mlocks ----
[ 232.521273] 17: locked by channel 8
[ 232.521284] ---- syncpts ----
[ 232.521298] id 4 (disp_d) min 111 max 111 refs 1 (previous client : )
[ 232.521305] id 5 (disp_e) min 443 max 444 refs 1 (previous client : )
[ 232.521312] id 7 (vblank1) min 13723 max 0 refs 1 (previous client : )
[ 232.521331] id 18 (17000000.gp10b_507) min 7392 max 7392 refs 1 (previous client : )
I tried increasing the clock speeds recommended on the following post but am still experiencing the issue:
https://devtalk.nvidia.com/default/topic/1038000/jetson-tx2/vi-errors-when-running-two-mipi-cameras/
We checked the CSI lines and it seems like data is indeed getting out of each sensor when the timeout happens; so my rough guess is that there is a timeout that gets triggered once the data takes a bit longer to come out of the sensor and this crashes the capture subsystem. I have the following questions:
1- Has anybody tried to accomplish this on the past and succeed at it?
2- Any pointers to where we could increase the potential timeout that is happening?
Thanks in advance.