Cypress FX3 interaction with FTDI

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

cross mob
AlGu_4822586
Level 1
Level 1

Hello Cypress community,

We are a medical device company seeking assistance with what we perceive is an issue between USB drivers of system subcomponents.  One device is a portable ultrasound system that incorporates a Cypress FX3 with superspeed USB communication for the imaging pipeline.  The other device is an NDI Electromagnetic (EM) tracker that has an FTDI chip/driver.

The actual issue we experience is that initialization of the EM tracker (FTDI) results in loss of communication with the Ultrasound system (Cypress).  We believe this may be related to some kind of USB enumeration that occurs in the FTDI driver.  Source code for this particular Ascension tracker (i.e. ATC3DG.dll) is not available.  We are curious if this might be a known interaction between Cypress/FTDI.  Our workaround is to enforce initialization of the EM system before the Ultrasound system, but we would like to pursue a better solution and root cause, if possible.

A few more details:

- The Ultrasound system is running Windows 10 and we have tested with v1.2.3.14 and v1.2.3.20 of "Cypress FX3 USB Bootloader" device drivers

- NDI driver version being used is v2.08.28

- NDI distributes both Virtual COM Port (VCP) and D2XX drivers for 32 and 64 bit platforms

- We have a software application talking to both components that is 32-bit and runs on the Windows 10 device

- The NDI EM 3D tracker may be utilizing winusb.dll (based on some VID/PID information in device manager)

- It may be the case that when the FX3 powers on (or when it is reset), it appears as a USB 2.0 device or is otherwise recognized by the NDI driver as a possible connection for the EM tracker

- We have confirmed the NDI driver does not stop after finding a single EM device.  If multiple EM devices are connected, a call to InitializeBIRDSystem() will error out with an illegal multiple configuration

We have wondered whether this is possibly a 32/64-bit mismatch, and have also wondered whether we might be able to modify the driver INF file for either/both winusb.dll and the FX3 USB driver to see if we could have winusb ignore the FX3. 

Any thoughts or troubleshooting are appreciated.  We are also pursuing support with NDI and I can communicate anything fruitful here for reference.

Alan

0 Likes
1 Solution
YatheeshD_36
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hello Alan,

Can you please give more details on the FX3 usage and functionality in this application?

On which host is the FX3 device enumerating? The OS and architecture of the host?

Fx3 Bootloader device will enumerate as a 2.0 device with VID/PID 04B4/00F3 and cyusb3  version 1.2.3.20 is recommended driver to communicate with it in vendor mode. External firmware needs to be running on FX3 to enumerate it as a 3.0 device.

We have wondered whether this is possibly a 32/64-bit mismatch, and have also wondered whether we might be able to modify the driver INF file for either/both winusb.dll and the FX3 USB driver to see if we could have winusb ignore the FX3.

Yes the respective driver INF file can be modified to remove the VID/PID entry for FX3.

Also you can forcefully bind the device to the required driver.

Thanks,

Yatheesh

View solution in original post

0 Likes
3 Replies
YatheeshD_36
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hello Alan,

Can you please give more details on the FX3 usage and functionality in this application?

On which host is the FX3 device enumerating? The OS and architecture of the host?

Fx3 Bootloader device will enumerate as a 2.0 device with VID/PID 04B4/00F3 and cyusb3  version 1.2.3.20 is recommended driver to communicate with it in vendor mode. External firmware needs to be running on FX3 to enumerate it as a 3.0 device.

We have wondered whether this is possibly a 32/64-bit mismatch, and have also wondered whether we might be able to modify the driver INF file for either/both winusb.dll and the FX3 USB driver to see if we could have winusb ignore the FX3.

Yes the respective driver INF file can be modified to remove the VID/PID entry for FX3.

Also you can forcefully bind the device to the required driver.

Thanks,

Yatheesh

0 Likes

Hello YatheeshK,

Thank you for the rapid response and initial details.  Some additional comments:

Can you please give more details on the FX3 usage and functionality in this application?

I am requesting some description/clarification from the ultrasound vendor about usage/functionality.  My understanding is that the FX3 is used for buffering realtime ultrasound data acquired from an on-board FPGA to the host software application and user interface.

On which host is the FX3 device enumerating? The OS and architecture of the host?

The FX3 is enumerating on the ultrasound tablet device.  This is a Windows 10 Pro (x64) OS running on the tablet.  The software application is x86.  The Device Manager lists the FX3 under Universal Serial Bus controllers as Cypress FX3 USB BootLoader Device.  Hardware Ids show VID 04B4 and PID 00F3 as you mentioned. 

Yes the respective driver INF file can be modified to remove the VID/PID entry for FX3.

Also you can forcefully bind the device to the required driver.

We will investigate/experiment with some ID filtering or forced binding and I will report back on results.


Again, thank you for the support and let me know if I can provide more information in the meantime.

Alan

0 Likes

Hello Alan,

The information you provided is useful.

We provide  x86 and x64 drivers (cyusb3 from FX3 SDK) for Windows 10. This can be used to bind the fx3 device and retrieve the data from the peripheral.

Please let me know when you have updates.

Thanks,

Yatheesh

0 Likes