4

I've haven't been able to find any conclusive data about USB bandwidth for the RPi model B+

As I understand, the bandwidth is shared between all 4 USB-ports (and the Ethernet) because they are using the same BUS.

So my question is, what would be the max transfer speed per port if all 4 USB-ports were used simultaneously - theoretically (or in practice if you've got any data)?

5

The Pi uses a single usb 2.0 bus for Ethernet in addition to all usb ports.

A usb 2.0 bus can handle up to 480Mbits/s of bandwidth - a significant portion of that will be consumed by the overhead due to managing multiple devices, with exact numbers being hard to find, as they depend on each individual connected device, as well as what it is doing and how that is prioritized, but under worst-case scenarios can be up to 50%.

So now that we have essentially 5 devices that need to split the remaining 240Mbits/s of bandwidth, assuming that each one gets exactly 20%, we are left with 48 Mbits/s for a single device, or 6MB/s per device (since USB file transfers are usually measured via MB instead) - note that this number is the maximum combined for input and output, and that file transfers may have a significant amount of IO involved besides the actual transfer (especially with multiple, smaller files).

  • 1
    Great explanation thanks! 6 MB/s per device isn't much, but it might be enough for my project - even at lower speeds. – NinjaFart Aug 12 '14 at 18:31
  • @NinjaFart - that's assuming that all 5 devices are used - chances are at least one of them won't be using that much, but it's harder to quantify other numbers, so that's why I assumed worst-case – user2813274 Aug 12 '14 at 18:44
  • I understand. I'll take the chance, and if it won't work I'll go for multiple RPi's. – NinjaFart Aug 12 '14 at 18:48
2

The broadcom chip 9524 is just a 9512 with 4 ports instead of 2 (+ethernet). It is pin compatible, and, as far as I know, hardware equivalent. This chip was designed for use in phones, which means: the usb specification [stack?] is partially implemented in hardware, and the rest of it is emulated by the linux driver. In other words, you can't rely on it either for heavy usb traffic (eg webcam + soundcard + streaming).

  • 1
    This would explain why CPU shows 100% usage during USB transfer (copying large file from USB flash to /dev/null). – Kozuch Apr 24 '15 at 18:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.