I’ve been trying to find out whether there’s any sort of difference between USB 2.0 cards, specifically as addresses the needs of digital audio workstations on Linux.
Very few people in linux communities seem to have addressed this question at all, and none I can find on the audio side. (Firewire, oh my gods yes – huge lists. Just not USB.)
But I did a lot (a lot) of digging, and discovered via the Linux USB kernel driver dev mailing list(!) that while there’s not much difference on the USB 2.0 side, there are important differences on the 1.1 side. These difference manifest in two different driver models. That still matters at least a little bit in 2.0, because those 1.1 drivers still get loaded.
Anyway, that difference is that there are two very different driver interface models. One is UHCI, created by Intel and used by Intel and Via, mostly. The other is OHCI, which Compaq pushed when it was still around, and Microsoft preferred; it has less intellectual-property load, and NEC, SiS, and some other makers use it. If you see a “Mac compatible” card? It’s going to be OHCI.
The OHCI model puts a lot more of the business of doing USB into hardware on the card. UHCI has the processor do that work. And while that isn’t a heavy load, it is a nonzero load, and more importantly means that UHCI chipsets require more CPU attention than OHCI chipsets, on a recurring basis. And that is something we don’t need in a digital audio workstation; there are only so many board interrupt opportunities; I want them for moving data, not servicing USB mechanics.
Once I knew that, I did more searching and found people saying how switching to a NEC chipset card had (in one case in particular) ‘saved their bacon’ specifically on their digital audio workstation. They were using ProTools on Windows, not Linux, but it was still with a USB audio interface.
The chipset used by my on-motherboard USB ports is, of course, Intel, and therefore UHCI. (And UHCI drivers are actually loaded, I checked.) There’s also an on-motherboard hub between the outside world and the one true root device; that doesn’t help anything either. So there’s a nonzero chance I’ll see improvement both from changing from UHCI to OHCI, and from moving to a true root USB device instead of a hub device. It won’t be much, but I’m only looking for a few milliseconds of latency here. And even that’s more for… reliability buffer, I suppose? Yeah. Reliability buffer, rather than pure necessity.
I’m mostly posting this 1) so I remember it and 2) so other people looking for this data can find it. HI! I can’t be the only one!
I’ll update this post if I get interesting results.
eta: INTERESTING RESULTS AHOY: CHIPSETS MATTER SO MUCH OMG. I’ll write up a post with details, post it tomorrow.