I'm doing a custom mobile robot project which utilizes Raspberry Pi, Arduino and I want to grasp the concept of the USB standard (http://www.usb.org/home). When reading about USB cables I've encountered the distinction between 'upstream' and 'downstream' connectors (https://computer.howstuffworks.com/usb1.htm) which is supposed to prevent any mistakes of connecting the wrong end of the cable to PC/printer etc.

So here comes my question: Why there is a distinction between the upstream and downstream if the data can flow in both directions?

If I connect my printer & scanner to my PC, I can print a document using the printer from my PC (so data flows from PC to printer) but then I can scan a document on my printer and save it on PC (data flow from Scanner to PC) so it seems that the one side can be downstream or upstream.

  • \$\begingroup\$ Because only the USB host arbitrates the bus. It's under complete control of the host. \$\endgroup\$ – Janka May 30 '18 at 13:10
  • \$\begingroup\$ "...Arduino and I want to...", it is sentient?! \$\endgroup\$ – Harry Svensson May 30 '18 at 13:10
  • 1
    \$\begingroup\$ The purpose is not to prevent you from connecting a cable "the wrong way" between a USB host and a USB device. The purpose is to prevent you from trying to connect a host to a host or, a device to a device. \$\endgroup\$ – Solomon Slow May 30 '18 at 14:09
  • 1
    \$\begingroup\$ You need to go to your link, to dev elopers section, usb.org/developers/docs , download USB 3.2 zip file, and read the basic USB 2.0 specification, at least its introductory part if you want to grasp the USB concept. \$\endgroup\$ – Ale..chenski May 31 '18 at 15:04

Your Answer

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

Browse other questions tagged or ask your own question.