device descriptor read/64, error -71 - USB problem

 [SOLVED] device descriptor read/64, error -71 - USB problem


在插入SD卡时,无法识别,出现如下错误:

 device descriptor read/64, error -71

解决方法:

1.设置old_scheme_first

    echo Y > /sys/module/usbcore/parameters/old_scheme_first

或是:

2. 在boot命令行中添加:

usbcore.old_scheme_first= 1


下面是解释原因:

http://www.spinics.net/lists/usb/msg02644.html

The "old scheme" is the way Linux worked before 2.6.10.  When a new device
is plugged in, the system first assigns it an address, then reads the
initial 8 bytes of the device descriptor, then reads the entire 18-byte
device descriptor.

The "new scheme" is basically the way Windows works.  (Not surprisingly,
some devices won't work any other way.)  When a new device is plugged in,
the system first issues a 64-byte read request for the device descriptor,
then resets the device, then assigns it an address, and then reads the
actual 18-byte device descriptor.

The reason for these shenanigans is that with a full-speed device, the
maximum packet size for endpoint 0 (ep0maxpacket) isn't known beforehand.  
It could be 8, 16, 32, or 64 bytes.  (Low-speed devices must use 8, and
high-speed devices must use 64.)  The ep0maxpacket value is stored in the
initial 8 bytes of the device descriptor, but to read the device
descriptor you have to use endpoint 0!

The two schemes above are the two common solutions to this chicken-and-egg
problem.  The old scheme is the one recommended by the USB Implementors
Forum (which makes it the "Standard"); the new scheme is the one used by
Microsoft (which makes it another kind of "Standard"!).  A well-designed
standards-compliant device will work okay with either scheme.  
Unfortunately it seems that no matter which scheme you pick, some
badly-designed non-compliant devices won't work.  There's an additional
usbcore.ko module parameter people can use in especially bad cases:

    use_both_schemes=y

This will cause the system to try one of the schemes, and if it fails then
try the other scheme.  (Maybe that should always be the default...)

Alan Stern

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值