Motherboard with dedicated usb buses

Hi there,
I was reading again this old topic where it’s specified that when using a USB audio interface xruns may raise if many devices get connected to the same USB bus (which - if I got it right - depends on the internal connections of the various USB ports in the motherboard), since some device may hog the bus for a long time, thus interfering with the audio signal flow between the USB audio interface and the PC.

Since I’m upgrading my system I tried to search for some motherboards with dedicated usb buses, in order to have an “isolated” to connect the USB audio interface and be sure that bus is for the audio interface only. Unfortunately I didn’t found any motherboard with this feature on the market… Did you know if such a device exists? If so, could you recommend me one?

Thanks in advance

If you are using a desktop with expansion slots, you can purchase a PCIe USB card to add to your system and then guarantee nothing else is using the USB ports on the add-in card.
Someone on the Linux Audio Users mailing list recently mentioned that Renesas USB controllers seem to work well.

I can’t give you precise details, but I know that that my Gigabyte Taichi X399M motherboard has multiple USB busses that are independent. I know this because I’ve had to experiment to figure out which USB ports correspond to which busses. I don’t think you could determine this from any available specifications of the motherboard.

Which audio interface(s) and other USB devices do you actually want to connect?
I’d say, as long as it’s not a “high-end” setup, any decent laptop or PC should suffice (?)

In my case I use:

  • PC: MSI B350 Tomahawk with a Ryzen 7 1700
  • Laptop: KDE Slimbook Pro X15 (ordered in 2020) with a Ryzen 7 4800H

audio interfaces: Behringer UPhoria 404HD (PC / at home) and Focusrite Scarlett 2i2 (laptop / when on-site for vocal recordings)

HTH

Hi there, thank you for the answers.
@slash I’m using an M AUDIO M TRACK II Plus USB audio interface
@paul Thanks a lot for the useful advice! After some discussion on the new configuration with some the employee of the shop I was planning to but the Gigabyte Z890M GAMING X (yes, I’m also a video game addict :rofl:) which seems to be the same brand of yours… Do you think it could have separate buses too or there is a way to know it even though this info doesn’t seem to be specified in the motherboard specs?
@ccaudle This seems another good idea! I’m just a little bit worried about performance… Do you think the translation from USB bus to PCI socket inside the PCIe card won’t affect the speed of the signal flow (and thus raise latency/xruns)? I’m asking because in my current motherboard I only have PCIe expansion blocks x4 (the little ones) and if I remember correctly these tend to be very slow… Maybe I should make sure to buy a motherboard with at least a PCIe expansion slot x16 free for the USBtoPCIe card?

Not an issue. Just don’t worry about it.

The motherboard you mentioned has a PCIe gen 4 x4 slot. Generation 4 PCIe is 16Gb/s transfter rate.
That is per lane, so total bandwidth is 64Gb/s for that slot.
PCIe is pretty efficient, so you have around 50Gb/s at least for payload.
Audio is 24b/channel, and at most you would be using 96k samples/second, so 2.3Mb/s/channel.
So your x4 slot has enough bandwidth for “only” 20,000 channels (give or take a thousand channels).
That doesn’t count the USB inefficiency, or the limited bandwidth of each USB bus, so in practice with a multi bus USB controller you are not likely to be able to support more than a couple of hundred channels.

So just don’t worry about it until you need over 100 channels.

All true … but if you plug e.g. a camera into the same USB bus, you will run into problems with both devices. This is the main reason why (at least in my experience) you need to know that USB port A is on a separate USB bus from USB port B.

1 Like

Adding an additional bit of anecdotal evidence, about 15 years ago I used an M-Audio M-Track Plus audio interface (generation prior to yours) with a desktop PC that housed a mid-grade (at best) motherboard. The low-latency audio performance was relatively poor via USB. After adding a row of USB 2.0 ports into one of the free PCI slots, it not only far-exceeded the built-in ports on that board, it exceeded the performance of faster laptops I have owned in the years since. PCI bandwidth was plenty for that device, and PCIe is far more capable.

The motherboard you are considering may likely handle your needs with one of its built-in ports. It usually takes some hands-on tinkering to really know. If it is any peace of mind, I think a PCIe card with USB ports dedicated to your audio interface is a solid backup plan to harness the best performance your motherboard can deliver over USB…per my limited experience.

1 Like

FWIW, YMMV, etc: this is what I have made work over the last three or four Linux machines I have used for recording.

  • I disable (if possible) onboard higher-bandwidth USB devices (webcam, internal soundcard, etc.)
  • For each machine, I buy / scavenge a cheap external USB hub, and plug all the external low-bandwidth devices (mouse, keyboard, even MIDI controllers into it), and plug the hub into the “worst” USB port the box offers (USB 2.0, maybe the front panel, etc.)
  • I plug the USB audio interface into a different slot, ideally one which uses a different “hub” on the motherboard (back-panel vs. front panel, USB 3.0 vs 2.0, etc.)
  • I plug other higher-bandwith external USB devices (SSD drives, in my case, maybe a webcam or video capture card) into different slots, ideally on a different motherboard hub from the audio interface.

I use lshw and lsusb to figure out which hubs things are plugged into, and iterate until the audio interface is as isolated as seems feasible.

Only after I’m satisfied that the USB audio interface is not sharing its bus with other devices do I start tweaking stuff like IRQ prioritization.

2 Likes

In terms of physical ports: In general you want a USB controller that is closest to the Socket (in terms of number of controllers between socket and usb port ) or on PCI Lanes that are not bifurcated as much. I believe there are motherboards with usb c that have more direct access to the socket.

I dont generally put anything else on the music usb port or on a port that shares the same controller. This is why it is important to understand a bit of the general schematics of the board.

I look at this channel on youtube: # BuildOrBuy. I am not affiliated with his channel in any way but he has more information on boards and schematics that will indeed give you incredible info on your motherboards. he will go over in great detail the general schematics of PCI lanes and usb ports
He goes over a ton of motherboards probably including the one you mentioned and can tell you the PCI lane division which will get you the best performance for usb that is the least likely to give recording problems.

1 Like

Ok, this is good news, but I remembered I did such a try years ago buying this USB-to-PCIe expansion slot and didn’t see major improvements in performance… Maybe I have to check for some feature/spec in particular? Could you give some advice on what to look for when buying a PCIe card for this specific purpose? Maybe even some specific brand/model which is known to be good for working with audio (and also in terms of compatibility with Linux, of course…)?

Hey, thank you for this very useful “handbook”!
Could you please remind me what exactly I have to look for when issuing lshw and lsusb commands to figure out to which hub my usb devices are plugged in?

Thanks a lot! I’ll take a look at that channel for sure!

Hi again! This sure is good news! As I wrote before, I did such a try years ago but didn’t satisfy me… Maybe I’ll do it again, check USB buses situation more in detail using lshw and lsusb commands and let you know!

Honestly, the details have evaporated from my brain, and the swap space has been purged at this point. I poked at it, used the output to guess at other options, and tweaked the ports I was using until I got the latency I was looking for (128 samples/frame, 3 periods/buffer, ~8ms latency in qjackctl).

1 Like

Just lsusb is probably already enough. If it shows more than one entry on a bus then there’s a big chance there’s a USB device connected to it. And by connecting something like a mouse to different USB ports you could figure out to which bus these ports are connected.