Re: Transmitting payload and ATA commands simultaneously messes up connection with USB SATA bridge

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

 



On 12/19/10 11:22, Sergey Vlasov wrote:
However, the kernel now has internal support for the Cypress ATACB
protocol - the ums-cypress.ko module, which attaches to CY7C68300 and
CY7C68310 bridges instead of the standard usb-storage module,
translates standard ATA_12 and ATA_16 SCSI commands to Cypress ATACB
commands, and implementing this translation at the kernel level
ensures that no other command can be sent to the device between the
two ATACB commands.  The only problem is that the device ID list
(drivers/usb/storage/unusual_cypress.h) does not contain the vendor
and product IDs for your device:

Bus 002 Device 004: ID 14cd:6116 Super Top

Adding an entry for your device to that file and recompiling usb
storage modules should make the ums-cypress module handle that USB-ATA
bridge; then you should use "-d sat" instead of "-d usbcypress" to use
the in-kernel translation code.


On Sat, Dec 18, 2010 at 06:45:50PM +0100, Richard Schütz wrote:
NOTE: This is reproducible with another USB ATA bridge which supports
SAT (smartctl -d sat), too!

This, however, looks like a completely different problem - the SAT
protocol does not need back-to-back commands, everything is done with
a single command which should not conflict with other commands issued
before or after it.  Please provide the usbmon trace for the error
with "-d sat" too.

You were bang on! Patching the drivers and using the kernel translation fixes the problem. I can transmit data and use "smartctl -d sat" simultaneously without errors.


The cause for the problem with my other external drive must be a different one then.

More details on that:

lsusb -v:
Bus 002 Device 020: ID 1e68:001b TrekStor GmbH & Co. KG DataStation maxi g.u
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x1e68 TrekStor GmbH & Co. KG
  idProduct          0x001b DataStation maxi g.u
  bcdDevice            0.00
  iManufacturer           1 JMicron
  iProduct               11 TrekStor DS maxi g.u
  iSerial                 3 200811130EB5
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          4 USB Mass Storage
    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 (Zip)
      iInterface              6 MSC Bulk-Only Transfer
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  bNumConfigurations      1
can't get debug descriptor: Connection timed out
Device Status:     0xff01
  Self Powered

It looks like there's a JMicron chip inside, but "smartctl -d usbjmicron" fails. Reading data from the drive and querying SMART with "smartctl -d sat" works without problem. Writing data and then querying SMART results in errors.

kernel errors: http://richard.qasl.de/kernel.log
usbmon trace: http://richard.qasl.de/2.mon.out

--
Regards,
Richard Schütz
--
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