4 Replies Latest reply on Feb 10, 2016 2:07 AM by petey_1574826

    USB 3.0 device registration issues

    petey_1574826

      Hi,

         

      I am working on an FX 3 USB 3,0 device with the firmware developed using the FX3 EZ USB Suite and am seeing some device
      registration issues.

         

      The device has a two-phase install. When the device is plugged our driver identifies the device, downloads the device specific
      firmware, and triggers a re-enumeration of the device which then comes up using the downloaded firmware and our driver then
      hooks it in as a device which sits on top of WinUSB.

         

      The device specific firmware has USB descriptors that should allow it load as either a USB 2.x device running at HS and FS, or
      as a USB 3.0 device capable of running at SS, HS, and FS, depending upon which USB slot it is connected to.

         

      Here are the issues that I am seeing:

         

      1. When I plug my device into a USB 3.0 port, it will occasionally register as a USB 3.0 device running at HS, and occasionally as
           a USB 2.1 device running at HS. It seems almost random as to which of the two types it will register as.

         

      2. When I attach my device to the USB 3,0 port both usbview.exe and usblyzer.exe takes a long time to run up, or refresh, and list
          the devices. This sluggishness does not happen when my device is not connected.

         

      3. When it does register as a USB 3.0 device it does not register as running at SS, but only HS.

         

      4. In neither case do the apps recognize or display the string descriptors I have configured for my device.

         

      When I plug it into a USB 2 port it registers correctly and the strings are seen and displayed by both usbview and usblyzer.

         

      Can anyone offer any suggestions as to why I am seeing these issues?

         

      I have seen on this forum (http://www.cypress.com/forum/usb-30-super-speed/looking-fx3-descriptors-work-winusb) that if the device is to be used with WinUSB you need additional descriptors.

         

      Below are the descriptors for my device (anonymized where necessary).

         

      Thanks,

         

      Peter Young
      Xitron Europe

         

      ------------------------------------------------------------------------------------

         

      /* Standard device descriptor for USB 3.0 */
      const uint8_t CyFxUSB30DeviceDscr[] __attribute__ ((aligned (32))) =
      {
          0x12,                           /* Descriptor size */
          CY_U3P_USB_DEVICE_DESCR,        /* Device descriptor type (0x01) */
          0x00,0x03,                      /* USB 3.0 */
          0x00,                           /* Device class */
          0x00,                           /* Device sub-class */
          0x00,                           /* Device protocol */
          0x09,                           /* Maxpacket size for EP0 : 2^9 = 512 bytes */
          VENDOR_ID,                      /* Vendor ID <anonymised> */
          PRODUCT_ID,                     /* Product ID <anonymised> */
          0x01,0x00,                      /* Device release number */
          0x01,                           /* Manufacture string index */
          0x02,                           /* Product string index */
          0x00,                           /* Serial number string index */
          0x01                            /* Number of configurations */
      };

         

      /* Standard device descriptor for USB 2.0 */
      const uint8_t CyFxUSB20DeviceDscr[] __attribute__ ((aligned (32))) =
      {
          0x12,                           /* Descriptor size */
          CY_U3P_USB_DEVICE_DESCR,        /* Device descriptor type (0x01) */
          0x10,0x02,                      /* USB 2.10 */
          0x00,                           /* Device class */
          0x00,                           /* Device sub-class */
          0x00,                           /* Device protocol */
          0x40,                           /* Maxpacket size for EP0 : 64 bytes */
          VENDOR_ID,                      /* Vendor ID <anonymised> */
          PRODUCT_ID,                     /* Product ID <anonymised> */
          0x01,0x00,                      /* Device release number */
          0x01,                           /* Manufacturer string index */
          0x02,                           /* Product string index */
          0x00,                           /* Serial number string index */
          0x01                            /* Number of configurations */
      };

         

      /* Binary device object store descriptor */
      const uint8_t CyFxUSBBOSDscr[] __attribute__ ((aligned (32))) =
      {
          0x05,                           /* Descriptor size */
          CY_U3P_BOS_DESCR,               /* Device descriptor type (0x0F) */
          0x16,0x00,                      /* Length of this descriptor and all sub descriptors */
          0x02,                           /* Number of device capability descriptors */

         

          /* USB 2.0 extension */
          0x07,                           /* Descriptor size */
          CY_U3P_DEVICE_CAPB_DESCR,       /* Device capability type descriptor (0x10) */
          CY_U3P_USB2_EXTN_CAPB_TYPE,     /* USB 2.0 extension capability type (0x02) */
          0x02,0x00,0x00,0x00,            /* Supported device level features: LPM support  */

         

          /* SuperSpeed device capability */
          0x0A,                           /* Descriptor size */
          CY_U3P_DEVICE_CAPB_DESCR,       /* Device capability type descriptor (0x10) */
          CY_U3P_SS_USB_CAPB_TYPE,        /* SuperSpeed device capability type (0x03) */
          0x00,                           /* Supported device level features  */
          0x0E,0x00,                      /* Speeds supported by the device : SS, HS and FS */
          0x03,                           /* Functionality support */
          0x0A,                           /* U1 Device Exit latency */
          0xFF,0x07                       /* U2 Device Exit latency */
      };

         

      /* Standard device qualifier descriptor */
      const uint8_t CyFxUSBDeviceQualDscr[] __attribute__ ((aligned (32))) =
      {
          0x0A,                           /* Descriptor size */
          CY_U3P_USB_DEVQUAL_DESCR,       /* Device qualifier descriptor type (0x06) */
          0x00,0x02,                      /* USB 2.0 */
          0x00,                           /* Device class */
          0x00,                           /* Device sub-class */
          0x00,                           /* Device protocol */
          0x40,                           /* Maxpacket size for EP0 : 64 bytes */
          0x01,                           /* Number of configurations */
          0x00                            /* Reserved */
      };

         

      /* Standard super speed configuration descriptor */
      const uint8_t CyFxUSBSSConfigDscr[] __attribute__ ((aligned (32))) =
      {
          /* Configuration descriptor */
          0x09,                           /* Descriptor size */
          CY_U3P_USB_CONFIG_DESCR,        /* Configuration descriptor type (0x02) */
          0x53,0x00,                      /* Length of this descriptor and all sub descriptors */
          0x01,                           /* Number of interfaces */
          0x01,                           /* Configuration number */
          0x00,                           /* Configuration string index */
          0x80,                           /* Config characteristics - Bus powered */
          0x32,                           /* Max power consumption of device (in 8mA unit) : 400mA */

         

          /* Interface descriptor */
          0x09,                           /* Descriptor size */
          CY_U3P_USB_INTRFC_DESCR,        /* Interface Descriptor type (0x04) */
          0x00,                           /* Interface number */
          0x00,                           /* Alternate setting number */
          0x05,                           /* Number of end points */
          0xFF,                           /* Interface class */
          0x00,                           /* Interface sub class */
          0x00,                           /* Interface protocol code */
          0x00,                           /* Interface descriptor string index */

         

          /* Endpoint descriptor for Debug Consumer EP */
          0x07,                           /* Descriptor size */
          CY_U3P_USB_ENDPNT_DESCR,        /* Endpoint descriptor type (0x05) */
          CY_FX_DEBUG_CONSUMER,           /* Consumes debug           (0x81) */
          CY_U3P_USB_EP_BULK,             /* Bulk endpoint type       (0x02) */
          0x00,0x04,                      /* Max packet size = 1024 bytes */
          0x00,                           /* Servicing interval for data transfers : 0 for bulk */

         

          /* Super speed endpoint companion descriptor for Debug Consumer EP */
          0x06,                           /* Descriptor size */
          CY_U3P_SS_EP_COMPN_DESCR,       /* SS endpoint companion descriptor type (0x30) */
          (CY_FX_EP_BURST_LENGTH - 1),    /* Max no. of packets in a burst(0-15) - 0: burst 1 packet at a time (0x03) */
          0x00,                           /* Max streams for bulk EP = 0 (No streams) */
          0x00,0x00,                      /* Service interval for the EP : 0 for bulk */

         

          /* Endpoint descriptor for Debug Producer EP */
          0x07,                           /* Descriptor size */
          CY_U3P_USB_ENDPNT_DESCR,        /* Endpoint descriptor type (0x05) */
          CY_FX_DEBUG_PRODUCER,           /* Produces debug           (0x01) */
          CY_U3P_USB_EP_BULK,             /* Bulk endpoint type       (0x02) */
          0x00,0x04,                      /* Max packet size = 1024 bytes */
          0x00,                           /* Servicing interval for data transfers : 0 for bulk */

         

          /* Super speed endpoint companion descriptor for Debug Producer EP */
          0x06,                           /* Descriptor size */
          CY_U3P_SS_EP_COMPN_DESCR,       /* SS endpoint companion descriptor type (0x30) */
          (CY_FX_EP_BURST_LENGTH - 1),    /* Max no. of packets in a burst(0-15) - 0: burst 1 packet at a time (0x03) */
          0x00,                           /* Max streams for bulk EP = 0 (No streams) */
          0x00,0x00,                      /* Service interval for the EP : 0 for bulk */

         

          /* Endpoint descriptor for API Consumer EP */
          0x07,                           /* Descriptor size */
          CY_U3P_USB_ENDPNT_DESCR,        /* Endpoint descriptor type     (0x05) */
          XI_API_CONSUMER,                /* Responses back to Plugin/DLL (0x82) */
          CY_U3P_USB_EP_BULK,             /* Bulk endpoint type           (0x02) */
          0x00,0x04,                      /* Max packet size = 1024 bytes */
          0x00,                           /* Servicing interval for data transfers : 0 for bulk */

         

          /* Super speed endpoint companion descriptor for API Consumer EP */
          0x06,                           /* Descriptor size */
          CY_U3P_SS_EP_COMPN_DESCR,       /* SS endpoint companion descriptor type (0x30) */
          (CY_FX_EP_BURST_LENGTH - 1),    /* Max no. of packets in a burst(0-15) - 0: burst 1 packet at a time (0x03) */
          0x00,                           /* Max streams for bulk EP = 0 (No streams) */
          0x00,0x00,                      /* Service interval for the EP : 0 for bulk */

         

          /* Endpoint descriptor for API Producer EP */
          0x07,                           /* Descriptor size */
          CY_U3P_USB_ENDPNT_DESCR,        /* Endpoint descriptor type     (0x05) */
          XI_API_PRODUCER,                /* Commands FROM the Plugin/DLL (0x04) */
          CY_U3P_USB_EP_BULK,             /* Bulk endpoint type           (0x02) */
          0x00,0x04,                      /* Max packet size = 1024 bytes */
          0x00,                           /* Servicing interval for data transfers : 0 for bulk */

         

          /* Super speed endpoint companion descriptor for API Producer EP */
          0x06,                           /* Descriptor size */
          CY_U3P_SS_EP_COMPN_DESCR,       /* SS endpoint companion descriptor type (0x30) */
          (CY_FX_EP_BURST_LENGTH - 1),    /* Max no. of packets in a burst(0-15) - 0: burst 1 packet at a time (0x03) */
          0x00,                           /* Max streams for bulk EP = 0 (No streams) */
          0x00,0x00,                      /* Service interval for the EP : 0 for bulk */

         

          /* Endpoint descriptor for Video Producer EP */
          0x07,                           /* Descriptor size */
          CY_U3P_USB_ENDPNT_DESCR,        /* Endpoint descriptor type         (0x05) */
          XI_VID_PRODUCER,                /* Video data from the Plugin/DLL   (0x06) */
          CY_U3P_USB_EP_BULK,             /* Bulk endpoint type               (0x02) */
          0x00,0x04,                      /* Max packet size = 1024 bytes */
          0x00,                           /* Servicing interval for data transfers : 0 for bulk */

         

          /* Super speed endpoint companion descriptor for Video Producer EP */
          0x06,                           /* Descriptor size */
          CY_U3P_SS_EP_COMPN_DESCR,       /* SS endpoint companion descriptor type (0x30) */
          (CY_FX_EP_BURST_LENGTH - 1),    /* Max no. of packets in a burst(0-15) - 0: burst 1 packet at a time (0x03) */
          0x00,                           /* Max streams for bulk EP = 0 (No streams) */
          0x00,0x00,                      /* Service interval for the EP : 0 for bulk */
      };

         

      /* Standard high speed configuration descriptor */
      const uint8_t CyFxUSBHSConfigDscr[] __attribute__ ((aligned (32))) =
      {
          /* Configuration descriptor */
          0x09,                           /* Descriptor size */
          CY_U3P_USB_CONFIG_DESCR,        /* Configuration descriptor type  (0x02) */
          0x35,0x00,                      /* Length of this descriptor and all sub descriptors */
          0x01,                           /* Number of interfaces */
          0x01,                           /* Configuration number */
          0x00,                           /* COnfiguration string index */
          0x80,                           /* Config characteristics - bus powered */
          0x32,                           /* Max power consumption of device (in 2mA unit) : 100mA */

         

          /* Interface descriptor */
          0x09,                           /* Descriptor size */
          CY_U3P_USB_INTRFC_DESCR,        /* Interface Descriptor type      (0x04) */
          0x00,                           /* Interface number */
          0x00,                           /* Alternate setting number */
          0x05,                           /* Number of endpoints */
          0xFF,                           /* Interface class */
          0x00,                           /* Interface sub class */
          0x00,                           /* Interface protocol code */
          0x00,                           /* Interface descriptor string index */

         

          /* Endpoint descriptor for producer EP */
          0x07,                           /* Descriptor size */
          CY_U3P_USB_ENDPNT_DESCR,        /* Endpoint descriptor type       (0x05) */
          CY_FX_DEBUG_CONSUMER,           /* Consumes debug                 (0x81) */
          CY_U3P_USB_EP_BULK,             /* Bulk endpoint type             (0x02) */
          0x00,0x02,                      /* Max packet size = 512 bytes */
          0x00,                           /* Servicing interval for data transfers : 0 for bulk */

         

          /* Endpoint descriptor for consumer EP */
          0x07,                           /* Descriptor size */
          CY_U3P_USB_ENDPNT_DESCR,        /* Endpoint descriptor type       (0x05) */
          CY_FX_DEBUG_PRODUCER,           /* Produces debug                 (0x01) */
          CY_U3P_USB_EP_BULK,             /* Bulk endpoint type             (0x02) */
          0x00,0x02,                      /* Max packet size = 512 bytes */
          0x00,                           /* Servicing interval for data transfers : 0 for bulk */

         

          /* Endpoint descriptor for producer EP */
          0x07,                           /* Descriptor size */
          CY_U3P_USB_ENDPNT_DESCR,        /* Endpoint descriptor type       (0x05) */
          XI_API_CONSUMER,                 /* Responses back to Plugin/DLL   (0x82) */
          CY_U3P_USB_EP_BULK,             /* Bulk endpoint type             (0x02) */
          0x00,0x02,                      /* Max packet size = 512 bytes */
          0x00,                           /* Servicing interval for data transfers : 0 for bulk */

         

          /* Endpoint descriptor for consumer EP */
          0x07,                           /* Descriptor size */
          CY_U3P_USB_ENDPNT_DESCR,        /* Endpoint descriptor type       (0x05) */
          XI_API_PRODUCER,                /* Commands FROM the Plugin/DLL   (0x04) */
          CY_U3P_USB_EP_BULK,             /* Bulk endpoint type             (0x02) */
          0x00,0x02,                      /* Max packet size = 512 bytes */
          0x00,                            /* Servicing interval for data transfers : 0 for bulk */

         

          /* Endpoint descriptor for consumer EP */
          0x07,                           /* Descriptor size */
          CY_U3P_USB_ENDPNT_DESCR,        /* Endpoint descriptor type       (0x05) */
          XI_VID_PRODUCER,                /* Video data from the Plugin/DLL (0x06) */
          CY_U3P_USB_EP_BULK,             /* Bulk endpoint type             (0x02) */
          0x00,0x02,                      /* Max packet size = 512 bytes */
          0x00,                            /* Servicing interval for data transfers : 0 for bulk */
      };

         

      /* Standard full speed configuration descriptor */
      const uint8_t CyFxUSBFSConfigDscr[] __attribute__ ((aligned (32))) =
      {
          /* Configuration descriptor */
          0x09,                           /* Descriptor size */
          CY_U3P_USB_CONFIG_DESCR,        /* Configuration descriptor type (0x02) */
          0x20,0x00,                      /* Length of this descriptor and all sub descriptors */
          0x01,                           /* Number of interfaces */
          0x01,                           /* Configuration number */
          0x00,                           /* COnfiguration string index */
          0x80,                           /* Config characteristics - bus powered */
          0x32,                           /* Max power consumption of device (in 2mA unit) : 100mA */

         

          /* Interface descriptor */
          0x09,                           /* Descriptor size */
          CY_U3P_USB_INTRFC_DESCR,        /* Interface descriptor type (0x04) */
          0x00,                           /* Interface number */
          0x00,                           /* Alternate setting number */
          0x02,                           /* Number of endpoints */
          0xFF,                           /* Interface class */
          0x00,                           /* Interface sub class */
          0x00,                           /* Interface protocol code */
          0x00,                           /* Interface descriptor string index */

         

          /* Endpoint descriptor for consumer EP */
          0x07,                           /* Descriptor size */
          CY_U3P_USB_ENDPNT_DESCR,        /* Endpoint descriptor type (0x05) */
          CY_FX_DEBUG_CONSUMER,           /* Endpoint address and description (0x81) */
          CY_U3P_USB_EP_BULK,             /* Bulk endpoint type (0x02) */
          0x40,0x00,                      /* Max packet size = 64 bytes */
          0x00,                           /* Servicing interval for data transfers : 0 for bulk */

         

          /* Endpoint descriptor for producer EP */
          0x07,                           /* Descriptor size */
          CY_U3P_USB_ENDPNT_DESCR,        /* Endpoint descriptor type (0x05) */
          CY_FX_DEBUG_PRODUCER,           /* Endpoint address and description (0x01) */
          CY_U3P_USB_EP_BULK,             /* Bulk endpoint type (0x02) */
          0x40,0x00,                      /* Max packet size = 64 bytes */
          0x00                            /* Servicing interval for data transfers : 0 for bulk */
      };

         

      /* Standard language ID string descriptor */
      const uint8_t CyFxUSBStringLangIDDscr[] __attribute__ ((aligned (32))) =
      {
          0x04,                           /* Descriptor size */
          CY_U3P_USB_STRING_DESCR,        /* Device descriptor type */
          0x09,0x04                       /* Language ID supported */
      };

         

      /* Standard manufacturer string descriptor */
      const uint8_t CyFxUSBManufactureDscr[] __attribute__ ((aligned (32))) =
      {
          0x0E,                           /* Descriptor size */
          CY_U3P_USB_STRING_DESCR,        /* Device descriptor type */
          'X',0x00,
          'i',0x00,
          't',0x00,
          'r',0x00,
          'o',0x00,
          'n',0x00
      };

         

      /* Standard product string descriptor */
      const uint8_t CyFxUSBProductDscr[] __attribute__ ((aligned (32))) =
      {
          0x18,                           /* Descriptor size */
          CY_U3P_USB_STRING_DESCR,        /* Device descriptor type */
          'U',0x00,
          'S',0x00,
          'B',0x00,
          ' ',0x00,
          't',0x00,
          'o',0x00,
          ' ',0x00,
          'S',0x00,
          'C',0x00,
          'S',0x00,
          'I',0x00
      };

         

      /* Microsoft OS Descriptor. */
      const uint8_t CyFxUsbOSDscr[] __attribute__ ((aligned (32))) =
      {
          0x3A,
          CY_U3P_USB_STRING_DESCR,
          'X', 0x00,
          'i', 0x00,
          't', 0x00,
          'r', 0x00,
          'o', 0x00,
          'n', 0x00,
          ' ', 0x00,
          'U', 0x00,
          'S', 0x00,
          'B', 0x00,
          ' ', 0x00,
          't', 0x00,
          'o', 0x00,
          ' ', 0x00,
          'S', 0x00,
          'C', 0x00,
          'S', 0x00,
          'I', 0x00,
          ' ', 0x00,
          'C', 0x00,
          'o', 0x00,
          'n', 0x00,
          'v', 0x00,
          'e', 0x00,
          'r', 0x00,
          't', 0x00,
          'e', 0x00,
          'r', 0x00
      };

         

      const uint8_t CyFxUsbDscrAlignBuffer[32] __attribute__ ((aligned (32)));

        • 1. Re: USB 3.0 device registration issues
          petey_1574826

          Some additional info.

             

          The attached image is the BOS descriptor from Microsoft Message Analyzer catching the USB interactions.
          As you can see from the above descriptor info (BOS repeated here for simplicity) my bmAttributes field in
          the USB 2.0 Extension Capability does not appear to match the value reported by the MMA.

             

          My descriptor value appears to be correct and matches those in the FX3 example files but the value reported
          by the MMA is 0x00008000 followed by two lots of 0x0. I am not sure how we get to that from 0x00000002.

             

          Additionally, the SS device capability does not appear to have been read, presumably because the LPM bit is
          not set and, according to the USB 3.0 spec (Section 9.6.2.1) SS devices must set this bit.

             

          /* Binary device object store descriptor */
          const uint8_t CyFxUSBBOSDscr[] __attribute__ ((aligned (32))) =
          {
              0x05,                           /* Descriptor size */
              CY_U3P_BOS_DESCR,               /* Device descriptor type (0x0F) */
              0x16,0x00,                      /* Length of this descriptor and all sub descriptors */
              0x02,                           /* Number of device capability descriptors */

             

              /* USB 2.0 extension */
              0x07,                           /* Descriptor size */
              CY_U3P_DEVICE_CAPB_DESCR,       /* Device capability type descriptor (0x10) */
              CY_U3P_USB2_EXTN_CAPB_TYPE,     /* USB 2.0 extension capability type (0x02) */
              0x02,0x00,0x00,0x00,            /* Supported device level features: LPM support  */

             

              /* SuperSpeed device capability */
              0x0A,                           /* Descriptor size */
              CY_U3P_DEVICE_CAPB_DESCR,       /* Device capability type descriptor (0x10) */
              CY_U3P_SS_USB_CAPB_TYPE,        /* SuperSpeed device capability type (0x03) */
              0x00,                           /* Supported device level features  */
              0x0E,0x00,                      /* Speeds supported by the device : SS, HS and FS */
              0x03,                           /* Functionality support */
              0x0A,                           /* U1 Device Exit latency */
              0xFF,0x07                       /* U2 Device Exit latency */
          };

             

           

             

          • 2. Re: USB 3.0 device registration issues
            petey_1574826

            Some more information.

               

            It would appear that the SS USB ports on my laptop do not operate at 5GB/sec.

               

            Some of the ports on another PC in the office which claims to have SS USB ports also do not operate as 5GB/s ports!

               

            The same PC does have a USB 3.0 PCIe card, which we bought for the USB 3.0 external drives, whose ports do appear to operate as 5GB/s.

               

            Plugging the device into one of the standard 'HS' ports on the PC produces the following behavior:
            -              The device registers at HS.
            -              All of the descriptors get read properly.
            -              My device diags tool sees the device and reports the firmware rev properly and the debug commands work as expected.

               

            Plugging the device into one of the native 'SS' ports on the PC produces the following behavior:
            -              The device registers (but at HS, not SS).
            -              The string descriptors do not appear to get read properly; neither does the BOS descriptor.
            -              My device diags tool sees the device but registers the firmware rev incorrectly and does not respond to any debug commands.

               

            Plugging the device into one of the PCIe 'SS' ports on the PC produces the following behaviour:
            -              The device registers at SS.
            -              Most of the descriptors do NOT get read as the device is in low-power mode.
            -              My device diags tool fails sees the device, presumably because the descriptor read failed.

               

            Any suggestions as to why my device is failing to register properly on a SS port?

               

            I have posted my descriptors above, if they are of any assistance.

               

            Thanks in advance.

               

            Peter

            • 4. Re: USB 3.0 device registration issues
              petey_1574826

              Andy,

                 

              Thanks for the links. I have looked them both over and I don't believe that they are the cause of my problem, although there is quite a large chance I could be wrong.

                 

              I tried to post the output from usbview.exe in my previous post but the forum claimed I had triggered a spam filter so I have attached it as an attachment (usbview.txt). I have also attached a PNG showing the HTML output from USBLyzer.exe for the same device.

                 

              According to the HTML output my device is operating at SS when connected via the PCIe USB port but usbview text seems to show that tmy device has switched into LPM so while the trace shows that the device and config descriptors are read, the app only shows the device descriptor.

                 

              I am starting to think that there may be an issue with our board design so I will be speaking with the hardware guy about it as well.

                 

              Any other advice/suggestions greatfully received.

                 

              Pete Y.

              • 5. Re: USB 3.0 device registration issues
                petey_1574826

                Hi,

                   

                I have spent some time discussing this with the firmware and hardware engineers and we have managed to figure out what has been causing the problems and small fix to the hardware and firmware 
                means that the board now registers in a proper USB 3.0 port (on the PCIe card).

                   

                Interestingly it still registers as HS when plugged into a built-in USB 3.0 port but I suspect that is another issue altogether.

                   

                Thanks to all who offered advice and suggestions on this (AndyMcC0)

                   

                Pete Y