cyusb3 driver is not working in Windows 10

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

Hello,

I have a custom board with CYUSB3064 + OV5640 on it. Windows 10 by default recognizes it as CX3-UVC and installs usb driver. This driver and the board are working well - I've tested the camera capturing using VLC streaming.

Now I want to download my FW to CX3 and for this purpose I had to install cyusb3 driver from the EZ USB suite. After modifying the cyusb3.inf as described in cyusb3.pdf, deleting catalog file with hash, forcing unsigned driver, I succeed to install the driver, but I get the following error:

This device cannot start. (Code 10)

An invalid parameter was passed to a service or function.

And of course the Control Center doesn't recognize any device connecte.

What might be the problem?

0 Likes
1 Solution

Hi Michael,

From the screenshot, I presume that your device enumerates as USB 2.0 device instead of USB3.0. That's why you don't have any other resolution option.

The reasons my be summarized below.

  1. The defect of hardware design(USB 3.0 differential pairs).
  2. You use a USB2.0 cable or a bad "USB3.0" cable.
  3. You connect your device to a USB 2.0 port instead of a USB3.0 port.
  4. You modify the defalut statement

    status = CyU3PConnectState(CyTrue, CyTrue);

      as

    status = CyU3PConnectState(CyTrue, CyFalse);

View solution in original post

0 Likes
12 Replies
YangyangC_06
Employee
Employee
750 replies posted 500 replies posted 250 replies posted

Hi Micheal,

Which kindl of firmware are you trying to download?Could you upload it for me to cross check?

0 Likes
Anonymous
Not applicable

Hello,

It's just a Cx3UvcOV5640 example project from the EZ USB SDK tutorial.

But I'm far from downloading process. The Control Center is not recognizing my device and this is most probably because the standard windows driver is not suitable for this mission. So I've just trying to bind Cypress USB driver from the EZ USB suite. And this step fails. Device Manager of Windows 10 shows that there is a problem with the driver and the reason is as mentioned below.

0 Likes

Hi Micheal,

As you may know that CX3 is deliveryed out with bootloader inside. When the customer connect it to PC in the first time(USB boot), it will enumerate as FX3 USB bootloader device. It is an USB vendor device so it works with driver from Cypress(cyusb3.sys)

After you writting your UVC firmware and download it into FLASH. Set PMODE as SPI boot, CX3 will read the firmware from FLASH and tell the PC 'Hey, I am a UVC device'.  The UVC device is a kind of standard USB class device. The driver is not provided by Cypress but the OS.

I am not very clear about why you modify the cyusb3.inf. I hope I can get more information from you.

0 Likes
Anonymous
Not applicable

Hello and thank you for your support. Following is more detailed info.

I have a custom third-party board with no JTAG connection on it. My goal is to download new firmware to this board using USB. According to the SDK user guide, I can download new firmware using Control Center of the EZ USB SDK suite. When connecting the board to the PC for the first time, it was recognized by Windows as CX3-UVC

Driver.jpg

Now, when I run Control Center, it doesn't recognize any FX3/FX2. I assumed this happens because the driver that Control Center is using should be CyUSB3.sys:

Control Center.jpg

Please, advise for the next steps.

0 Likes

Hi ,

I assumed this happens because the driver that Control Center is using should be CyUSB3.sys:

Control Center.jpg

Please, advise for the next steps.

Yes, you are right. Control center works with Cyusb3.sys not usbvideo.sys.

As per your description, your device boot from FLASH or EEPROM. Please set PMODE to usb boot. Then the control center will find it.

0 Likes
Anonymous
Not applicable

Thank you very much. I've succeeded to overcome all drivers issues. I'm also successfully used the Cx3UvcOV5640 example.

I have a question: the example allows different resolutions including HD depending the USB speed. My laptop's USB is USB3.0, so theoretically I can run all these configurations. But I fails to configure the resolution. I've found this function call in the CyCx3AppInit():

status = CyU3PMipicsiSetIntfParams(&cfgUvcVgaNoMclk, CyFalse);

and replaced it with

status = CyU3PMipicsiSetIntfParams(&cfgUvc1080p30NoMclk, CyFalse);

But this didn't have any effect. How/where should I configure the code to get 1080 resolution?

0 Likes

You don't have to replace

status = CyU3PMipicsiSetIntfParams(&cfgUvcVgaNoMclk, CyFalse);

with

status = CyU3PMipicsiSetIntfParams(&cfgUvc1080p30NoMclk, CyFalse);

We provide the example project, you could just download the firmware into CX3 RAM/FLASH/EEPROM. Open the host application, choose the resolution from list, then you could view the 1080p vide stream.

0 Likes
Anonymous
Not applicable

This is exactly what I do. I'm using VLC to stream from capture device. Unfortunately, it seems that VLC doesn't allow to choose stream resolution. Is there any other players that you can suggest to test the example?

0 Likes

You could try with MPC-CH

https://mpc-hc.org/

0 Likes

Have you tried Windows' own amcap.exe? It doesn't come packaged with Windows 10 anymore, but will be there in C:\Windows folder in Windows 7...

0 Likes
Anonymous
Not applicable

OK, sorry for the delayed response, now I'm back from vacation.

I've installed MPC-CH. You can see that I don't receive the high rate options, only 640x480:

pastedImage_1.png

I want to emphasize that I'm compiling the standard example Cx3UvcOV5640. So what is wrong? Why can I get 1280x720 resolution?

0 Likes

Hi Michael,

From the screenshot, I presume that your device enumerates as USB 2.0 device instead of USB3.0. That's why you don't have any other resolution option.

The reasons my be summarized below.

  1. The defect of hardware design(USB 3.0 differential pairs).
  2. You use a USB2.0 cable or a bad "USB3.0" cable.
  3. You connect your device to a USB 2.0 port instead of a USB3.0 port.
  4. You modify the defalut statement

    status = CyU3PConnectState(CyTrue, CyTrue);

      as

    status = CyU3PConnectState(CyTrue, CyFalse);

0 Likes