HACKER Q&A
📣 reassembled

Why wasn't USB designed to handle peer-to-peer data transfer?


A friend and I were wondering why USB wasn't designed to accommodate the peer-to-peer (computer-to-computer) data transfer use case? In the DOS and Win 3.1 days we used to transfer files across computers via either serial or parallel port connections. It seems that USB "crossover cables" do exist but they either have some kind of active electronics in the middle, or expressly say "do not use this to connect two computers together".


  👤 warrenm Accepted Answer ✓
Host-to-Host transfer was added in 2019 in USB4 (per https://en.wikipedia.org/wiki/USB#Version_history)

As to why it wasn't there initially ... why should it have been? How many people were going to put their desktops close enough together that a 1m USB cable could reach between them?

Peak speed on USB1 (1996) was 12Mbps - home and corporate networks were already operating at at least 10Mbps, and handle data transfer quite nicely (and over far longer distances)

If you wanted to go host-to-host with ethernet, you only needed a crossover cable to do it

USB access for external devices like Zip drives was available - and, if you used Zip disks, the media'd interoperate between internal and external variants

One of the first computers to exclusively rely on USB for peripherals was the first-generation iMac back in 199

USB thumb/external drives appeared about the same time (a couple "history of thumb drive" sites list it as 1999, others as 1998 ... I suspect is the difference is between "design/prototype" and "on sale")

In short, there was no reason to enable host-to-host transfers with USB


👤 frou_dh
That's what USB "On The Go" mode was for I think. The 2 devices weren't peers simultaneously, but you could decide which device was in control and "using" the other one.

👤 gregjor
https://en.wikipedia.org/wiki/USB

> USB was designed to standardize the connection of peripherals to personal computers, both to communicate with and to supply electric power.

> USB has a strict tree network topology and master/slave protocol for addressing peripheral devices; those devices cannot interact with one another except via the host, and two hosts cannot communicate over their USB ports directly


👤 tssva
When Intel designed USB they worked with peripheral makers to develop the requirements. Connecting two computers directly together doesn't help sell peripherals.