如果我笨拙地连接它,为什么Windows会显示“此设备可以执行更快”的通知?


74

我注意到在Windows XP和7(分别是2台不同的计算机)上我可以设法得到“如果你将它连接到高速USB 2.0端口,这个设备可以更快地执行”通知如果我连接电缆就弹出非常缓慢(或者用一只手挣扎一下)。如果我用双手足够快或正常连接,则没有通知。在任何一种情况下,所有这些设备似乎都能正常工作。

我认为发生的事情是,在慢速/笨拙的连接期间,线路之间的接触被中断了足够的时间,USB控制器认为它不是2.0而是更慢。但为什么这么认为呢?或者为什么它不只是说“你连接电缆都不好,请拔下电源并再试一次”?


设备是否连接到USB加密狗而不是直接连接到您的盒子?如果是这样,尝试直接连接设备而不是第三方可以这么说。

它连接到桌面塔的背面电缆端口,因此它不应该在主板和另一端的设备之间有任何东西。
user1306322 2016年

5
谁在地球上用双手插入USB设备?
Gene Dela Rosa 2016年

3
@Cunningham'sLawyer:单手情景:usb插头(或按键)在尝试一侧时将笔记本电脑推到桌面周围,转过身,再次尝试,转动它最终将其插入。双手场景:相同数量翻转,但秒针仍然保持笔记本电脑。
WoJ 2016年

等等,所以你在这些笔记本电脑上有USB 1端口?0_0
rahuldottech 2016年

Answers:


76

该消息指的是协商12Mbit / s的旧全速(FS)数据速率,而不是480Mbit / s的高速(HS)数据速率。从USB2端口获取此效果一定非常困难。USB2.0 HS协议在设备和主机之间的相当复杂的协商之后建立,因为最初每个HS设备充当FS设备。

正常流程如下:

  1. 具有HS功能的器件在通过1-1.5kΩ电阻到3.3V获得VBUS信号后上拉D +线。就像FS设备一样。

  2. 主机端口检测到D + =高电平,在最小100ms去抖动延迟后,主机在总线上置位USB_RESET状态,用45Ω驱动器将D +和D-线驱动到地,持续10或50ms。

  3. 如果设备是FS,它什么都不做,等待直到USB_RESET结束。

  4. 如果器件是HS,它将使用HS驱动器(18mA源)驱动D-高约1ms。这将产生一个幅度约为800mV(18ma至45Ω负载)的脉冲,称为“Chirp-K”;

  5. 在检测到Chirp-K的END时,如果主机能够进入HS模式,它会将此信号驱回(相同的18mA进入自己的45Ω负载),现在大约50μs。如果它是FS主机,它将忽略Chirp-K,并继续作为FS。

  6. 然后,如果主机能够进行HS模式,则将其驱动器切换为D +线,形成“Chirp-J”,再次持续50μs;

  7. 主机在USB_RESET状态的整个持续时间内重复这种交替的50μs模式(集线器端口上10ms,根集线器端口上50ms);

  8. 在三个交替的chirp-K / J之后,设备识别出主机是HS,并且自身切换到HS模式。这意味着在器件端打开HS端接,这使得总线电阻达到22Ω,并且啁啾信号幅度降至400mV,达到标准HS信号电平。

  9. 主机继续进行HS帧起始(SOF)分组,并以HS模式开始枚举过程。

现在,任何人都猜测摆动的哪一部分确实打破了这个协议,并让主机将端口标记为FS。


10
缩略语:FS是“全速”(USB 1.0,12 Mbit / s),HS是“高速”(USB 2.0,480 Mbit / s),SS将是“SuperSpeed”(USB 3.0,5 Gbit / s)。
isanae 2016年

4
在过去的16年中处理USB设备,我不得不承认我第一次看到从HS到FS的下降。普通的驱动程序级协议至少再使用两次尝试在枚举过程中断言USB_RESET。在最初插入时最糟糕的情况是,在所描述的协议之后将会有一个或两个额外的USB_RESET,因此在用户级别不会发生回退。然而,一些现代主机使用“电压驱动”信号而不是经典电流驱动,因此各种阈值检测水平的所有经典组合都会被搞砸,事情可能会发生。
Ale..chenski 2016年

21
@isanae我想知道什么时候设备规范​​创建者会有先见之明来称之为“慢速”。
wizzwizz4 2016年

7
@ wizzwizz4,当他们有意和故意地希望他们的产品因消费者接待不良而失败时。
Dan Neely 2016年

10
@isanae - USB 1.0也支持“低速”1.5 Mbits / s。
Michael Karas 2016年

32

当您插入USB2端口中的设备时,计算机首先尝试使用USB2数据协议协商连接。
当失败时,它会再次尝试使用USB1数据协议。

我最好的猜测是,在USB2协商期间,物理连接(由于摆动触点)不稳定。因此即使该设备是USB2设备,它也会回归到USB1。

足够有趣的Windows确实意识到该设备应该具有USB2速度(从驱动程序获取的信息),因此Windows得出结论,您插入的USB端口是一个缓慢的USB1端口。Windows似乎没有检查端口本身是否支持USB2。
这就是为什么你得到一些有误导性的错误信息。

PS我自己尝试使用Windows 10机器:同样的效果。


USB3端口的USB3设备偶尔会发生同样的事情...
davidbak

1
不可以。在进入任何数据协议之前,USB端口的速度由硬件决定。
Ale..chenski 2016年

3
@AliChen如何确定?
gronostaj 2016年

看到我的完整答案。软件仅在看到“端口连接”位(来自它的中断)时启动端口复位命令; 其余的都是用硬件完成的。
Ale..chenski 2016年

来自维基百科:“USB 2.0设备在复位期间使用特殊协议,称为啁啾,与主机/集线器协商高带宽模式。首先连接HS [USB 2.0]的设备作为FS [USB 1.0]设备连接( D +拉高,但在接收到USB RESET(主机D +和D-驱动低电压10到20 ms)时,它将D-线拉高,称为啁啾K.
弥敦道奥斯曼2016年

0

可能是你插入它的速度足够慢以至于Windows已经完成了控制器的握手过程,那时USB 2.0通信所需的联系人没有接触到。这可能导致Windows将USB 2.0设备误认为1.1设备,因为标记为仅在USB 2.0及更高版本上存在的轨道上没有响应。


这是<2.0版本USB设备的常见情​​况,它仍然可以识别连接并且不会选择失败吗?
user1306322 2016年

8
在USB3端口中的USB3设备可能会发生这种情况,其中USB1 / 2引脚首先连接。但我不知道USB1 / USB2会发生什么。两者都只使用4个引脚,一对用于电源,一对用于数据。
Hennes 2016年

@hennes我同意。它们在USB 1和2之间没有物理上的区别。
Tonny

1
@Tonny我很确定我在一些模糊的品牌USB 1.1和2.0设备上看到了一些差异。但我承认,我可能错了。
Stefan

1
@Stefan在早期的USB中,周围有很多廉价的仿冒连接器,它们的触点尺寸很小。我已经看到插头中的4个插针中的每一个都有不同的长度和厚度。当我们讨论订购便宜的拆卸电缆的专业人员和骗子时,我仍然会在办公室里闲逛几个人向人们展示。
Tonny 2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.