Why does Windows show "This device can perform faster" notification if I connect it clumsily?

74

10

I noticed that on both Windows XP and 7 (and 2 different computers respectively) I could manage to get that "This device can perform faster if you connect it to a high-speed USB 2.0 port" notification to pop up if I connect the cable very slowly (or struggle a bit doing it with just one hand). If I connect it quickly enough or normally, with both hands, there is no notification. In either case, all such devices appear to function normally.

What I think happens is that the contact between wires gets interrupted for enough time during slow/clumsy connection that the USB controller thinks it's not 2.0 but slower. But why does it think so? Or why does it not just say "You are bad at connecting cables, please unplug and try again"?

user1306322

Posted 2016-10-01T15:19:16.307

Reputation: 4 237

Is the device connected to a usb dongle rather than direct to your box? If so try connecting the device direct and not a 3rd party so to speak. – None – 2016-10-01T15:47:02.753

It's connected to the desktop tower's backside cable port, so it should not have anything between the motherboard and the device on the other end. – user1306322 – 2016-10-01T15:48:50.853

5Who on earth uses both hands to plug in a USB device? – PNDA – 2016-10-03T16:45:07.983

3@Cunningham'sLawyer: one hand scenario: usb plug (or key) pushes the laptop all around the table when trying one side, turning it around, trying once again, turning it around to finally plug it in. Two hands scenario: same amount of flipping but the second hand holds the laptop still. – WoJ – 2016-10-03T21:10:50.337

Wait, so you have USB 1 ports on those laptops? 0_0 – rahuldottech – 2016-10-07T17:25:32.550

Answers

76

The message refers to negotiating old full speed (FS) data rate of 12 Mbit/s, instead of the high speed (HS) data rate which is 480 Mbit/s. It must be really difficult to get this effect from a USB2 port. USB2.0 HS protocol gets established after a fairly complicated negotiation between a device and host, because initially every HS devices acts as a FS device.

The normal process is as follows:

  1. HS-capable device pulls up the D+ line after it gets VBUS signal with 1-1.5kΩ resistor to 3.3V. Just as a FS device would do.

  2. Host port detects the D+=high, and after a minimum 100ms de-bouncing delay, the host asserts USB_RESET state on the bus, driving both D+ and D- lines to ground with 45Ω drivers for 10 or 50ms.

  3. If the device is FS, it does nothing and waits until the end of USB_RESET.

  4. If the device is HS, it would drive D- high using HS driver (18mA source) for about 1ms. This will create a pulse with amplitude about 800mV (18ma into 45Ω load) called "Chirp-K";

  5. Upon detection of the END of Chirp-K, if the host is capable of HS mode, it drives this signal back (same 18mA into own 45Ω load), now for about 50µs. If it is a FS host, it ignores the Chirp-K, and proceeds as FS.

  6. Then, if the host is capable of HS mode, it switches its drive into D+ wire, forming "Chirp-J", again for 50µs;

  7. The host repeats this alternating 50µs pattern for the entire duration of the USB_RESET state (10ms on hub ports, 50ms on root hub ports);

  8. After three alternating chirp-K/J, the device recognizes that the host is HS, and switches into HS mode itself. This implies turning on HS termination on the device end, which makes the total wire resistance to 22Ω, and the chirp signal amplitude drops to 400mV, to a standard HS signaling level.

  9. Host proceeds with HS start-of-frame (SOF) packets, and starts enumeration process in HS mode.

Now it is anyone's guess which part of wiggling did break this protocol, and made the host to mark the port as FS.

Ale..chenski

Posted 2016-10-01T15:19:16.307

Reputation: 9 749

One other answerer said they could reproduce this effect. You could try it as well. The wiggling in my case happens on the mini/micro-usb connector side. – user1306322 – 2016-10-01T17:55:33.933

10Acronyms: FS is "full-speed" (USB 1.0, 12 Mbit/s),HS is "high-speed" (USB 2.0, 480 Mbit/s) and SS would be "SuperSpeed" (USB 3.0, 5 Gbit/s). – isanae – 2016-10-01T18:10:55.737

4Dealing with USB devices for the past 16 years, I have to admit that I see the drop from HS to FS first time. The normal driver-level protocol uses at least two more attempts to assert USB_RESET in process of enumeration. It worst case of wiggling at first insertion, there will be one or two additional USB_RESETs following the described protocol, so the fall back never occurs at user level. However, some modern hosts are using "voltage-driven" signaling instead of classic current-driven, so all classic combination of various threshold detection levels gets screwed and things may happen. – Ale..chenski – 2016-10-01T18:11:14.403

21@isanae I wonder when device specification creators will have the foresight to call something "slow speed". – wizzwizz4 – 2016-10-01T20:20:07.817

7@wizzwizz4 when they intentionally and deliberately want their product to fail due to poor consumer reception. – Dan is Fiddling by Firelight – 2016-10-02T00:56:30.733

@DanNeely But they're specification designers; like the people who made HTML5. They didn't have to sell HTML5 because it was agreed on by everyone. – wizzwizz4 – 2016-10-02T08:17:41.370

10@isanae - USB 1.0 also supported "low-speed" as 1.5 Mbits/s. – Michael Karas – 2016-10-02T12:19:10.363

@wizzwizz4 "This product supports USB 6.0 Slow Speed" "Oh, I won't bother buying that because it's slow." – user253751 – 2016-10-02T20:24:23.043

