USBFS and WINUSB on CY8C5888LTI-LP097 chip.

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

cross mob
Anonymous
Not applicable

I have one question concerning USBFS component and CY8C5888LTI-LP097 chip:
Is it possible to configure USBFS component, using PSoC Creator, in such way that when I connect CY8C5888LTI-LP097 chip via USBFS controller to Windows 10, Windows 10 automatically load WINUSB driver? I was reading something about OS Descriptors, but i could not find precise instruction how to configure USBFS component via Creator.

If someone can help, I would much appreciate.

Thank you.

Dusan.

0 Likes
1 Solution
SergiiV_71
Employee
Employee
First like received Welcome!

The Component provide an option to handle vendor specific requests. But you need to implement required requests processing in FW. Here is extract from datasheet:

Handle vendor requests in user code

The Component provides an empty vendor request handler (available in the USBFS_vnd.c file) for unsupported vendor requests. This parameter overrides the vendor request handler function with a user implementation. The USBFS_HandleVendorRqst() function must be implemented by the user to service incoming vendor requests. This function is invoked whenever the vendor request is received and must return with an indication on whether it was handled or not. This option is unchecked by default.

View solution in original post

0 Likes
10 Replies
AnkitaS_51
Employee
Employee
100 likes received 50 likes received 25 likes received

Hello

CYUSB.SYS and the driver from http://www.cypress.com/documentation/software-and-drivers/ez-usb-fx3-sof...gives signed drivers.About Winusb driver usage with USBFS component much info is not there

0 Likes
Anonymous
Not applicable

Thanks for replay,

But, if I understood correctly, isn't this driver intended for FX3 devices?

Best regards,

Dusan.

0 Likes

Hi Dusan,

I suppose you are looking for Microsoft OS Descriptors for USB Devices | Microsoft Docs​ section Extended Compat ID. The USBFS component in the String descriptor tab has an option "Include MS OS String descriptor" but descriptor value is hard coded. So most probably you would need to modify Component to serve your needs.

Anonymous
Not applicable

Hi svoz,

Thanks for joining discussion.

You are right, "Include MS OS String descriptor" option must be checked in order to append  the "MSFT100" string to OS descriptor index location of 0xEE.

Maybe I don't understood whole procedure correctly, but according to WCID Devices · pbatard/libwdi Wiki · GitHub I think that some other descriptors should be set in firmware ("Thus, the second part of making your device WCID is ensuring that your firmware answers a Vendor Request with wIndex=0x0004 and bRequest=0x##, to return a Compatible ID").

I'm just not sure is it possible to include this statements in firmware, or is possible to do whole procedure inside USBFS graphical commponent setup.

0 Likes
SergiiV_71
Employee
Employee
First like received Welcome!

The Component provide an option to handle vendor specific requests. But you need to implement required requests processing in FW. Here is extract from datasheet:

Handle vendor requests in user code

The Component provides an empty vendor request handler (available in the USBFS_vnd.c file) for unsupported vendor requests. This parameter overrides the vendor request handler function with a user implementation. The USBFS_HandleVendorRqst() function must be implemented by the user to service incoming vendor requests. This function is invoked whenever the vendor request is received and must return with an indication on whether it was handled or not. This option is unchecked by default.

0 Likes
Anonymous
Not applicable

Hi svoz,

Thank you for pointing me to that explanation. I will try to implement this

function inside FW somehow.

Thank you,

Best regards,

Dusan.

0 Likes
Anonymous
Not applicable

Just in case that someone is interested, it is possible to make Windows 10 load WINUSB driver if "CYUSB" is changed to WINUSB inside USBFS_descr.c file:

Instead of

(uint8)'C', (uint8)'Y', (uint8)'U', (uint8)'S', (uint8)'B',

0x00u, 0x00u,0x00u

should be put:

(uint8)'W', (uint8)'I',(uint8)'N', (uint8)'U', (uint8)'S', (uint8)'B',

0x00u, 0x00u,

Also 'Include MS OS String Descriptor' option should be checked inside setup of USBFS component.

After every full project regeneration it is necessary to change string again.

Regards,

Dusan.

It looks like a pre-build User Command (Build Settings -> yr project -> User Commands -> Pre Build) happens after code generation but before compilation. So it'd be possible to add a script here which edits the CYUSB to a WINUSB in the descriptor file.

That's kinda horrible, though --- is there a better way?

0 Likes

FWIW, I have a script which correctly patches the file here:

fluxengine/patcher.vbs at master · davidgiven/fluxengine · GitHub

If you add this to your project route and then put cscript patcher.vbs in your user command pre build box (and then edit the script to update the path), it'll patch the generated file on every build. Probably. At least it does when I try it. There's no error checking. But my device now works fine with WinUSB without needing an explicit driver or .inf file, which is great.

Dear friendly folk at Cypress: can we have this configurable, please? This script makes me a little nauseous every time I look at it.