USBD_STATUS_XACT_ERROR after canceling a default control pipe request

Hi All,

Having read “How to recover from USB errors?” on the Microsoft Windows USB Core Team Blog [1] I’m confused by the behaviour I’m seeing in a USB driver I’m working on.

That article states that “Client driver need not worry about the error conditions on the default control pipe of the device. These errors are cleared automatically.”

However, I find that if my driver cancels an URB (using IoCancelIrp) that was sent to the default control pipe, all subsequent URBs to the device fail with USBD_STATUS_XACT_ERROR.

Is this normal / expected, or does it indicate an error in the driver or device?

Thanks,

Nick

[1] - http://blogs.msdn.com/b/usbcoreblog/archive/2010/08/28/how-to-recover-from-usb-errors-part-1.aspx

It’s possible you’re running into some TT (Transaction Translator)
issues, if your device is either low or full speed. Is that the case?

Please also check if NoClearTTBufferOnCancel is set in the registry.
http://support.microsoft.com/kb/2003825

To recover from this error, have you tried resetting the device?

On 2/22/2011 11:24 AM, xxxxx@nickdowell.com wrote:

Hi All,

Having read “How to recover from USB errors?” on the Microsoft Windows USB Core Team Blog [1] I’m confused by the behaviour I’m seeing in a USB driver I’m working on.

That article states that “Client driver need not worry about the error conditions on the default control pipe of the device. These errors are cleared automatically.”

However, I find that if my driver cancels an URB (using IoCancelIrp) that was sent to the default control pipe, all subsequent URBs to the device fail with USBD_STATUS_XACT_ERROR.

Is this normal / expected, or does it indicate an error in the driver or device?

Thanks,

Nick

[1] - http://blogs.msdn.com/b/usbcoreblog/archive/2010/08/28/how-to-recover-from-usb-errors-part-1.aspx