Super Top USB SD card reader resets and corruption - XHCI

From: Krzysztof HaÅasa
Date: Mon Oct 31 2016 - 20:29:23 EST


Hi,

I came across a problem with an USB SD card reader apparently causing
USB resets and corrupting data on the card.

The reader in question is a very cheap:

14cd:1212 Super Top microSD card reader (SY-T18)
The card is an old SDHC, 32 GB, Sandisk brand.

The problems don't seem to exist now if I connect the reader to an
EHCI-equipped machine (an old Core2 duo + ICH10). I can read and write
MBs of data, however older logs suggest that this computer also had the
issue in the past (with Linux 4.6.3-300.fc24.x86_64, with both EHCI and UHCI).

I can't use it with an XHCI. Both:
Intel Corp 8 Series/C220 Series Chipset Family USB xHCI (rev 04) (prog-if 30 [XHCI])
(SandyBridge laptop with only USB2.0 connectors) and:
Intel Corp Sunrise Point-H USB 3.0 xHCI Controller (rev 31)
(a Skylake + Z170 and USB3, though the reader is USB2) have the issue.

I have spotted the following writted to the SD card, I guess it's some
USB mass storage write command:

3d085000 55 53 42 43 ca 08 00 00 00 e0 01 00 00 00 0a 2a |USBC...........*|
3d085010 00 00 1e 83 70 00 00 f0 00 00 00 00 00 00 00 b2 |....p...........|
3d085020 2d 00 38 00 a9 c8 f4 ab 10 8d cc 39 e1 8f 43 45 |-.8........9..CE|

I think the problem doesn't manifest itself if I don't write (RO mount)
to the SD card. However, even light writes seem to trigger the issue.

The kernels are basically recent Fedora, 4.7.4-200.fc24.x86_64,
4.7.9-200.fc24.x86_64 but it seems e.g. 4.6.3-300.fc24.x86_64 was also
affected. The one which doesn't cause problems now (EHCI) is
4.7.2-201.fc24.x86_64 (though EHCI did cause problems previously).

Could it be faulty hw?
What can I do with this?

