I'm going to look at USB errors now as some of the HW errors seem to be secondary effects of those. I may move to fixed data records as USBLIB calls don't make it easy to deal with variable length data. You have to know the length in advance or deal with timeout errors, and then it's common to see double records that get truncated.
fwiw - I rolled back to USB-serial based cgminer 3.1.1 due to an abundance of USB errors in newer versions. However this was on an RPi running Raspbian/Debian.