7 Replies Latest reply on Feb 10, 2020 8:30 PM by YatheeshK_36

    Cypress FX3 Enumeration

    PrM_1403381

      Hi,

       

      I am using "USBBulkLoopAutoSignal" application in Cypress FX3 DVK, CYUSB3KIT-003 and I used USB Device Tree Viewer, when I connect FX3 DVK to the Host Device will detect in Device tree viewer properly. As shown in below image.

      But after I disconnect the FX3 also I am seeing warning message on the port where Cypress FX3 USB Bulkloop Example Device detected in USB tree viewer as shown below.

       

      I am using SDK Version 1.3.4. Do you have any idea ? what could be the reason a low speed Device detected in Device tree viewer.

      It is tested on Windows 8.1 and the Driver version I used is  DriverVer=08/21/2014,1.2.3.10.

       

      Best Regards

      Prasanna

        • 1. Re: Cypress FX3 Enumeration
          YatheeshK_36

          Hello Prasanna,

           

          Please use the latest cyusb3 driver from the FX3 SDK which is version 1.2.3.20.

          Also please check the device manager if the FX3 device is still listed under  "Universal Serial Bus Controllers"or "other devices" section after the device is plugged out from the host.

           

          Best Regards,

          Yatheesh

          • 2. Re: Cypress FX3 Enumeration
            PrM_1403381

            Hi Yatheesh,

             

            Thanks for you quick response. But after installing the driver version 1.2.3.20 I am getting below error.

             

            Best Regards

            Prasanna

            • 3. Re: Cypress FX3 Enumeration
              YatheeshK_36

              Hello Prasanna,

               

              There should not be any problem with the driver as well as the firmware. I tried it on my side and everything works well.

              Can you please try the steps mentioned in this page How to Fix 'The Software For This Device Has Been Blocked From Starting Because it is Known To Have Problems With Window…

              Did you try manually binding the driver to the latest one from the SDK?

              And is it the same problem when using other firmware on FX3 like the BulkLpAutoCpp?

               

              Best Regards,

              Yatheesh

              • 4. Re: Cypress FX3 Enumeration
                PrM_1403381

                Hi Yatheesh,

                 

                Thanks for your inputs, I will try the steps mentioned in the link and let you know. I tried manually binding the drivers from latest SDK.

                I will also test and let you know the status with "BulkLpAutoCpp".

                 

                Actually I am facing one more issue with my custom FX3 design. I have made a self powered device using Cypress FX3 with Type-C connector. And I am using same as USBBulkLoopAutoSignal as my reference design.

                Since it is self powered device I am monitoring Vbus from the other GPIO, when GPIO becomes low I am making CyU3PConnectState(CyFalse, CyTrue); and when GPIO becomes high CyU3PConnectState(CyTrue, CyTrue); is called. I will be using Type-C to Type-C 3.0 cable. the 3.0 device enumeration and everything happens properly. some times before enumeration of the device If I unplug the device from host and connect it back. I am seeing two devices in Device manager. one is my actual super speed 3.0 loop back device and the other high speed unknown device. So I suspected due to incomplete enumeration of previous iteration it might happened as explained. Once I entered to this situation as many times if I unplug and plugin the device each time two devices will be enumerated in Device manager as shown in figure below.

                So by API calls I tried a sequence, If I follow this below mentioned sequence and connect the device to the host it recovered from the above state.

                1. USB fallback to 2.0

                    

                             CyU3PUsbAckSetup ();

                            CyU3PThreadSleep (100);

                            CyFxBulkLpApplnStop ();

                            CyU3PConnectState (CyFalse, CyTrue);    // disconnect

                            CyU3PThreadSleep (100);

                            CyU3PConnectState (CyTrue, CyFalse);    // connect with USB 2.0 (FS/HS device)

                            CyU3PThreadSleep (10);

                 

                2.

                             CyU3PUsbAckSetup ();

                            CyU3PThreadSleep (100);

                            CyFxBulkLpApplnStop ();

                            CyU3PConnectState (CyFalse, CyTrue);   // disconnect

                            CyU3PThreadSleep (10);

                            CyU3PConnectState (CyTrue, CyTrue);    // connect with USB 3.0 (SS device)

                            CyU3PThreadSleep (10);

                 

                Do you have any idea, Why two device s getting enumerated ?

                How to over come this issue ?

                 

                I am using SDK 1.3.4 and the driver version is DriverVer=08/21/2014,1.2.3.10

                 

                Best Regards

                Prasanna

                • 5. Re: Cypress FX3 Enumeration
                  YatheeshK_36

                  Hello Prasanna,

                   

                  Please use the latest driver from the FX3 SDK version 1.2.3.20 and monitor the device in the windows device manager and not the tree viewer.

                   

                  Add a retry count (3 or 4) to monitor the VBUS through GPIO before calling CyU3PConnectState(CyTrue, CyTrue). This is to ensure that the VBUS is stable before you do a USB connect. Also, once the VBUS goes high, you can try disconnecting and then connecting using the API, here the return from the API when disconnecting should be ignored.

                   

                  Is the configuration descriptors of the device altered to self powered mode? i.e the bmAttributes in the configuration descriptor.

                  Are you connecting the device directly to a host or through a HUB?

                   

                  Is the issue seen only when the device is unplugged before enumeration, and will be device stay in the windows device manager even after the device is plugged out?

                   

                  Best Regards,

                  Yatheesh

                  • 6. Re: Cypress FX3 Enumeration
                    PrM_1403381

                    Hi Yatheesh,

                     

                    Please find my inline comments below.

                     

                    Please use the latest driver from the FX3 SDK version 1.2.3.20 and monitor the device in the windows device manager and not the tree viewer.

                    ----> Okay, I will update the latest driver version 1.2.3.20 update the status. I am monitoring both Windows device manager and as well Device tree viewer. Both will have the same outcome.

                     

                    Add a retry count (3 or 4) to monitor the VBUS through GPIO before calling CyU3PConnectState(CyTrue, CyTrue). This is to ensure that the VBUS is stable before you do a USB connect. Also, once the VBUS goes high, you can try disconnecting and then connecting using the API, here the return from the API when disconnecting should be ignored.

                    ----> Okay, Once Vbus high event is triggered I will validate the Vbus for 3-4 times while validating between iterations do I nee to give any delay? And once Vbus reached high I need to disconnect the USB CyU3PConnectState(CyFalse, CyTrue) and connect it back using CyU3PConnectState(CyTrue, CyTrue). right ?

                     

                    Is the configuration descriptors of the device altered to self powered mode? i.e the bmAttributes in the configuration descriptor.

                    Are you connecting the device directly to a host or through a HUB?

                    ----> Yes, I have changed the bmAttributes in configuration descriptor as self powered

                             0x40,                           /* Config characteristics - Self powered */

                    ----> I am connecting the device directly to the host, No Hub is used.

                    ----> Host I used for testing is Intel NUC7i5BNH, Windows 10 64-bit. test on TBT-Thunder bolt type-C Port.

                     

                    Is the issue seen only when the device is unplugged before enumeration, and will be device stay in the windows device manager even after the device is plugged out?

                    ----> Yes, I will connect the device and I will unplug the device before enumeration and detection on Device manager and if I connect it back that time I will the issue. one actual loop back device and one unknown device.

                    ----> After device plugged out from the host device will not be seen in device manager.

                     

                    You need any inputs for analysis. I will implemet your suggestions with latest SDK version drivers 1.2.3.20 and update you the status.

                     

                    Best Regards

                    Prasanna

                    • 7. Re: Cypress FX3 Enumeration
                      YatheeshK_36

                      Hello Prasanna,

                       

                      Please let me know if changing the driver to the latest one, and the disconnect/reconnect worked?

                       

                      Best Regards,

                      Yatheesh