Came across some doubts:

  1. What exactly are the differences between a USB host and device? Is it just that who powers the bus?
  2. When two devices connect how the device say "hey I will be the host and you be the device?"
  3. Can one device acts as a host as well as a device. For example, "A" should act as a device when a USB host is connected, and "A" should act as host when a USB device is connected?
  • 2
    \$\begingroup\$ I would recommend that you read Jan Axelson's "USB Complete". It is a true gem on this subject matter. \$\endgroup\$
    – quantum231
    Commented Jun 10, 2013 at 10:55
  • 1
    \$\begingroup\$ I just wanted to thank @quantum231 for referring me to the book by Jan Axelson. I read an excerpt on her site and immediately decided to buy it, until I found out the latest edition costs ~$40... But I didn't really need the latest specs with 3.1 and USB-C, so I just got a used fourth edition paperback for 14 bucks, it's up to date enough for me, includes USB 3.0, and, USB OTG, which stipulates the protocol when a host can also be a device, and vice versa, which would answer this question. I know the OP was years ago, but just wanted to mention that I found the reference material to be useful. \$\endgroup\$ Commented Dec 19, 2017 at 17:35
  • \$\begingroup\$ A good article worth reading: cdn-learn.adafruit.com/downloads/pdf/… \$\endgroup\$
    – user197942
    Commented Sep 8, 2018 at 4:40

2 Answers 2


What exactly are the differences between a USB host and device?

The host initiates all communication on the bus, the device only responds when asked by the host. For Details see the specs on usb.org.

When two devices connect [...]

One must behave as the host and the other as the device. Details can be found in the USB OTG Specs.

Can one device acts as a host as well as a device?

For example, many Android phones and tablets can (requires Android 3+). The "magic" is in the On-the-Go cable/adapter, which switches the phone into host mode by pulling the ID pin to GND.


Just like Stéphane, I came here for the answer. Which I did not find here! With a little research this is what I found.

With a host controller you will be able to communicate with all USB devices, and with a USB device controller you can just communicate with a host controller.

USB host is the USB on the PC side in most cases and USB Device is the USB in your mouse ,keyboard, flash memory and so on.

All USB transactions are managed by the Host. and the Device only responses to the Host transactions.

Hope that helps.

  • 5
    \$\begingroup\$ It's not clear what you are adding that has not already been said years ago. \$\endgroup\$ Commented Apr 25, 2017 at 3:09
  • 6
    \$\begingroup\$ He gave a slightly more thorough answer with concrete examples rather than sending you to the first page of a long and complex document. The selected answer is could have at least boil it down better \$\endgroup\$
    – user148298
    Commented Aug 3, 2018 at 23:28
  • \$\begingroup\$ From another point of view, it's unclear if an MCU can present two or more devices, i.e. a keyboard with a built-in trackpad. Is the MCU a host connected to two devices, or merely two separate devices with the PC as their host? \$\endgroup\$
    – user148298
    Commented Mar 17, 2023 at 17:37

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