I am developing an xHCI host that connects to a type A downstream connector via a HS USB 2.0 connection. I am testing it using a generic HS flash drive. The flash drive sometimes responds to the DEVICE Descriptor request with idVendor = 0xabcd and idProduct = 0x1234, and to the SCSI Inquiry command with VendorID = "General" and ProductID = "UDisk". When the flash drive responds this way, it works fine. However, at other times it responds with idVendor = 0x1e3d, idProduct = 0x198a and SCSI Inquiry response Vendor = "ChipsBnk" and Product = "Flash Disk". In this case, the SCSI Test Unit Ready command always fails.
I have noticed that this alternate "ChipsBnk" "Flash Disk" configuration is only seen when connecting to my board and not consistently. When I connect the flash drive to Windows, the enumeration process never shows the "ChipsBnk" "Flash Disk" response and it always works as expected.
I have also observed this behavior on a Sandisk 128G drive, which usually responds to SCSI Inquiry with vendor = "USB" and product = "SanDisk 3.1Gen1", but sometimes it responds with vendor = "SanDisk" and product = "Anisha".
What could cause the same flash drive to respond with different vendor id and product id values? I am curious if it is a common occurrence for these drives to switch to a firmware mode due to some special signaling sequence that I might be inadvertently triggering.