The crackling audio problem (from missing packet reads) disappears in two cases:
- If I force the device to be allocated on one of the internal high-speed USB busses by attaching it to a USB 2.0 hub (bus powered only), it works perfectly. All the hub connection does is change the internal bus allocation - it is not providing any additional power, and my device is still enumerated the same (full-speed, etc).
- If we modify our firmware to not synchronise with the USB SOF, then it works perfectly. However unfortunately this breaks things on other operating systems.
Also I have confirmed that the device works perfectly when allocated on an internal full speed bus on my older Macbook Pro (4,1), which seems to have 5 full-speed busses available internally. My newer Macbook Pro (5,3) has only 2 full-speed busses internally (shared with keyboard, trackpad or bluetooth controller). It appears to work better if connected to the front USB port on my Macbook Pro (shared with keyboard and trackpad), compared to the rear one (shared with BRCM2046 / Bluetooth - disabled), but still there is some audible crackle occurring regularly.
I have loaded the AppleUSBAudio.kext from the older machine (running 10.5.8) on to the newer one (10.6.4) and the problem persists, but perhaps not as bad.
Anyway, so while I now have a workaround solution - using an external USB 2.0 hub to attach the device - this seems a little messy and unnecessary.
From the unsynchronised version of my firmware, which works fine on all tested Macs, the bandwidth is available on the full-speed bus. I have disabled the bluetooth, which should mean that internal full-speed bus is dedicated to my device (?). My device requires ~8 Mbps, which is at the upper end of the available 12 Mbps, but still should function if nothing else is attached to that bus.
It therefore seems to be mostly a timing issue, with the Mac stopping to read packets after a short time of synchronised operation at the high end of full-speed bandwidth.
So I question whether this is purely a hardware issue, or whether the system USB drivers might be modified to resolve it.