Re: UAS not working with JMS567 based disk enclosure

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 14 Feb 2017, Jack Coulter wrote:

> 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

The problem is caused by the firwmware in the enclosure.  The UAS
alternate setting was not included.  Perhaps it wasn't working
correctly, or perhaps it was just left out by mistake.

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux