I have designed a range of audio streamers based on the CM3 - with more designs in the pipework.
The streamers interface to the external Audio DAC via USB 2.0, however under certain conditions we experience random audible popping and clicks which are very hard to diagnose.
It would seem that some USB "interfaces" in the DAC's are more or less sensitive to the issue - with XMOS based devices working better then others (but still can be sensitive).
What is the root cause of the CM3 USB interface weakness? - my uneducated understanding is that the USB host controller in the Broadcom IC does not support DMA and that interrupts must be serviced by the CPUs (within a a certain time window (1ms?) otherwise the frame is dropped). Can anyone clarify the real issue and can anything be done to improve the USB stability so we don't drop frames.
I'm no software guy, but could not one ARM CPU core be dedicated JUST to servicing the USB interrupts? this might be seen as rather wasteful, but Audio throughput without dropouts is critical in our application - over any other potential performance hit.
When I look at the CPU loading the system is operating at around 7% to 10% loading (and this would appear to be just a single core) - yet we still experience heavy dropouts especially when transparency mode is enabled on Chromium web browser (highlighting an object in the browser session).
Looking at the CPU loading and there seems little correlation with CPU load (never anywhere near 100%) and real world dropouts...
I understand that in the very early days USB caused a whole bag of hurt - with even keystrokes being missed .... Its hard to really understand the whole issue - could RPi please comment and advise what can be done.
Can the Broadcom USB host controller be made to support USB2.0 data without dropping frames? - we are operating no where near the Max 480Mbps USB 2.0 data limit so hope it can be resolved at a the Kernal level.. somehow...
I expect that Broadcom and Rpi are working on the next Gen SoC, can a real USB host controller (I suspect USB3.0 is being considered) be included - maybe a couple of USB hosts