Excerpts from Monty Montgomery's message of 2010-09-15 20:42:53 +0200:
USB 1.1 audio devices tend to stress the available
bandwidth due to
the way the isochronous mode is designed. It makes them 'special' in
many ways, and this is one of the cases the Linux EHCI scheduler
wasn't designed to handle at all, and has simply been hacked here and
there to add support or 'improve' things without actually fixing the
design problems. When I offered a fixed version, there was relatively
little interest in accepting it (it needed a shakedown and debugging
period; big change). The Linux USB stack design is highly unusual in
several fundamental ways, and it complicates the problem (it would be
a very elegant design for completely async/demand driven devices like
mice, so on, it falls flat for fixed bandwidth devices).
To be fair, the EHCI design is fraught with complexity and serious
races, and even the good drivers like the one in MacOSX have special
hacks for dealing with audio devices (this is assuming the MacOSX
driver is the same as the one used in Darwin. It appears to be from
protocol sniffing. The Darwin driver has several unique scheduling
properties, like putting all the interrupt queue heads up front...).
At this point, I despair Linux USB ever being reliably workable for
USB1.1 audio devices. The kernel devs really do not believe there is
any problem. Perhaps things will be a little better for the USB 2.0
audio class once it becomes more common, if it ever becomes common.
Unfortunately, things seem to be repeating themselves-- isochronous
devices do not work at all on the new 3.0 ports (XHCI).
Monty
Thanks Monty for the insight. Sadly I understand little of the technical
side of things, but what it tells me is that I better stay away from
audio over USB in future and choose something like expresscard instead.
PCI is still the best way to go, right?
--
Philipp
--
"Wir stehen selbst enttäuscht und sehn betroffen / Den Vorhang zu
und alle Fragen offen." Bertolt Brecht, Der gute Mensch von Sezuan