Search code examples
usbdriverpacketcrc

Readable CRC error count property on USB 2.0 host controllers


The Transfer Descriptors contain an error limit for which each transfer persists. However, is there a cumulative CRC error count on the host controller for every endpoint transfer on a USB 2.0 device?


Solution

  • As no one has answered this question as of yet (for 2 months), I will state my solution here.

    The USB 3.0 specification (page 10-63) documented here:

    http://www.gaw.ru/pdf/interface/usb/USB%203%200_english.pdf

    lists a property defined on the GET_PORT_ERROR_COUNT.

    As this property is USB 3.0 exclusive, it is not backwards-compatible with USB 2.0 as of yet. Due to lack of Windows USB 3.0 support (Windows 8 supported) and incomplete libusb support for the 3.0 standard on POSIX-compliant machines, I am unable to test if this property complies to my project.

    Driver Reference: http://lxr.free-electrons.com/source/include/linux/usb/hcd.h#L517

    521   /* class requests from USB 3.0 hub spec, table 10-5 */
    522   #define SetHubDepth             (0x3000 | HUB_SET_DEPTH)
    523   #define GetPortErrorCount       (0x8000 | HUB_GET_PORT_ERR_COUNT)