What HCI does USB4 use?
What HCI does USB4 use?
I know that USB 1 uses UHCI and OHCI, USB 2 uses EHCI, and USB 3 uses xHCI. However, there does not appear to be a specification for any HCI used by USB 4 (that I can find, anyway). Does USB4 just use xHCI? (According to Wikipedia it might use Thunderbolt 3 but I don't know if just supporting Thunderbolt3 would make it possible for me to use USB 4.) I'm mainly asking out of curiosity at this point.
Re: What HCI does USB4 use?
You have given a good example of the very common misconception of most people starting out using USB. USB 1 is not UHCI or OHCI, USB 2 is not EHCI, etc.Ethin wrote:I know that USB 1 uses UHCI and OHCI, USB 2 uses EHCI, and USB 3 uses xHCI. However, there does not appear to be a specification for any HCI used by USB 4 (that I can find, anyway). Does USB4 just use xHCI? (According to Wikipedia it might use Thunderbolt 3 but I don't know if just supporting Thunderbolt3 would make it possible for me to use USB 4.) I'm mainly asking out of curiosity at this point.
A USB 4 device, with the acceptable Type-A socket, is completely UHCI/OHCI compatible. It also goes the other way around, a UHCI/OHCI controller is USB 4 compatible. The version of the USB specification has nothing to do with the version of the xHC controller.
A USB 1 device plugged into an xHCI is fully compatible. In fact, this direction, the USB 1 device is fully capable of anything it could have done when plugged into a UHCI/OHCI.
The other way around, if you plug a USB 4 device in to a UHCI, it should, at the very least, enumerate and let the OS know what it is. It may not be usable, in a sense, but it is fully USB 4 compatible. I have a Super-Speed thumb drive that uses streams and is extremely fast at large transfers when plugged into a stream capable xHCI controller. However, that exact same thumb drive, when plugged into an UHCI still functions and allows me to read or write to it, just not as fast (UAS Protocol using streams verses BBB protocol).
The USB specification version is usually the first released while the xHC controller is then released to accommodate the new features in the new USB specification. It just so happens, at the moment, that the latest release of the xHCI specification (revision 1.20) is/will be USB 4.0 capable.
Hope this makes sense.
Ben
- http://www.fysnet.net/the_universal_serial_bus.htm
Re: What HCI does USB4 use?
Yeah, this helped. Thanks. What about the other way around (using Type-C sockets)? And how will xHCI accommodate the extra features of USB 4.0 (USB 3/PCIe/display port/host-to-host tunnelling)? Like I think its awesome that I can now plug in a device and it shows up on my PCIe bus, but how would I even know that somebody has attached a device that tunnels PCIe? Would that appear as a hot-swappable device? (I presume that the host-to-host and display port tunnelling mechanisms require their own device drivers.)BenLunt wrote:You have given a good example of the very common misconception of most people starting out using USB. USB 1 is not UHCI or OHCI, USB 2 is not EHCI, etc.Ethin wrote:I know that USB 1 uses UHCI and OHCI, USB 2 uses EHCI, and USB 3 uses xHCI. However, there does not appear to be a specification for any HCI used by USB 4 (that I can find, anyway). Does USB4 just use xHCI? (According to Wikipedia it might use Thunderbolt 3 but I don't know if just supporting Thunderbolt3 would make it possible for me to use USB 4.) I'm mainly asking out of curiosity at this point.
A USB 4 device, with the acceptable Type-A socket, is completely UHCI/OHCI compatible. It also goes the other way around, a UHCI/OHCI controller is USB 4 compatible. The version of the USB specification has nothing to do with the version of the xHC controller.
A USB 1 device plugged into an xHCI is fully compatible. In fact, this direction, the USB 1 device is fully capable of anything it could have done when plugged into a UHCI/OHCI.
The other way around, if you plug a USB 4 device in to a UHCI, it should, at the very least, enumerate and let the OS know what it is. It may not be usable, in a sense, but it is fully USB 4 compatible. I have a Super-Speed thumb drive that uses streams and is extremely fast at large transfers when plugged into a stream capable xHCI controller. However, that exact same thumb drive, when plugged into an UHCI still functions and allows me to read or write to it, just not as fast (UAS Protocol using streams verses BBB protocol).
The USB specification version is usually the first released while the xHC controller is then released to accommodate the new features in the new USB specification. It just so happens, at the moment, that the latest release of the xHCI specification (revision 1.20) is/will be USB 4.0 capable.
Hope this makes sense.
Ben
- http://www.fysnet.net/the_universal_serial_bus.htm
-
- Member
- Posts: 5563
- Joined: Mon Mar 25, 2013 7:01 pm
Re: What HCI does USB4 use?
USB4 defines a new host interface adapter that's responsible for configuring tunnels for the different kinds of traffic USB4 supports. When the traffic in question is USB, you'll configure the USB4HIA to route it to an xHCI controller. Different types of traffic (PCIe/DisplayPort/host-to-host) will be routed elsewhere.
Re: What HCI does USB4 use?
I assume that the HIA's configuration registers are defined in chapter 8 of the USB4 spec, but how do you actually discover the HIA to begin with?Octocontrabass wrote:USB4 defines a new host interface adapter that's responsible for configuring tunnels for the different kinds of traffic USB4 supports. When the traffic in question is USB, you'll configure the USB4HIA to route it to an xHCI controller. Different types of traffic (PCIe/DisplayPort/host-to-host) will be routed elsewhere.
-
- Member
- Posts: 5563
- Joined: Mon Mar 25, 2013 7:01 pm
Re: What HCI does USB4 use?
I think chapter 8 might be the registers for USB4 hubs. The HIA is defined in chapter 12. You can detect it from the PCI class code 0C 03 40, similar to other USB host controllers.