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 Sun, Dec 19, 2010 at 02:08:51PM +0100, Richard Schütz wrote:
> 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.

Great - now you can submit a tested patch to the kernel, so that
future kernel versions will work with that hardware automatically.

> 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:
[... an usual descriptor for an USB storage device ...]
> 
> 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

Do you know what drive is inside the enclosure?  "hdparm -I /dev/sdX"
should work with a recent hdparm (>= 7.0); the "smartctl -d sat -i"
output would be good too.

Attachment: signature.asc
Description: Digital signature


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

  Powered by Linux