Page 1 of 1

USB2.1 - no such thing. Is it real?

Posted: Wed Dec 16, 2020 11:14 pm
by m_pav
So I was testing some USB3 Active Extension leads today and came across a dmesg log entry for a 5M cable

Code: Select all

usb 2-1: new SuperSpeed Gen 1 USB device number 22 using xhci_hcd
usb 2-1: New USB device found, idVendor=0bda, idProduct=0411, bcdDevice= 1.27
usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 2-1: Product: 4-Port USB 3.1 Hub
usb 2-1: Manufacturer: Generic
hub 2-1:1.0: USB hub found
hub 2-1:1.0: 4 ports detected
usb 1-1: new high-speed USB device number 24 using xhci_hcd
usb 1-1: New USB device found, idVendor=0bda, idProduct=5411, bcdDevice= 1.27
usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-1: Product: 4-Port USB 2.1 Hub
usb 1-1: Manufacturer: Generic
Hmmm, USB 2.1, no such specification, so why are we seeing this?

Apparently, it's a mis-type introduced with Windows 8.
Well', if that's true, it's hardly surprising, Windows 8 was the nightmare that drove people to Linux in droves :clap: :clap: :clap:

Re: USB2.1 - no such thing. Is it real?

Posted: Wed Dec 16, 2020 11:37 pm
by Adrian
I've found this post...
It isn't a mistake. There is no specification called USB 2.1, however there is such a thing as a USB 2.1 device. The USB 2.0 ECN for LPM introduced a new descriptor request to the enumeration process for USB 2 devices (the BOS descriptor set). The problem is that software can't request a new descriptor type to old devices that don't understand it without introducing compatibility issues with some devices (more than you would probably expect). So, software needed a way to identify whether a device could support the host requesting a BOS descriptor set. The solution in this ECN was to require devices supporting the ECN to set their bcdUSB to 0x0201 (2.01).
Now, when we created the USB 3.0 spec, we again wanted to leverage the BOS descriptor, not only because we wanted to mandate USB 2 LPM in 3.0 devices when operating at high-speed, but also so the device can indicate to a host that it can operate at SuperSpeed (to support everyone's favorite "your device can perform faster" popup). Knowing that when operating at high-speed these devices needed to report the BOS descriptor set, we knew that it couldn't set the bcdUSB to 0x0200. We mistakenly wrote it down as 0x0210 instead of 0x0201 in the 3.0 spec (perhaps we just said "two point one" which might have been ambiguous) when we were trying to just be consistent with the requirement from the LPM ECN. So, rather than changing it back to 0x0201 in the USB 3.0 spec, we just ran with it.

So, there are USB 2.0 devices, USB 2.01 devices and USB 2.1 devices, even though the latest revision of the USB 2 spec is USB 2.0.
I have recommended that the USB-IF actually create a USB 2.1 specification that captures all of the various errata, ECNs, etc from over the years, but it hasn't happened yet.

Re: USB2.1 - no such thing. Is it real?

Posted: Wed Dec 16, 2020 11:37 pm
by JayM
Apparently there's no such thing as a USB 2.1 specification but there are USB 2.1 devices. This explains how that came to be: https://community.osr.com/discussion/24 ... cification (see the post by Randy_Aull.)

Re: USB2.1 - no such thing. Is it real?

Posted: Wed Dec 16, 2020 11:38 pm
by Adrian
Ha, I just quoted that post...

Re: USB2.1 - no such thing. Is it real?

Posted: Wed Dec 16, 2020 11:44 pm
by JayM
Ah, so you did. You ninja'd me. :)