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

USB superspeed peripherals

OfOr_1738446
Level 3
25 replies posted 10 replies posted 10 questions asked
Level 3

Hello,

My code is based on AN75779 and I communicate with the Control EP with the "Cypress FX3 Example device 1" driver.

All new Windows 10 PC's that I have tested my mode with have a safety mechanism that prevent windows from installing the driver correctly because its not singed, and instead of it  appearing in Universal Serial Bus controllers, it shows as Other devices and its not working properly.

The only thing I can do is to change the settings in the PC BIOS, enable windows test mode and only then the driver is installed correctly.

This procedure is fine for my tests but I can't expect my clients to do this procedure. Is their a way to overcome this issue with the driver signature? Or to communicate with the Control EP via the regular UVC driver?

 

All the best,

Ofer. 

0 Likes
1 Solution
JayakrishnaT_76
Moderator
Moderator First question asked 1000 replies posted 750 replies posted
Moderator

Hello,

This issue can happen if the driver is not digitally signed. The driver that comes along with FX3 SDK (1.2.3.20) is digitally signed. If you have modified the cyusb3.inf associated with this driver or if you are using an unsigned version of this driver, then the behavior that you have mentioned in the description will be seen. To fix the issue, you need to use a driver that is digitally signed.

Another alternative to send vendor commands without using a vendor driver to a UVC device is to make use of the UVC extension unit. Please refer to the following KBA which mentions more about the UVC extension unit:

https://community.cypress.com/t5/Knowledge-Base-Articles/FX3-CX3-UVC-Extension-Unit-Application-KBA2...

The KBA also provides a sample host application to communicate with the UVC extension unit.

Best Regards,
Jayakrishna

View solution in original post

0 Likes
3 Replies
JayakrishnaT_76
Moderator
Moderator First question asked 1000 replies posted 750 replies posted
Moderator

Hello,

This issue can happen if the driver is not digitally signed. The driver that comes along with FX3 SDK (1.2.3.20) is digitally signed. If you have modified the cyusb3.inf associated with this driver or if you are using an unsigned version of this driver, then the behavior that you have mentioned in the description will be seen. To fix the issue, you need to use a driver that is digitally signed.

Another alternative to send vendor commands without using a vendor driver to a UVC device is to make use of the UVC extension unit. Please refer to the following KBA which mentions more about the UVC extension unit:

https://community.cypress.com/t5/Knowledge-Base-Articles/FX3-CX3-UVC-Extension-Unit-Application-KBA2...

The KBA also provides a sample host application to communicate with the UVC extension unit.

Best Regards,
Jayakrishna
0 Likes
OfOr_1738446
Level 3
25 replies posted 10 replies posted 10 questions asked
Level 3

Hello Jayakrishna,

Thank you for the reply.

Up until recently, I didn't need to change the cyusb3.inf file. When I started to see that it appears in "Other devices", I found this link: https://community.cypress.com/t5/USB-Superspeed-Peripherals/How-to-force-bind-the-interrupts-to-cyus... 

In the AN75779 code the Product ID is set to 00F9 and in the inf file it writes: VID_04B4&PID_FFF2.DeviceDesc="Cypress FX3 Example device 1" so I changed the FFF2 to 00F9.

 

I don't understand why it worked without the change and now I need to change it.

 

0 Likes
JayakrishnaT_76
Moderator
Moderator First question asked 1000 replies posted 750 replies posted
Moderator

Hello,

As per my understanding, the PID used in the descriptors present in the project (firmware) was 0x00F9. But you wanted to use 0xFFF2 (Cypress FX3 Example device 1). Due to this, the PID in the cyusb3.inf corresponding to Cypress FX3 Example device 1 was changed from 0xFFF2 to 0x00F9. Please let me know if my understanding is correct or not.

If my understanding is correct, then the driver signature will be lost as the cyusb3.inf was modified. To bind the device properly with the driver, you need to put the PC to test mode in this case. 

Can you please try the following and let me know if it is working properly or not:

1. Uninstall device from device manager.

2. Change the PID in the descriptors present in the project (firmware) from 0x00F9 to 0xFFF2.

3. Try programming the device with the modified firmware.

4. You might need to manually bind the device for the first time. Choose Cypress FX3 Example device 1 while manually binding the device.

5. Check if the enumeration is successful or not.

Please note that the Cypress defined VID/PID cannot be used for mass production. Please refer to the following thread which mentions about this:

https://community.cypress.com/t5/USB-Superspeed-Peripherals/What-am-i-allowed-to-do-with-default-PID...

So, if you want to use cyusb3 driver for production, then you will have to use your own VID/PID and resell the cyusb3 driver. The procedure for driver resell is provided in page 15 of CyUSB.pdf. This document comes along with FX3 SDK and can be found in the following location:

C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\doc\SuiteUSB

Another method to implement the vendor commands for a UVC device is to make use of UVC extension unit as mentioned in my previous response.

Best Regards,
Jayakrishna
0 Likes