External camera trigger not possible / Hardcoded timouts in V4L2 driver

we are porting several pass-through mipi cameras to the Nvidia Jetson Platform (Nano, NX and AGX).
Unfortunately we hit a issue, that we are not able to solve properly without your help.

We’d like to implement:

  • Arbitrary long exposure times (>200ms) / low frame rates
  • Hardware triggered image acquisition (E.g. the stream is enabled but no images arrive until a hardware trigger is issued)

Both usecases are pretty common in the machine vision industry. At the moment this is not possible due to hardcoded timeouts inside the nvidia kernel drivers.
We looked at the kernel code and the nvidia forum and found several entries regarding this topic:

We found a hardcoded 200ms timeout in v2_fops.c:237, vi4_fops.c:1097 and another 2500ms timout in vi5_fops.c:390.
Just increasing the timout wouldn’t help as it would have to be infinitely large. So there should be a proper way to support triggered acquisition​.

As we are not using the ISP, libargus is not involved and the enableCamInfiniteTimeout=1 setting for nvargus-daemon doesn’t help here.

How can we solve that issue? A discussion on the correct way to implement it (custom IOCTL etc.) could also help on the way to a solution that is included in the official nvidia kernel.

Best regards,

Sorry to tell for current VI driver don’t support trigger mode on support streaming mode.

Stefan, did you ever find a good solution for triggering? I brought up similar requests here -[Feature Request] Long exposures, up to actual sensor limit, for supported CSI cameras (and other still photography related requests) but it seems like it will require driver modifications. Were you able to make those modifications? Thanks!