Discussion:
USB 3 to SATA ASM1042 dies under I/O load
Stephan Diestelhorst
2013-05-02 13:38:48 UTC
Permalink
Hi,
I am using a salvaged (from an external Toshiba spinning disk) SATA
- USB 3 adaptor with a VLI701-04 chip behind a ASMedia Technology Inc.
ASM1042 SuperSpeed USB Host Controller (ExpressCard slot).

I have attached a Samsung sereis 840 SSD and whenever I dd some data
onto the disk, the drive disconnects and then reconnects as a
different /dev/sd*. Running 3.9 kernel (also happened with an older
one). I know that I should not reuse that controller for such high
bandwidth operation, but maybe there is a tweak (using USB 2 works,
but I was hoping to get more than 30 MB/s from this thing ;-) to make
it work?

Many thanks for pointers!

Stephan

lspci -vv

05:00.0 USB controller: ASMedia Technology Inc. ASM1042 SuperSpeed USB
Host Controller (prog-if 30 [XHCI])
Subsystem: Device 174c:2104
Physical Slot: 3
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR+ FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 19
Region 0: Memory at f1f00000 (64-bit, non-prefetchable) [size=32K]
Capabilities: <access denied>
Kernel driver in use: xhci_hcd

lsusb -vv
Bus 010 Device 005: ID 0480:a009 Toshiba America Info. Systems, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 3.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 9
idVendor 0x0480 Toshiba America Info. Systems, Inc.
idProduct 0xa009
bcdDevice 37.10
iManufacturer 1 TOSHIBA
iProduct 2 External USB 3.0
iSerial 3 2222290118E5
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 44
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 224mA
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 14
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 14
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
Link Power Management (LPM) Supported
SuperSpeed USB Device Capability:
bLength 10
bDescriptorType 16
bDevCapabilityType 3
bmAttributes 0x00
Latency Tolerance Messages (LTM) Supported
wSpeedsSupported 0x000c
Device can operate at High Speed (480Mbps)
Device can operate at SuperSpeed (5Gbps)
bFunctionalitySupport 2
Lowest fully-functional device speed is High Speed (480Mbps)
bU1DevExitLat 10 micro seconds
bU2DevExitLat 2047 micro seconds
Device Status: 0x0000
(Bus Powered)
...
Bus 010 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 3.00
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 3
bMaxPacketSize0 9
idVendor 0x1d6b Linux Foundation
idProduct 0x0003 3.0 root hub
bcdDevice 3.09
iManufacturer 3 Linux 3.9.0-custom xhci_hcd
iProduct 2 xHCI Host Controller
iSerial 1 0000:05:00.0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 31
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0 Full speed (or root) hub
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 12
bMaxBurst 0
Hub Descriptor:
bLength 12
bDescriptorType 42
nNbrPorts 2
wHubCharacteristic 0x000a
No power switching (usb 1.0)
Per-port overcurrent protection
bPwrOn2PwrGood 10 * 2 milli seconds
bHubContrCurrent 0 milli Ampere
bHubDecLat 0.0 micro seconds
wHubDelay 0 nano seconds
DeviceRemovable 0x00
Hub Port Status:
Port 1: 0000.0203 5Gbps power U0 enable connect
Port 2: 0000.02a0 5Gbps power Rx.Detect
Binary Object Store Descriptor:
bLength 5
bDescriptorType 15
wTotalLength 15
bNumDeviceCaps 1
SuperSpeed USB Device Capability:
bLength 10
bDescriptorType 16
bDevCapabilityType 3
bmAttributes 0x00
Latency Tolerance Messages (LTM) Supported
wSpeedsSupported 0x0008
Device can operate at SuperSpeed (5Gbps)
bFunctionalitySupport 3
Lowest fully-functional device speed is SuperSpeed (5Gbps)
bU1DevExitLat 0 micro seconds
bU2DevExitLat 0 micro seconds
Device Status: 0x0001
Self Powered

