Hi, I'm using an external multiple-disk enclosure (specifically a Hotway H82-SU3S2), which from lsusb appears to use a JMS567 SATA-USB bridge: > Bus 002 Device 002: ID 152d:0567 JMicron Technology Corp. / JMicron > USA Technology Corp. JMS567 SATA 6Gb/s bridge According to the manufacturer's product sheet [1] for this chip, it supports the UAS protocol, but when connected to my system (running kernel 4.9.8), it falls back to the older usb-storage driver: > /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M > |__ Port 3: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M I had a look at uas-detect.h, specifically uas_use_uas_driver, but I didn't see any of the warning messages within that function printed to dmesg when the device is attached. I added some extra dev_warn calls earlier in the function and determined that uas_find_uas_alt_setting is returning a negative value. This prompted me to look at the output of lsusb -v for this device: > Bus 002 Device 002: ID 152d:0567 JMicron Technology Corp. / JMicron > USA Technology Corp. JMS567 SATA 6Gb/s bridge > Device Descriptor: > bLength 18 > bDescriptorType 1 > bcdUSB 3.00 > bDeviceClass 0 > bDeviceSubClass 0 > bDeviceProtocol 0 > bMaxPacketSize0 9 > idVendor 0x152d JMicron Technology Corp. / JMicron USA > Technology Corp. > idProduct 0x0567 JMS567 SATA 6Gb/s bridge > bcdDevice 2.05 > iManufacturer 10 JMicron > iProduct 11 USB to ATA/ATAPI Bridge > iSerial 5 152D00539000 > bNumConfigurations 1 > Configuration Descriptor: > bLength 9 > bDescriptorType 2 > wTotalLength 44 > bNumInterfaces 1 > bConfigurationValue 1 > iConfiguration 0 > bmAttributes 0xc0 > Self Powered > MaxPower 2mA > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 0 > bAlternateSetting 0 > bNumEndpoints 2 > bInterfaceClass 8 Mass Storage > bInterfaceSubClass 6 SCSI > bInterfaceProtocol 80 Bulk-Only > iInterface 0 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x81 EP 1 IN > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0400 1x 1024 bytes > bInterval 0 > bMaxBurst 15 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x02 EP 2 OUT > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0400 1x 1024 bytes > bInterval 0 > bMaxBurst 15 > Binary Object Store Descriptor: > bLength 5 > bDescriptorType 15 > wTotalLength 22 > bNumDeviceCaps 2 > USB 2.0 Extension Device Capability: > bLength 7 > bDescriptorType 16 > bDevCapabilityType 2 > bmAttributes 0x00000002 > HIRD Link Power Management (LPM) Supported > SuperSpeed USB Device Capability: > bLength 10 > bDescriptorType 16 > bDevCapabilityType 3 > bmAttributes 0x00 > wSpeedsSupported 0x000e > Device can operate at Full Speed (12Mbps) > Device can operate at High Speed (480Mbps) > Device can operate at SuperSpeed (5Gbps) > bFunctionalitySupport 1 > Lowest fully-functional device speed is Full Speed (12Mbps) > bU1DevExitLat 10 micro seconds > bU2DevExitLat 2047 micro seconds > Device Status: 0x000d > Self Powered > U1 Enabled > U2 Enabled It seems that it's lacking the interface descriptor for UAS, when I compared it to the output from a different enclosure with which UAS works correctly: > Bus 002 Device 092: ID 174c:1351 ASMedia Technology Inc. > Device Descriptor: > bLength 18 > bDescriptorType 1 > bcdUSB 3.10 > bDeviceClass 0 > bDeviceSubClass 0 > bDeviceProtocol 0 > bMaxPacketSize0 9 > idVendor 0x174c ASMedia Technology Inc. > idProduct 0x1351 > bcdDevice 0.01 > iManufacturer 2 > iProduct 3 > iSerial 1 > bNumConfigurations 1 > Configuration Descriptor: > bLength 9 > bDescriptorType 2 > wTotalLength 121 > bNumInterfaces 1 > bConfigurationValue 1 > iConfiguration 0 > bmAttributes 0xc0 > Self Powered > MaxPower 0mA > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 0 > bAlternateSetting 0 > bNumEndpoints 2 > bInterfaceClass 8 Mass Storage > bInterfaceSubClass 6 SCSI > bInterfaceProtocol 80 Bulk-Only > iInterface 0 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x81 EP 1 IN > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0400 1x 1024 bytes > bInterval 0 > bMaxBurst 15 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x02 EP 2 OUT > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0400 1x 1024 bytes > bInterval 0 > bMaxBurst 15 > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 0 > bAlternateSetting 1 > bNumEndpoints 4 > bInterfaceClass 8 Mass Storage > bInterfaceSubClass 6 SCSI > bInterfaceProtocol 98 > iInterface 0 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x81 EP 1 IN > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0400 1x 1024 bytes > bInterval 0 > bMaxBurst 15 > MaxStreams 32 > Data-in pipe (0x03) > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x02 EP 2 OUT > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0400 1x 1024 bytes > bInterval 0 > bMaxBurst 15 > MaxStreams 32 > Data-out pipe (0x04) > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x83 EP 3 IN > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0400 1x 1024 bytes > bInterval 0 > bMaxBurst 15 > MaxStreams 32 > Status pipe (0x02) > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x04 EP 4 OUT > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0400 1x 1024 bytes > bInterval 0 > bMaxBurst 0 > Command pipe (0x01) What would cause the missing interface descriptor? Looking at unusual_uas.h, I can see this device's USB product id listed with some quirks, but if my understanding is correct, it should still work, and given the presence of the exact ID, I imagine that this device is indeed supported by the current kernel, but I don't understand why it's not working as it should. Is this a hardware issue with the JMS567-based enclosure, or is it a kernel issue? [1] http://www.jmicron.com/PDF/brief/jms567.pdf Kind regards, Jack
Attachment:
signature.asc
Description: OpenPGP digital signature