views:

179

answers:

1

I am working on building a USB Video Class camera, which is supposed to work well with various flavours of Windows. The camera needs firmware upgrade support to upload new software images into it. There are two ways to do it, as far as I know.

  1. Use DFU.
  2. Use control endpoint of the UVC Class device to transfer bytes into the device.

To use the second option, it looks like, one needs to write a Filter Driver. Is this correct? Is there any other way to accomplish this task?

+1  A: 

There are several ways to do what you want.

The standard UVC Class driver supports a user mode interface, from which you can send USB packets to the device. This interface is called: USB Video Class Extension Units.

Another way is to use WinUSB, where you install the WinUSB driver for your device. After that you can send USB packets through the WinUSB interface.

The most involved solution would be, to write a complete USB driver. Just see the samples in the WDK.

Christopher
Thanks. I have looked at WinUSB. One of the requirement for our device is that we shouldn't be installing a custom driver to the OS and should make use of the already existing driver. So, that kind of rules out writing a custom driver for streaming. What we need is a way to talk to the control end point. One way we do that currently is to use libusb (win32 port) and use the filter driver provided by them to talk to it. But that had been quite problematic with newer OSes and 64-bit variants from Microsoft.
Ramakrishnan Muthukrishnan
Then I would try to use the USB Video Class Extension Units. I don't know if there is another 'open' driver which installs itself as a filter driver.
Christopher
Thanks Christopher.
Ramakrishnan Muthukrishnan