diff --git a/QcomModulePkg/Application/FastbootApp/FastbootMain.c b/QcomModulePkg/Application/FastbootApp/FastbootMain.c
index b51b0fd..ee42547 100644
--- a/QcomModulePkg/Application/FastbootApp/FastbootMain.c
+++ b/QcomModulePkg/Application/FastbootApp/FastbootMain.c
@@ -58,6 +58,41 @@
 
 /* Global fastboot data */
 static FastbootDeviceData Fbd;
+static USB_DEVICE_DESCRIPTOR_SET DescSet;
+
+STATIC
+CONST
+struct {
+  EFI_USB_BOS_DESCRIPTOR                BosDescriptor;
+  EFI_USB_USB_20_EXTENSION_DESCRIPTOR   Usb2ExtDescriptor;
+  EFI_USB_SUPERSPEED_USB_DESCRIPTOR     SsUsbDescriptor;
+} BinaryObjectStore = {
+  // BOS Descriptor
+  {
+    sizeof(EFI_USB_BOS_DESCRIPTOR),               // Descriptor Size
+    USB_DESC_TYPE_BOS,                            // Descriptor Type
+    sizeof(BinaryObjectStore),                    // Total Length
+    2                                             // Number of device capabilities
+  },
+  // USB2 Extension Desc
+  {
+    sizeof(EFI_USB_USB_20_EXTENSION_DESCRIPTOR),  // Descriptor Size
+    USB_DESC_TYPE_DEVICE_CAPABILITY,              // Device Capability Type descriptor
+    USB_DEV_CAP_TYPE_USB_20_EXTENSION,            // USB 2.0 Extension Capability Type
+    0x6                                           // Supported device level features
+  },
+  // Super Speed Device Capability Desc
+  {
+    sizeof(EFI_USB_SUPERSPEED_USB_DESCRIPTOR),    // Descriptor Size
+    USB_DESC_TYPE_DEVICE_CAPABILITY,              // Device Capability Type descriptor
+    USB_DEV_CAP_TYPE_SUPERSPEED_USB,              // SuperSpeed Device Capability Type
+    0x00,                                         // Supported device level features
+    0x0E,                                         // Speeds Supported by the device: SS, HS and FS
+    0x01,                                         // Functionality support
+    0x07,                                         // U1 Device Exit Latency
+    0x65                                          // U2 Device Exit Latency
+  }
+};
 
 FastbootDeviceData GetFastbootDeviceData()
 {
@@ -74,7 +109,9 @@
 {
   EFI_STATUS                    Status;
   USB_DEVICE_DESCRIPTOR         *DevDesc;
+  USB_DEVICE_DESCRIPTOR         *SSDevDesc;
   VOID                          *Descriptors;
+  VOID                          *SSDescriptors;
   EFI_EVENT                     UsbConfigEvt;
   EFI_GUID                      UsbDeviceProtolGuid =
                                 { 0xd9d9ce48, 0x44b8, 0x4f49,
@@ -106,10 +143,19 @@
   }
 
   /* Build the descriptor for fastboot */
-  BuildDefaultDescriptors(&DevDesc, &Descriptors);
-  
+  BuildDefaultDescriptors(&DevDesc, &Descriptors, &SSDevDesc, &SSDescriptors);
+
+  DescSet.DeviceDescriptor = DevDesc;
+  DescSet.Descriptors = &Descriptors;
+  DescSet.SSDeviceDescriptor = SSDevDesc;
+  DescSet.SSDescriptors = &SSDescriptors;
+  DescSet.DeviceQualifierDescriptor = &DeviceQualifier;
+  DescSet.BinaryDeviceOjectStore =  (VOID *) &BinaryObjectStore;
+  DescSet.StringDescriptorCount = 5;
+  DescSet.StringDescritors = StrDescriptors;
+
   /* Start the usb device */
-  Status = Fbd.UsbDeviceProtocol->Start(DevDesc, &Descriptors, &DeviceQualifier, NULL, 5, StrDescriptors);
+  Status = Fbd.UsbDeviceProtocol->StartEx(&DescSet);
 
   /* Allocate buffers required to receive the data from Host*/
   Status = Fbd.UsbDeviceProtocol->AllocateTransferBuffer(USB_BUFF_SIZE, &Fbd.gRxBuffer);
diff --git a/QcomModulePkg/Application/FastbootApp/UsbDescriptors.c b/QcomModulePkg/Application/FastbootApp/UsbDescriptors.c
index 3272633..1042221 100644
--- a/QcomModulePkg/Application/FastbootApp/UsbDescriptors.c
+++ b/QcomModulePkg/Application/FastbootApp/UsbDescriptors.c
@@ -40,7 +40,7 @@
 DeviceDescriptor = {
   sizeof(EFI_USB_DEVICE_DESCRIPTOR),  // uint8  bLength;
   USB_DESC_TYPE_DEVICE,               // uint8  bDescriptorType;
-  0x0200,                             // uint16 bcdUSB;
+  0x0210,                             // uint16 bcdUSB;
   0x00,                               // uint8  bDeviceClass;
   0x00,                               // uint8  bDeviceSubClass;
   0x00,                               // uint8  bDeviceProtocol;
@@ -54,6 +54,24 @@
   1                                   // uint8  bNumConfigurations;
 };
 
+STATIC
+EFI_USB_DEVICE_DESCRIPTOR
+SSDeviceDescriptor = {
+  sizeof(EFI_USB_DEVICE_DESCRIPTOR),  // uint8  bLength;
+  USB_DESC_TYPE_DEVICE,               // uint8  bDescriptorType;
+  0x0300,                             // uint16 bcdUSB;
+  0x00,                               // uint8  bDeviceClass;
+  0x00,                               // uint8  bDeviceSubClass;
+  0x00,                               // uint8  bDeviceProtocol;
+  9,                                  // uint8  bMaxPacketSize0;
+  FAST_BOOT_VENDOR,                   // uint16 idVendor;
+  FAST_BOOT_IDPRODUCT,                // uint16 idProduct;
+  0x100,                              // uint16 bcdDevice;
+  1,                                  // uint8  iManufacturer;
+  2,                                  // uint8  iProduct;
+  3,                                  // uint8  iSerialNumber;
+  1                                   // uint8  bNumConfigurations;
+};
 
 EFI_USB_DEVICE_QUALIFIER_DESCRIPTOR
 DeviceQualifier = {
@@ -68,6 +86,68 @@
   0                                             // uint8  bReserved;
 };
 
+STATIC
+struct _SSCfgDescTree {
+  EFI_USB_CONFIG_DESCRIPTOR    ConfigDescriptor;
+  EFI_USB_INTERFACE_DESCRIPTOR InterfaceDescriptor;
+  EFI_USB_ENDPOINT_DESCRIPTOR  EndpointDescriptor0;
+  EFI_USB_SS_ENDPOINT_COMPANION_DESCRIPTOR EndpointCompanionDescriptor0;
+  EFI_USB_ENDPOINT_DESCRIPTOR  EndpointDescriptor1;
+  EFI_USB_SS_ENDPOINT_COMPANION_DESCRIPTOR EndpointCompanionDescriptor1;
+} TotalSSConfigDescriptor = {
+  {
+    sizeof(EFI_USB_CONFIG_DESCRIPTOR),      // uint8  bLength;
+    USB_DESC_TYPE_CONFIG,                   // uint8  bDescriptorType;
+    sizeof(TotalSSConfigDescriptor),        // uint16 wTotalLength;
+    1,                                      // uint8  bNumInterfaces;
+    1,                                      // uint8  bConfigurationValue;
+    0,                                      // uint8  iConfiguration;
+    0x80,                                   // uint8  bmAttributes;
+    0x10                                    // uint8  bMaxPower;
+  },
+  {
+    sizeof(EFI_USB_INTERFACE_DESCRIPTOR), // uint8  bLength;
+    USB_DESC_TYPE_INTERFACE,              // uint8  bDescriptorType;
+    0,                                    // uint8  bInterfaceNumber;
+    0,                                    // uint8  bAlternateSetting;
+    2,                                    // uint8  bNumEndpoints;
+    0xff,                                 // uint8  bInterfaceClass;
+    0x42,                                 // uint8  bInterfaceSubClass;
+    0x03,                                 // uint8  bInterfaceProtocol;
+    4
+  },
+  {
+    sizeof(EFI_USB_ENDPOINT_DESCRIPTOR), // uint8  bLength;
+    USB_DESC_TYPE_ENDPOINT,              // uint8  bDescriptorType;
+    ENDPOINT_ADDR(USBLB_BULK_EP, TRUE),  // uint8  bEndpointAddress;
+    USB_ENDPOINT_BULK,                   // uint8  bmAttributes;
+    1024,                                // uint16 wMaxPacketSize; SS=1024, HS=512 , FS=64
+    0                                    // uint8  bInterval;
+  },
+  {
+    sizeof(EFI_USB_SS_ENDPOINT_COMPANION_DESCRIPTOR), // uint8 bLength
+    USB_DESC_TYPE_SS_ENDPOINT_COMPANION,                      // uint8 bDescriptorType
+    4,                                                        // uint8 bMaxBurst,    0 => max burst 1
+    0,                                                        // uint8 bmAttributes, 0 => no stream
+    0,                                                        // uint8 wBytesPerInterval. Does not apply to BULK
+  },
+  {
+    sizeof(EFI_USB_ENDPOINT_DESCRIPTOR), // uint8  bLength;
+    USB_DESC_TYPE_ENDPOINT,              // uint8  bDescriptorType;
+    ENDPOINT_ADDR(USBLB_BULK_EP, FALSE), // uint8  bEndpointAddress;
+    USB_ENDPOINT_BULK,                   // uint8  bmAttributes;
+    1024,                                // uint16 wMaxPacketSize; SS=1024, HS=512 , FS=64
+    0                                    // uint8  bInterval;
+  },
+  {
+    sizeof(EFI_USB_SS_ENDPOINT_COMPANION_DESCRIPTOR), // uint8 bLength
+    USB_DESC_TYPE_SS_ENDPOINT_COMPANION,                      // uint8 bDescriptorType
+    4,                                                        // uint8 bMaxBurst,    0 => max burst 1
+    0,                                                        // uint8 bmAttributes, 0 => no stream
+    0,                                                        // uint8 wBytesPerInterval. Does not apply to BULK
+  }
+};
+
 #pragma pack(1)
 typedef struct _CfgDescTree {
   EFI_USB_CONFIG_DESCRIPTOR    ConfigDescriptor;
@@ -182,10 +262,13 @@
 VOID
 BuildDefaultDescriptors(
   OUT USB_DEVICE_DESCRIPTOR  **DevDesc,
-  OUT VOID                  **Descriptors)
+  OUT VOID                  **Descriptors,
+  OUT USB_DEVICE_DESCRIPTOR  **SSDevDesc,
+  OUT VOID                  **SSDescriptors)
 {
   UINT8                        Index = 0;
   UINT8                        NumCfg = 0; 
+  UINT8                        NumCfgSS = 0;
   CHAR8                        Str_UUID[64];
   UINT32                       i;
   EFI_STATUS                   Status;
@@ -205,17 +288,29 @@
   }
 
   *DevDesc = &DeviceDescriptor;
+  *SSDevDesc = &SSDeviceDescriptor;
   NumCfg   = DeviceDescriptor.NumConfigurations;
+  NumCfgSS   = SSDeviceDescriptor.NumConfigurations;
 
   *Descriptors = AllocatePool(NumCfg * sizeof (struct _CfgDescTree *));
   if (Descriptors == NULL)
   {
-    DEBUG ((EFI_D_ERROR, "Error Allocating memory for config descriptors\n"));
+    DEBUG ((EFI_D_ERROR, "Error Allocating memory for HS config descriptors\n"));
     return;
   }
 
+  *SSDescriptors = AllocatePool(NumCfg * sizeof (struct _SSCfgDescTree *));
+  if (SSDescriptors == NULL)
+  {
+    DEBUG ((EFI_D_ERROR, "Error Allocating memory for SS config descriptors\n"));
+    return;
+  }
   for (Index = 0; Index < NumCfg; Index++)
   {
     Descriptors[Index] = &TotalConfigDescriptor;
   }
+  for (Index = 0; Index < NumCfg; Index++)
+  {
+    SSDescriptors[Index] = &TotalSSConfigDescriptor;
+  }
 }
diff --git a/QcomModulePkg/Application/FastbootApp/UsbDescriptors.h b/QcomModulePkg/Application/FastbootApp/UsbDescriptors.h
index 45e9887..59fb605 100644
--- a/QcomModulePkg/Application/FastbootApp/UsbDescriptors.h
+++ b/QcomModulePkg/Application/FastbootApp/UsbDescriptors.h
@@ -51,5 +51,6 @@
 extern EFI_USB_STRING_DESCRIPTOR *StrDescriptors[5];
 
 VOID
-BuildDefaultDescriptors(OUT USB_DEVICE_DESCRIPTOR **DevDesc, OUT VOID **Descriptors);
+BuildDefaultDescriptors(OUT USB_DEVICE_DESCRIPTOR **DevDesc, OUT VOID **Descriptors,
+			            OUT USB_DEVICE_DESCRIPTOR **SSDevDesc, OUT VOID **SSDescriptors);
 #endif /* _USBFN_DESCAPP_H_ */