dmesg
...
[ 238.287447] usb 10-1: new SuperSpeed USB device number 2 using xhci_hcd
[ 238.301678] usb 10-1: Parent hub missing LPM exit latency info. Power manage
ment will be impacted.
[ 238.372331] Initializing USB Mass Storage driver...
[ 238.372511] scsi4 : usb-storage 10-1:1.0
[ 238.372599] usbcore: registered new interface driver usb-storage
[ 238.372601] USB Mass Storage support registered.
[ 241.766368] scsi 4:0:0:0: Direct-Access TOSHIBA External USB 3.0 0201 PQ
: 0 ANSI: 6
[ 241.766995] sd 4:0:0:0: Attached scsi generic sg1 type 0
[ 241.767613] sd 4:0:0:0: [sdb] 976773164 512-byte logical blocks:
(500 GB/465 GiB)
[ 241.768990] sd 4:0:0:0: [sdb] Write Protect is off
[ 241.768994] sd 4:0:0:0: [sdb] Mode Sense: 2f 00 00 00
[ 241.769623] sd 4:0:0:0: [sdb] Write cache: disabled, read cache:
enabled, doesn't support DPO or FUA
...
doing dd if=/dev/zero of=/dev/sdb5 bs=$((512*1024))
...
[ 319.204142] usb 10-1: USB disconnect, device number 2
[ 319.212024] scsi 4:0:0:0: rejecting I/O to offline device
[ 319.212031] scsi 4:0:0:0: [sdb] killing request
[ 319.213431] scsi 4:0:0:0: [sdb] Unhandled error code
[ 319.213435] scsi 4:0:0:0: [sdb]
[ 319.213437] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[ 319.213439] scsi 4:0:0:0: [sdb] CDB:
[ 319.213441] Write(10): 2a 00 09 7c 55 a4 00 00 f0 00
[ 319.213450] end_request: I/O error, dev sdb, sector 159143332
[ 319.213458] Buffer I/O error on device dm-4, logical block 4485
[ 319.213460] lost page write due to I/O error on dm-4
<several more errors for other blocks>
...
[ 319.228035] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[ 319.228037] scsi 4:0:0:0: [sdb] CDB:
[ 319.228039] Write(10): 2a 00 09 7c 56 94 00 00 f0 00
[ 319.228048] end_request: I/O error, dev sdb, sector 159143572
[ 320.266437] usb 10-1: Device not responding to set address.
[ 320.475416] usb 10-1: new SuperSpeed USB device number 3 using xhci_hcd
[ 320.489707] usb 10-1: Parent hub missing LPM exit latency info.
Power management will be impacted.
[ 320.505340] scsi5 : usb-storage 10-1:1.0
[ 324.216898] quiet_error: 284604 callbacks suppressed
[ 324.216903] Buffer I/O error on device dm-4, logical block 307966
[ 324.216906] lost page write due to I/O error on dm-4
<more blocks>
[ 327.042607] scsi 5:0:0:0: Direct-Access TOSHIBA External USB
3.0 0201 PQ: 0 ANSI: 6
[ 327.043199] sd 5:0:0:0: [sdc] 976773164 512-byte logical blocks:
(500 GB/465 GiB)
[ 327.043565] sd 5:0:0:0: [sdc] Write Protect is off
[ 327.043570] sd 5:0:0:0: [sdc] Mode Sense: 2f 00 00 00
[ 327.043876] sd 5:0:0:0: [sdc] Write cache: disabled, read cache:
enabled, doesn't support DPO or FUA
[ 327.044627] sd 5:0:0:0: Attached scsi generic sg1 type 0
[ 327.049184] sdc: sdc1 sdc2 sdc3 sdc4 < sdc5 >
[ 327.050757] sd 5:0:0:0: [sdc] Attached SCSI disk
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-***@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Martin Mokrejs
2013-05-02 16:26:23 UTC
Permalink
Hi Stefan,
I can only tell you that I had success with ASM1051 on the drive side
(SilverStone Treasure TS04) against both NEC uPD720200 (rev. 3) controller
and TI controller on the computer side. But ASM1051 does not propagate
S.M.A.R.T. values back from the drive.
Once I had a "bad firmware" in ASM2105 in SilverStone Treasure TS04B.
That one I returned.
I am happy with 4 pcs of "Manhattan Superspeed USB to SATA adapter"
giving me each 150MB/s, working with 2.7TiB Seagate SV35 and Barracuda drives
despite the fact the retail box claims the adapter support 48-bit addressing
up to 2TB drives only. gdisk shows the drives report 512B sectors while should
be physically 4kB sector drives. I am handling files of up to 250GB
and shuffling data between 5 such drives. When things work on my laptop
through one 2-port XHCI TexasInstruments-based controller, 1 eSATA port of
SandyBridge and 2-port XHCI NEC-based express card I can read/write between
all the drives (including writes to /dev/null) to total 2.5Gbps as shown by
vmstat. From each single SATAIII drive I can get stably 140-150MBps with 5
drives I could not saturate the system throughput (well, just reads and writes
to /dev/null as I said).

A chase for working USB3 to SATA converters might take you to
http://forums.whirlpool.net.au/archive/1558885 and from there to
https://docs.google.com/spreadsheet/ccc?key=0AqniL4H-VGJSdEJPZTNjbFlEWlFEbU5adnFYRFRxeFE

I have added some items to the table and also am attaching my old benchmarks.



Maybe check if your express card works quickly enough? Maybe play with tehse
kernel command line pci=option,option2,... parameters (from kernel-parameters.txt
file):