[80125.418020] usb 1-1: new high-speed USB device number 9 using xhci_hcd
[80125.583307] usb 1-1: New USB device found, idVendor=14cd, idProduct=1212
[80125.583315] usb 1-1: New USB device strings: Mfr=1, Product=3, SerialNumber=2
[80125.583320] usb 1-1: Product: Mass Storage Device
[80125.583324] usb 1-1: Manufacturer: Generic
[80125.583327] usb 1-1: SerialNumber: 121220130416
[80125.585139] usb-storage 1-1:1.0: USB Mass Storage device detected
[80125.585392] scsi host6: usb-storage 1-1:1.0
[80126.586670] scsi 6:0:0:0: Direct-Access Mass Storage Device 1.00 PQ: 0 ANSI: 0 CCS
[80126.587547] sd 6:0:0:0: Attached scsi generic sg3 type 0
[80126.775260] sd 6:0:0:0: [sdc] 62333952 512-byte logical blocks: (31.9 GB/29.7 GiB)
[80126.775504] sd 6:0:0:0: [sdc] Write Protect is off
[80126.775510] sd 6:0:0:0: [sdc] Mode Sense: 03 00 00 00
[80126.775686] sd 6:0:0:0: [sdc] No Caching mode page found
[80126.775696] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[80126.787956] sdc: sdc1
[80126.789309] sd 6:0:0:0: [sdc] Attached SCSI removable disk
[80396.165947] usb 1-1: reset high-speed USB device number 9 using xhci_hcd
[80408.251009] usb 1-1: USB disconnect, device number 9
[80408.256545] sd 6:0:0:0: [sdc] tag#0 FAILED Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[80408.256555] sd 6:0:0:0: [sdc] tag#0 CDB: Write(10) 2a 00 00 02 82 50 00 00 f0 00
[80408.256560] blk_update_request: I/O error, dev sdc, sector 164432
[80408.256567] Buffer I/O error on dev sdc1, logical block 19530, lost async page write
[80408.256578] Buffer I/O error on dev sdc1, logical block 19531, lost async page write
[80408.256583] Buffer I/O error on dev sdc1, logical block 19532, lost async page write
[80408.256587] Buffer I/O error on dev sdc1, logical block 19533, lost async page write
[80408.256592] Buffer I/O error on dev sdc1, logical block 19534, lost async page write
[80408.256596] Buffer I/O error on dev sdc1, logical block 19535, lost async page write
[80408.256600] Buffer I/O error on dev sdc1, logical block 19536, lost async page write
[80408.256604] Buffer I/O error on dev sdc1, logical block 19537, lost async page write
[80408.256608] Buffer I/O error on dev sdc1, logical block 19538, lost async page write
[80408.256611] Buffer I/O error on dev sdc1, logical block 19539, lost async page write
[80408.340407] VFS: Dirty inode writeback failed for block device sdc1 (err=-5).
[80408.618642] usb 1-1: new high-speed USB device number 10 using xhci_hcd
[80408.783479] usb 1-1: New USB device found, idVendor=14cd, idProduct=1212
[80408.783487] usb 1-1: New USB device strings: Mfr=1, Product=3, SerialNumber=2
[80408.783492] usb 1-1: Product: Mass Storage Device
[80408.783496] usb 1-1: Manufacturer: Generic
[80408.784034] usb-storage 1-1:1.0: USB Mass Storage device detected
[80408.784253] scsi host6: usb-storage 1-1:1.0
[80409.786335] scsi 6:0:0:0: Direct-Access Mass Storage Device 1.00 PQ: 0 ANSI: 0 CCS
[80409.787089] sd 6:0:0:0: Attached scsi generic sg3 type 0
[80409.975129] sd 6:0:0:0: [sdc] 62333952 512-byte logical blocks: (31.9 GB/29.7 GiB)
[80409.975380] sd 6:0:0:0: [sdc] Write Protect is off
[80409.975389] sd 6:0:0:0: [sdc] Mode Sense: 03 00 00 00
[80409.976494] sd 6:0:0:0: [sdc] No Caching mode page found
[80409.976503] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[80409.988785] sdc: sdc1
[80409.990105] sd 6:0:0:0: [sdc] Attached SCSI removable disk
[80618.854694] usb 1-1: reset high-speed USB device number 10 using xhci_hcd
[80649.844604] usb 1-1: reset high-speed USB device number 10 using xhci_hcd
[80650.181794] usb 1-1: reset high-speed USB device number 10 using xhci_hcd
[80662.195423] usb 1-1: USB disconnect, device number 10
[80662.201162] sd 6:0:0:0: [sdc] tag#0 FAILED Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[80662.201172] sd 6:0:0:0: [sdc] tag#0 CDB: Write(10) 2a 00 00 02 8a 50 00 00 f0 00
[80662.201177] blk_update_request: I/O error, dev sdc, sector 166480
[80662.203472] sd 6:0:0:0: [sdc] tag#0 FAILED Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[80662.203478] sd 6:0:0:0: [sdc] tag#0 CDB: Write(10) 2a 00 00 02 8b 40 00 00 f0 00
[80662.203481] blk_update_request: I/O error, dev sdc, sector 166720


Bus 001 Device 015: ID 14cd:1212 Super Top microSD card reader (SY-T18)
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x14cd Super Top
idProduct 0x1212 microSD card reader (SY-T18)
bcdDevice 1.00
iManufacturer 1 Generic
iProduct 3 Mass Storage Device
iSerial 2 121220130416
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 32
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 250mA
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 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
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1
can't get debug descriptor: Resource temporarily unavailable
Device Status: 0xff00
(Bus Powered)

--
Krzysztof Halasa

Industrial Research Institute for Automation and Measurements PIAP
Al. Jerozolimskie 202, 02-486 Warsaw, Poland