Showing results for 
Search instead for 
Did you mean: 

Knowledge Base Articles

Modified AN75779 firmware for streaming video using cyusb3.sys driver – KBA233542


Modified AN75779 firmware for streaming video using cyusb3.sys driver – KBA233542

Version: **

The firmware attached with AN75779 supports streaming the video data over a UVC class interface to the USB host. You can use the modified AN75779 firmware attached with this article to stream video data over a vendor class interface by using the cyusb3 driver instead of the UVC class interface.

In the FX3 firmware, enable the #define CY_DRIVER macro in uvc.h to toggle between UVC and non-UVC (Vendor Class) application.

The main differences between the default AN75779 UVC firmware and the firmware (with the CY_DRIVER macro enabled) attached with this KBA are as follows:

  1. The device will enumerate as a USB vendor-class device, i.e., the USB descriptors report to the USB host that the device is a vendor-class device. This enables the device to bind to the  cyusb3.sys driver unlike the default UVC firmware that has USB Video class descriptors and bind to the UVC driver.
  2. Vendor commands are used to start and stop streaming rather than UVC Class-specific control /streaming requests. The vendor command 0x99 starts the streaming, while 0x88 stops it in the firmware.
  3. The data streaming with the attached firmware can be tested using the streamer application and USB Control Center application from the FX3 SDK.


  1. Use the Control Center application for starting and stopping the video stream using vendor commands mentioned in point 2. Streamer application is used to receive the video data. Start the streaming with this application by pressing the “Start” button before passing the vendor command 0x99 (to start the video stream) to the device from the USB Control Center application.
  2. Configure the “Packets per Xfer”, “Xfer per Queue”, and “Timeout per Xfer” fields of the streamer application to achieve the required transfer rate.
  3. You need to develop a custom host application to view the video.




Figure 1. Streaming 1280 x 720 video image data using USB Control Center and
 C++ streamer application of FX3 SDK

  1. No memory is allocated for UVC headers or footers during DMA channel creation and no UVC headers are added to the image data. So, 16 KB of video image data is transferred to the USB host unlike 16 KB minus the 16 bytes for UVC headers in the video image data sent in the firmware attached with AN75779.


Version history
Revision #:
1 of 1
Last update:
‎Jul 13, 2021 10:34 PM
Updated by: