GigEVision support

Falco Hirschenberger falco.hirschenberger at itwm.fraunhofer.de
Thu Jul 9 07:39:23 UTC 2009


Greg KH schrieb:
> On Wed, Jul 08, 2009 at 05:50:38PM +0200, Falco Hirschenberger wrote:
>> Hi,
>>
>> I think Linux can really benefit from an open kernel-based GigEVision 
>> driver.
>>
>> GigEVision[1] is a proprietary closed standard for controlling 
>> high-quality video cameras over gigabit-ethernet. These cameras are 
>> often used in industrial vision software. This driver can be a great 
>> benefit for the industrial vision industry, because using small embedded 
>> Linux systems is in the trend there.
>>
>> Some manufacturers provide closed-source drivers for Linux because of 
>> the NDA which they signed at the AIA (Automated Imaging Association).
>> [2], [3]
>> Some provide no drivers but I think these cameras will work with a 
>> generic driver because they have to implement the standard to get certified.
>>
>> I have written a proof-of-concept userlevel driver by means of sniffing 
>> and reverse-engineering, but some features are missing and I think I 
>> will need some help to implement the rest. Btw. a kernel driver would 
>> perform a lot better.
> 
> Why would it perform better?  You can send/receive ethernet packets just
> as fast from userspace as from within the kernel, right?

You're right, the send/rec. performance will not be increased, but
I know that there's a so called "filter driver" for GigEVision on 
Windows systems. It's bypassing the UDP/IP stack which significantly 
reduces the CPU-load on the system. And that's good because in most 
cases the algorithms are running on the same machine.
But I think developing a filter driver is not the primary goal here.

> Or are you referring to the fact that the device should show up as a
> proper v4l2 device to userspace, and not need a custom userspace program
> interface?

This would also be an option, but I suppose the v4l2 Interface is not 
flexible enough for these complex cameras.

>> I hope this list is the correct place for this suggestion, feel free to 
>> forward it to another place.
> 
> It's a good place, hopefully people who wish to help out with this will
> contact you.
> 
> But note, without specs, this will be a lot of work :)

As mentioned, I have a basic implementation. The so called PACKET_RESEND 
functionality, which can request lost UDP packets is totally 
unimplemented and will be the hardest part. But the whole reverse 
engineering is rather easy with a normal packet sniffer and the 
closed-source driver.

I hope there is some interest in the community.

Regards, Falco




More information about the devel mailing list