I’m having trouble getting isochronouse transfers to work properly. I am
working with the Cypress CY7C68013 EZ-USB development kit. I’ve used both
the sample driver that comes with the development kit, as well as one that
is very close to the isousb sample driver in the Microsoft DDK, and am
seeing the same results.
I should also mention that the system I’m using is running XP Professional
with SP1, 2.8GHz P4 with 512 MB of RAM.
When an isochronous transfer completes, I’m getting back a C0000011
(USBD_STATUS_XACT_ERROR) in the USBD_ISO_PACKET_DESCRIPTOR Status field for
each packet, and the Length field of the same structure is 0.
Interestingly, even though the Status field has the error and the Length
field is zero, it does look like the data was returned correctly in the
transfer buffer.
Per section 4.15.1.1 of the EHCI spec, this error means the host controller
has set the “Transaction Error (XactErr)” bit in the transfer descriptor’s
status field. The EHCI spec indicates that this bit is set when it
encounters a CRC error, a timeout, an invalid PID, babble, or a buffer error
(under/overrun).
Has anyone seen this error, that could suggest a solution, or how to go
about troubleshooting this? The fact that the driver that Cyress shipped
with the device, as well as my driver based off the Microsoft DDK sample
driver both are showing the same results makes me think this may be some
sort of configuration problem, rather than a problem in the driver…