serial bus bandwidth

Status
Not open for further replies.

kteepa

Member
I am working on a project where I would like to stream large amounts of neural data to a computer via bluetooth, simultaneously with rapidly streaming Teensy 4.1 data via usb.

Does bluetooth data streaming count towards/take up part of a computer's total serial bus bandwidth? i.e., I read somewhere that a computer splits up its total serial bus bandwidth across the usb ports. Does this same bandwidth have to handle incoming bluetooth data? My computer is already overwhelmed by teensy so wondering if i should be planning on just using two computers..
 
It depends.

A typical modern PC might have 14 USB ports (including internal ones on motherboard headers), but only 3 USB controllers. Generally speaking, all the physical ports from the same controller share USB bandwidth.

But USB3 is actually handled as 2 separate controllers. The 5 or 10 GBit bandwidth is separate from the 480 MBit bandwidth.

If you're concerned about USB bandwidth, I believe the High Point RocketU 1144D card is the best solution.

https://www.amazon.com/High-Point-PCI-Express-RocketU-1144D/dp/B015CQ8DCS

I have one in my PC. It really is 4 separate controllers. The price is a little high, but not much more than buying 4 single controller cards. I believe StarTech make a similar 4-controller card that's slightly less expensive, but I've heard it has some driver problems on Linux. Might be ok if you only use Windows. The other downside is you need a 4+ channel PCIe slot for those cards. Some PCs have them, but many cheaper machines have only 1 channel slots, except for the graphics card.

But that's only the hardware side. If your software can't keep up, more bandwidth from the hardware will only more fuel to that fire. If you're programing in C / C++ with access to the native OS APIs, there's usually quite a lot you can do to improve efficiency. Sadly, if you're running on top of a virtual machine or other managed environment, sometimes options are limited and efficiency can be much harder.
 
It depends.

A typical modern PC might have 14 USB ports (including internal ones on motherboard headers), but only 3 USB controllers. Generally speaking, all the physical ports from the same controller share USB bandwidth.

But USB3 is actually handled as 2 separate controllers. The 5 or 10 GBit bandwidth is separate from the 480 MBit bandwidth.

If you're concerned about USB bandwidth, I believe the High Point RocketU 1144D card is the best solution.

https://www.amazon.com/High-Point-PCI-Express-RocketU-1144D/dp/B015CQ8DCS

I have one in my PC. It really is 4 separate controllers. The price is a little high, but not much more than buying 4 single controller cards. I believe StarTech make a similar 4-controller card that's slightly less expensive, but I've heard it has some driver problems on Linux. Might be ok if you only use Windows. The other downside is you need a 4+ channel PCIe slot for those cards. Some PCs have them, but many cheaper machines have only 1 channel slots, except for the graphics card.

But that's only the hardware side. If your software can't keep up, more bandwidth from the hardware will only more fuel to that fire. If you're programing in C / C++ with access to the native OS APIs, there's usually quite a lot you can do to improve efficiency. Sadly, if you're running on top of a virtual machine or other managed environment, sometimes options are limited and efficiency can be much harder.


I'm a little confused by your message. Are you saying that bluetooth data does stream into a USB controller, and that whether or not it uses up bandwidth that's shared with a given USB device depends on whether that USB device is plugged into the same USB controller to which the bluetooth data streams?
 
Status
Not open for further replies.
Back
Top