[U-Boot] Issue with USB mass storage (thumb drives)
Maxime Jayat
jayatmaxime at gmail.com
Mon Feb 22 18:51:57 CET 2016
Le 22/02/2016 08:03, Schrempf Frieder a écrit :
> On 18.02.2016 18:14, Fabio Estevam wrote:
>> On Thu, Feb 18, 2016 at 1:32 PM, Marek Vasut <marex at denx.de> wrote:
>>
>>>> Also one of our customers tested a few non-working sticks with this
>>>> change and reported, that it fixed it for him.
>>>> Here's a list of those devices, but I guess there are a lot more:
>>>>
>>>> 1. Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) Flash
>>>> Drive, VID: 0x090c, PID: 0x1000
>>>> 2. Freecom Technologies, VID: 0x07ab, PID: 0xfcf1
>>>> 3. Newron, VID: 0x8644, PID: 0x800e
>>>> 4. GEMBIRD PhotoFrame PF-15-1, VID: 0x1908, PID: 0x1320
>>>>
>>> Maybe we need a quirk table then ?
>> It seems the list of affected devices is unknown.
>>
>> What would be the impact of changing USB_MAX_XFER_BLK from 65535 to 32767?
>>
>> Would this impact the USB transfer rate? Frieder, do you know?
> I don't really know. While testing I had the feeling, that the transfer
> is slightly slower, but I can't tell for sure.
>
Hello,
I was hit by the same problem, where my USB SD card reader would timeout
in U-boot when reading a large file (16 MB). Changing USB_MAX_XFER_BLK
to 32767 fixed the problem but I investigated a little more.
I was curious to see what the Linux kernel used, because it had no
problem reading the file. In Linux, USB_MAX_XFER_BLK corresponds to
max_sector in the scsiglue, which is set to 240 blocks per transfer by
default, and is tunable via sysfs.
There is also a list of unusual devices which needs no higher than 64
blocks per transfer.
The linux USB FAQ has a very interesting entry about this which explains
the rationale for this value:
http://www.linux-usb.org/FAQ.html#i5
FWIW: my USB card reader is
0bda:0119 Realtek Semiconductor Corp. Storage Device (SD card reader)
I've benchmarked in U-boot the time impact of this change.
For reading my 16764395 bytes file:
USB_MAX_XFER_BLK Read duration (as reported by U-boot):
64 3578 ms
128 2221 ms
240 1673 ms
32767 1020 ms
65535 974 ms
So there is definitely a strong impact for lower values.
--
Maxime Jayat
More information about the U-Boot
mailing list