USB Bandwidth
Just how many CS50-USB units can you connect to the same PC?
Well, on the one hand you can connect a lot, as many as you have ports for. You can keep adding hubs as you go until the path back to the USB root is too long and the units fail to enumerate. The spec for this is that things should work up to five meters and/or a 5-deep chain of hubs. (This assumes that you aren't overloading the USB power supply.)
On the other hand, the official answer is just one. All of our systems are built with an eye towards a single user of a single system with a single headset. This allows us keeps things easy on the developer since you don't need to choose from lists of devices or anything of that nature. In the unexpected case of more than one headset nothing should actually break, but software will just go with whatever headset it finds first
On the gripping hand, the practical limit is three. This is due to the nature of USB. In the USB world there are three speeds: low at 1.5Mbit/s, full at 12Mbit/s, and high at 480Mbit/s. The CS50-USB is a full-speed device that reserves 4Mbits/s. (We're full-speed rather than hi-speed to maximize compatibility, and since we don't need that extra bandwidth anyway.) So with a high-speed port on your PC, 480 divided by 4 equals a lot, right? Not so fast. All full-speed connections are routed to the same full-speed controller. This means all devices share the same full-speed 12Mbit/s. Once that is gone, you're done. The remaining 468Mbit/s is only available to hi-speed devices. Note: this limit is estimated based on bandwidth and audio performance, at four units and above the hardware still works, but the audio will vary between terrible and totally unusable. Also, the restriction to only one headset mentioned above is still in force for the software considerations.
Now, there is a theoretical escape hatch in the three headset limit. First though, let me emphasize theoretical. I haven't actually tested this, it just seems like it might work. Now the theory is that the real limitation is in full-speed USB controllers. So the solution is to get more controllers, leading to the rare situation where adding more hubs might actually make your situation better. Imagine hub-a with three CS50-USBs connected to it and imagine hub-b set up the same way as well. These are then connected to hub-c which should be able to handle it just fine. The reason this works is that, assuming all the hubs as well as the PC are hi-speed USB, the data is stepped up to hi-speed on the far (PC) side of the full-speed controller. So the connection between hub-a and hub-c is actually a hi-speed connection using 12Mbit/s leaving plenty of room for a second 12Mbit/s hi-speed connection between hub-b and hub-c. The end result is a saturated full-speed controller on hub-a, another saturated full-speed controller on hub-b, and a hi-speed controller on hub-c having an easy time handling 24Mbit/s out of its possible 480 leaving it with 456Mbit/s to handle more headsets on hubs d, e, f, and so on until you reach the limits of 480 divided by 4 equaling lots that was mentioned earlier. While this may work, let me again emphasize theoretical. This is intended as a thought exercise to illustrate how things work. This is not intended as advice on how to put a system together.
Well, on the one hand you can connect a lot, as many as you have ports for. You can keep adding hubs as you go until the path back to the USB root is too long and the units fail to enumerate. The spec for this is that things should work up to five meters and/or a 5-deep chain of hubs. (This assumes that you aren't overloading the USB power supply.)
On the other hand, the official answer is just one. All of our systems are built with an eye towards a single user of a single system with a single headset. This allows us keeps things easy on the developer since you don't need to choose from lists of devices or anything of that nature. In the unexpected case of more than one headset nothing should actually break, but software will just go with whatever headset it finds first
On the gripping hand, the practical limit is three. This is due to the nature of USB. In the USB world there are three speeds: low at 1.5Mbit/s, full at 12Mbit/s, and high at 480Mbit/s. The CS50-USB is a full-speed device that reserves 4Mbits/s. (We're full-speed rather than hi-speed to maximize compatibility, and since we don't need that extra bandwidth anyway.) So with a high-speed port on your PC, 480 divided by 4 equals a lot, right? Not so fast. All full-speed connections are routed to the same full-speed controller. This means all devices share the same full-speed 12Mbit/s. Once that is gone, you're done. The remaining 468Mbit/s is only available to hi-speed devices. Note: this limit is estimated based on bandwidth and audio performance, at four units and above the hardware still works, but the audio will vary between terrible and totally unusable. Also, the restriction to only one headset mentioned above is still in force for the software considerations.
Now, there is a theoretical escape hatch in the three headset limit. First though, let me emphasize theoretical. I haven't actually tested this, it just seems like it might work. Now the theory is that the real limitation is in full-speed USB controllers. So the solution is to get more controllers, leading to the rare situation where adding more hubs might actually make your situation better. Imagine hub-a with three CS50-USBs connected to it and imagine hub-b set up the same way as well. These are then connected to hub-c which should be able to handle it just fine. The reason this works is that, assuming all the hubs as well as the PC are hi-speed USB, the data is stepped up to hi-speed on the far (PC) side of the full-speed controller. So the connection between hub-a and hub-c is actually a hi-speed connection using 12Mbit/s leaving plenty of room for a second 12Mbit/s hi-speed connection between hub-b and hub-c. The end result is a saturated full-speed controller on hub-a, another saturated full-speed controller on hub-b, and a hi-speed controller on hub-c having an easy time handling 24Mbit/s out of its possible 480 leaving it with 456Mbit/s to handle more headsets on hubs d, e, f, and so on until you reach the limits of 480 divided by 4 equaling lots that was mentioned earlier. While this may work, let me again emphasize theoretical. This is intended as a thought exercise to illustrate how things work. This is not intended as advice on how to put a system together.


0 Comments:
Post a Comment
<< Home