On Fri, Jul 13, 2012 at 16:39:13 -0400, Alan Stern wrote: > On Fri, 13 Jul 2012, Sami Farin wrote: > > > > The card reader has a couple of bugs in its firmware. It's odd that > > > the errors occur only when running at SuperSpeed. You'd think the > > > firmware would behave the same way regardless of the speed. > > > > > > Anyway, you can work around one of the bugs by specifying a quirk > > > parameter for usb-storage: > > > > > > modprobe usb-storage quirks=8564:4000:m > > > > > > To fix the other bug will require adding a blacklist entry for the card > > > reader. First let's see if the quirk alone will get it working. > > > > > > Alan Stern > > > > Unfortunately it still does not work. > > I first re-ran mkfs.vfat when connected to usb2 port and then tried to write 512 MB > > with usb3.. > > > > usbmon with quirk enabled > > https://docs.google.com/file/d/0B_EMXtsx7o56bEtobmJwYi1TaWc/edit > > That's really weird. Your log confirms that the quirk was recognized: > > > [81577.678735] usb-storage 4-2:1.0: usb_probe_interface > > [81577.678739] usb-storage 4-2:1.0: usb_probe_interface - got id > > [81577.678767] usb-storage 4-2:1.0: Quirks match for vid 8564 pid 4000: 400 > > And yet the usbmon log shows that the quirk didn't take effect. > That's why the problem occurred again. > > After the device is plugged in, what shows up in the > /sys/block/sdg/queue/max_hw_sectors_kb file? Without the quirk it > should contain 120; with the quirk it should contain 32. This is what happens.. 120 and 32. > The effect of the quirk is to reduce the maximum size allowed in a > single data transfer from 120 KB to 32 KB. The usbmon trace shows that > your card reader got an error when it was asked to write a 120-KB > buffer. Reducing the transfer buffer size should eliminate the errors > -- but that the latest usbmon trace still shows a 120-KB transfer. > > I tried doing an equivalent test on my system (using reads, not writes) > and it worked fine. I got 32-KB transfers instead of 120-KB transfers. > I have no idea why it didn't work on your system. > > Maybe you should do some tests with reads instead of writes. A simple > test would be: > > dd if=/dev/sdg of=/dev/null bs=1M count=1 > > Let's compare the usbmon traces for that command with and without the > quirk present. it worked with 1M with and without quirks, but with 300M it failed without quirks, OK with quirks (36 MB/s, though it was advertized 85 MB/s). <4>[97245.555816] usb 4-2: Device not responding to set address. <3>[97250.149959] usb 4-2: device not accepting address 18, error -71 <4>[97258.840645] usb 4-2: Device not responding to set address. <4>[97263.336556] usb 4-2: Device not responding to set address. <3>[97267.931175] usb 4-2: device not accepting address 18, error -71 <4>[97276.621870] usb 4-2: Device not responding to set address. <4>[97285.553439] usb 4-2: Device not responding to set address. <4>[97290.050208] usb 4-2: Device not responding to set address. <3>[97294.643963] usb 4-2: device not accepting address 20, error -71 quirks off, 1M dd read test: https://docs.google.com/file/d/0B_EMXtsx7o56Y3dtME93ZGdELUU/edit quirks on, 1M dd read test: https://docs.google.com/file/d/0B_EMXtsx7o56clFYSUxHZ2hjMUk/edit > > Alan Stern > -- Do what you love because life is too short for anything else. -- 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