pcie_bus_tune_off Disable PCIe MPS (Max Payload Size)
tuning and use the BIOS-configured MPS defaults.
pcie_bus_safe Set every device's MPS to the largest value
supported by all devices below the root complex.
pcie_bus_perf Set device MPS to the largest allowable MPS
based on its parent bus. Also set MRRS (Max
Read Request Size) to the largest supported
value (no larger than the MPS that the device
or bus can support) for best performance.
pcie_bus_peer2peer Set every device's MPS to 128B, which
every device is guaranteed to support. This
configuration allows peer-to-peer DMA between
any pair of devices, possibly at the cost of
reduced performance. This also guarantees
that hot-added devices will work.

Martin
Post by Stephan Diestelhorst
Hi,
I am using a salvaged (from an external Toshiba spinning disk) SATA
- USB 3 adaptor with a VLI701-04 chip behind a ASMedia Technology Inc.
ASM1042 SuperSpeed USB Host Controller (ExpressCard slot).
I have attached a Samsung sereis 840 SSD and whenever I dd some data
onto the disk, the drive disconnects and then reconnects as a
different /dev/sd*. Running 3.9 kernel (also happened with an older
one). I know that I should not reuse that controller for such high
bandwidth operation, but maybe there is a tweak (using USB 2 works,
but I was hoping to get more than 30 MB/s from this thing ;-) to make
it work?
Many thanks for pointers!
Stephan
lspci -vv
05:00.0 USB controller: ASMedia Technology Inc. ASM1042 SuperSpeed USB
Host Controller (prog-if 30 [XHCI])
Subsystem: Device 174c:2104
Physical Slot: 3
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR+ FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 19
Region 0: Memory at f1f00000 (64-bit, non-prefetchable) [size=32K]
Capabilities: <access denied>
Kernel driver in use: xhci_hcd
lsusb -vv
Bus 010 Device 005: ID 0480:a009 Toshiba America Info. Systems, Inc.
bLength 18
bDescriptorType 1
bcdUSB 3.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 9
idVendor 0x0480 Toshiba America Info. Systems, Inc.
idProduct 0xa009
bcdDevice 37.10
iManufacturer 1 TOSHIBA
iProduct 2 External USB 3.0
iSerial 3 2222290118E5
bNumConfigurations 1
bLength 9
bDescriptorType 2
wTotalLength 44
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 224mA
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 6 SCSI
bInterfaceProtocol 80 Bulk-Only
iInterface 0
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 14
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 14
bLength 5
bDescriptorType 15
wTotalLength 22
bNumDeviceCaps 2
bLength 7
bDescriptorType 16
bDevCapabilityType 2
bmAttributes 0x00000002
Link Power Management (LPM) Supported
bLength 10
bDescriptorType 16
bDevCapabilityType 3
bmAttributes 0x00
Latency Tolerance Messages (LTM) Supported
wSpeedsSupported 0x000c
Device can operate at High Speed (480Mbps)
Device can operate at SuperSpeed (5Gbps)
bFunctionalitySupport 2
Lowest fully-functional device speed is High Speed (480Mbps)
bU1DevExitLat 10 micro seconds
bU2DevExitLat 2047 micro seconds
Device Status: 0x0000
(Bus Powered)
...
Bus 010 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
bLength 18
bDescriptorType 1
bcdUSB 3.00
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 3
bMaxPacketSize0 9
idVendor 0x1d6b Linux Foundation
idProduct 0x0003 3.0 root hub
bcdDevice 3.09
iManufacturer 3 Linux 3.9.0-custom xhci_hcd
iProduct 2 xHCI Host Controller
iSerial 1 0000:05:00.0
bNumConfigurations 1
bLength 9
bDescriptorType 2
wTotalLength 31
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0 Full speed (or root) hub
iInterface 0
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 12
bMaxBurst 0
bLength 12
bDescriptorType 42
nNbrPorts 2
wHubCharacteristic 0x000a
No power switching (usb 1.0)
Per-port overcurrent protection
bPwrOn2PwrGood 10 * 2 milli seconds
bHubContrCurrent 0 milli Ampere
bHubDecLat 0.0 micro seconds
wHubDelay 0 nano seconds
DeviceRemovable 0x00
Port 1: 0000.0203 5Gbps power U0 enable connect
Port 2: 0000.02a0 5Gbps power Rx.Detect
bLength 5
bDescriptorType 15
wTotalLength 15
bNumDeviceCaps 1
bLength 10
bDescriptorType 16
bDevCapabilityType 3
bmAttributes 0x00
Latency Tolerance Messages (LTM) Supported
wSpeedsSupported 0x0008
Device can operate at SuperSpeed (5Gbps)
bFunctionalitySupport 3
Lowest fully-functional device speed is SuperSpeed (5Gbps)
bU1DevExitLat 0 micro seconds
bU2DevExitLat 0 micro seconds
Device Status: 0x0001
Self Powered
dmesg
...
[ 238.287447] usb 10-1: new SuperSpeed USB device number 2 using xhci_hcd
[ 238.301678] usb 10-1: Parent hub missing LPM exit latency info. Power manage
ment will be impacted.
[ 238.372331] Initializing USB Mass Storage driver...
[ 238.372511] scsi4 : usb-storage 10-1:1.0
[ 238.372599] usbcore: registered new interface driver usb-storage
[ 238.372601] USB Mass Storage support registered.
[ 241.766368] scsi 4:0:0:0: Direct-Access TOSHIBA External USB 3.0 0201 PQ
: 0 ANSI: 6
[ 241.766995] sd 4:0:0:0: Attached scsi generic sg1 type 0
(500 GB/465 GiB)
[ 241.768990] sd 4:0:0:0: [sdb] Write Protect is off
[ 241.768994] sd 4:0:0:0: [sdb] Mode Sense: 2f 00 00 00
enabled, doesn't support DPO or FUA
...
doing dd if=/dev/zero of=/dev/sdb5 bs=$((512*1024))
...
[ 319.204142] usb 10-1: USB disconnect, device number 2
[ 319.212024] scsi 4:0:0:0: rejecting I/O to offline device
[ 319.212031] scsi 4:0:0:0: [sdb] killing request
[ 319.213431] scsi 4:0:0:0: [sdb] Unhandled error code
[ 319.213435] scsi 4:0:0:0: [sdb]
[ 319.213437] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[ 319.213441] Write(10): 2a 00 09 7c 55 a4 00 00 f0 00
[ 319.213450] end_request: I/O error, dev sdb, sector 159143332
[ 319.213458] Buffer I/O error on device dm-4, logical block 4485
[ 319.213460] lost page write due to I/O error on dm-4
<several more errors for other blocks>
...
[ 319.228035] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[ 319.228039] Write(10): 2a 00 09 7c 56 94 00 00 f0 00
[ 319.228048] end_request: I/O error, dev sdb, sector 159143572
[ 320.266437] usb 10-1: Device not responding to set address.
[ 320.475416] usb 10-1: new SuperSpeed USB device number 3 using xhci_hcd
[ 320.489707] usb 10-1: Parent hub missing LPM exit latency info.
Power management will be impacted.
[ 320.505340] scsi5 : usb-storage 10-1:1.0
[ 324.216898] quiet_error: 284604 callbacks suppressed
[ 324.216903] Buffer I/O error on device dm-4, logical block 307966
[ 324.216906] lost page write due to I/O error on dm-4
<more blocks>
[ 327.042607] scsi 5:0:0:0: Direct-Access TOSHIBA External USB
3.0 0201 PQ: 0 ANSI: 6
(500 GB/465 GiB)
[ 327.043565] sd 5:0:0:0: [sdc] Write Protect is off
[ 327.043570] sd 5:0:0:0: [sdc] Mode Sense: 2f 00 00 00
enabled, doesn't support DPO or FUA
[ 327.044627] sd 5:0:0:0: Attached scsi generic sg1 type 0
[ 327.049184] sdc: sdc1 sdc2 sdc3 sdc4 < sdc5 >
[ 327.050757] sd 5:0:0:0: [sdc] Attached SCSI disk
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
More majordomo info at http://vger.kernel.org/majordomo-info.html
Stephan Diestelhorst
2013-05-02 20:18:42 UTC
Permalink
Martin,
Post by Martin Mokrejs
I can only tell you that I had success with ASM1051 on the drive side
(SilverStone Treasure TS04) against both NEC uPD720200 (rev. 3) controller
and TI controller on the computer side. But ASM1051 does not propagate
S.M.A.R.T. values back from the drive.
[...]
Post by Martin Mokrejs
I have added some items to the table and also am attaching my old benchmarks.
Wow. Thanks for all that material!
Post by Martin Mokrejs
Maybe check if your express card works quickly enough? Maybe play with tehse
kernel command line pci=option,option2,... parameters (from kernel-parameters.txt
[...]

Was going to try that, when I just had a revelation: electricity.
Turns out that my ExpressCard USB 3 adapter does not provide enough
power to fuel the SSD on full write load. Attaching that extra cable
that pulls juice from one of the regular USB ports made it work.

So thanks for all that material, but this one was an oversight on my part.

Thanks and sorry for the noise!

Stephan

PS: I faintly remember that I saw a "USB device is using too much
power" warning on Windows. Is there a programmatic way to detect that
and inform the user? Or is in this case the automatic switching off
enough of a sign? (I am quite familiar with the clicking of spinning
disks that do not get enough power, but these SSDs are surprisingly
non-verbose in that regard :)
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-***@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Loading...