1In fact, it is perfectly legal to advertise a 1.5Mbit mouse as USB 3.1 compliant, because USB3.1 includes USB2, and USB2 includes LS 1.5Mb/s mode. This happens all the time, like "MCU is USB2.0 compliant using FS mode". There will be more confusion with proliferation of Type-C connector. – Ale..chenski – 2016-10-02T20:43:27.953

@user20574 "12.4Tb/s data transfers to/from USB 6.0-compliant devices!" Remember when 1.5TB was a lot? – wizzwizz4 – 2016-10-03T06:34:51.577

@wizzwizz4 1.5TB still is a lot. Just not as much of a lot as it used to be. It's still going to take a matter of hours to read/write 1.5TB off any hard drive (which you probably have because who wants to pay for a 1.5TB SSD?) and it uses up the entire drive or half of it. At least it's down from taking decades and using an entire city block. – user253751 – 2016-10-03T09:26:29.150

@wizzwizz4 Then the standards committee should just call it "12.4Tb/s mode". – user253751 – 2016-10-03T09:27:07.103

1@wizzwizz4 HTML5 is more equivalent to what might happen with USB naming conventions in 10 more years: "Okay, we've messed up big time... what to do now?" – jpaugh – 2016-10-03T18:45:41.747

@jpaugh Did you just call HTML5 a "Standard"? – Aron – 2016-10-04T03:46:29.660

1@AliChen Happens to me all the time, especially on an old and slow laptop running Vista. – Agent_L – 2016-10-04T13:30:43.387

32

When you plug in a device in a USB2 port, the computer first tries to negotiate a connection using the USB2 data protocol.
When that fails, it tries again using the USB1 data protocol.

My best guess is that the physical connection (due to wiggling the contacts) is not stable yet during the USB2 negotiation. So it falls back to USB1, even though the device is a USB2 device.

Funny enough Windows does realize that the device should be capable of USB2 speed (information it gets from the driver) and so Windows concludes that the USB port you plugged it in to was a slow USB1 port. Windows doesn't seem to check whether the port itself is USB2 capable.
And that is why you get the somewhat misleading error-message.

P.S. Just tried it myself with a Windows 10 machine: Same effect there.

Tonny

Posted 2016-10-01T15:19:16.307

Reputation: 19 919

Same thing occasionally happens with a USB3 device in a USB3 port ... – davidbak – 2016-10-01T17:34:28.160

1No. The speed of USB port gets determined by hardware BEFORE engaging into any data protocol. – Ale..chenski – 2016-10-01T18:19:25.640

3@AliChen How does it get determined? – gronostaj – 2016-10-01T18:35:36.257

See my full answer. Software only initiates the port reset command upon seeing "port connect" bit (interrupt from it); the rest is done in hardware. – Ale..chenski – 2016-10-01T18:41:49.790

From Wikipedia: "USB 2.0 devices use a special protocol during reset, called chirping, to negotiate the high bandwidth mode with the host/hub. A device that is HS [USB 2.0] capable first connects as an FS [USB 1.0] device (D+ pulled high), but upon receiving a USB RESET (both D+ and D− driven LOW by host for 10 to 20 ms) it pulls the D− line high, known as chirp K." – Nathan Osman – 2016-10-01T18:47:02.183

Thanks Nathan, it is D- that forms Chirp-K. I will correct my answer. – Ale..chenski – 2016-10-01T19:10:37.550

@davidbak USB3.0 has extra contacts in the plug, so you can theoretically insert far enough to make legacy connection but without the 3.0 part. Effect can look same, but cause can be entirely different. That is, you can connect two 3.0 devices using 2.0 cable. – Agent_L – 2016-10-04T13:27:34.117

It probably thinks there's a dumb USB1 hub in between. – Joshua – 2016-10-04T15:13:59.343

0

It could be that you inserted it slow enough that Windows already finished the hand shake process with the controller and that at that time contacts needed for USB 2.0 communication weren't touching.That could possibly lead to Windows mistaking a USB 2.0 device as a 1.1 device as there would be no response on the rails marked as only present on USB 2.0 and up.

Stefan

Posted 2016-10-01T15:19:16.307

Reputation: 47

Is this a common situation for <2.0 version usb devices that it still recognizes the connection and doesn't choose to fail? – user1306322 – 2016-10-01T15:33:38.680

8That can happen with USB3 devices in an USB3 port where the USB1/2 pins connect first. But I do nto see how that can happen with USB1/USB2. Both only use 4 pins, one pair for power, one pair for data. – Hennes – 2016-10-01T15:34:40.010

@hennes I agree. Their is no physical distinction between USB 1 and 2. – Tonny – 2016-10-01T15:39:57.577

1@Tonny I am pretty sure I saw some differences on some obscure branded USB 1.1 and 2.0 devices.But I admit,I am probably wrong. – Stefan – 2016-10-01T15:44:38.470

1@Stefan In the early days of USB there were a lot of cheap knock-off connectors around that had bad dimensions for the contacts. I've seen some where each of the 4 pins in the plug had a different length and thickness. I still keep a couple around in the office to show people when we have a discussion about the pro's and con's of ordering cheap knock-off cables. – Tonny – 2016-10-01T15:56:35.873

@stefan Ping in case you missed it. Ali chen has written a nince answer (one which I could understand, which did not happen when I tried to read the raw USB protocol descriptions.). – Hennes – 2016-10-03T04:54:24.317