Try the libusb code I listed, since that will be what I'll put into cgminer if needed.
That test program I have will tell you if everything will be OK, no need to recompile or relink cgminer for testing
The cause of the cgminer problem is that, I call libusb in the Icarus driver and it either doesn't return for 60 to 90s on any work without a nonce, or it never returns. The timeout value passed is 'ignored'.
The 60-90s version gives you around 100MH/s on that device, the never return version gives you SICK on that device.
On all but my RPi I don't get this problem.
On my RPi I get this problem with Raspbian, but don't get it with Arch.
I've since linked cgminer on the same failing Raspbian with the version of libusb I listed and the problem is gone.
So I'm pretty much certain it's a libusb problem.
The version numbers shown on different Linux distributions don't mean it actually has exactly the same code - since they often put patches into their versions.
I guess for you there could be some other hardware issue (USB3 hub) but for me this works even on a USB3 hub.