USB调试笔记
+ -

未知USB设备-端口重置失败、设备描述符请求失败

2024-07-03 141 0

如下图,2个USB硬件设备插入PC机后,出现了如下的错误,导致USB硬件无法正常工作。打开USB设备管理器之后,设备节点上显示的错误信息如下:

未知USB设备-端口重置失败、设备描述符请求失败

如果查看设备状态,一般应都会归为设备启动失败,错误码一般为10。
至于出现以上的错误时,怎么处理了,这就得搞明白为什么会出现以上错误。

USB设备其实对于普通用户来说,分为刚插入电脑的枚举过程和正常的运行两种工作状态。

对于USB设备来说,一般很少出现USB设备正在用的过程中,不能用了。就算出现这种问题,大多数是我们不小心触碰了一下USB设备,导致USB接口接触不良,但也会立马重新枚举,再次正常工作的。

另一种就是USB设备插入电脑中,会进行正常的枚举。这个枚举的过程其实就是USB设备和主机电脑交谈的过程。这个交谈的过程其实就是USB设备要告诉主机自己是个什么样的设备,而USB主机则根据USB设备上报的信息进行资源分配,并加载相应的驱动,让其充当某种标准的设备。如U盘磁盘存储器、打印机或者USB网卡之类。

关于USB的设备类型可详见:USB设备类型定义 https://www.usbzh.com/article/detail-221.html

端口重置失败

按本人自己的理解,其实在USB的枚举过程中,一般不会出现端口重置的。但是凡事有例外。这个例外就是为什么要端口重置。
端口重置一般指的是USB集线器下游端口连接USB设备的那个端口,所以重置USB端口就是USB主机控制器或者USB集线器发现其下游端口出现问题了,所以才会重置。
USB端口重置命令SetPortFeature请示实现,在Windows系统中对于的URB功能号为USB_REQUEST_SET_FEATURE,其IRP为IOCTL为IOCTL_INTERNAL_USB_RESET_PORT。

所以重置端口失败,个人认为有可能发现设备端在硬件或都数据链路层接该USB集线器下游端口搞的不正常了,触发了硬件上报主机自动恢复功能,但最终结果没有恢复正常,导致问题表现。

设备描述符请求失败

关于这个问题,其实之前分析的比较多:

这类问题的根据其实只要搞清楚了USB的枚举过程即可:
USB设备枚举过程
USB设备通过触发中断给主机后,USB主机会对设备进行复位(详见USB2.0设备从全速模式到高速模式的识别过程及速率协商 https://www.usbzh.com/article/detail-672.html ),复位之后USB主机就会获取USB设备的信息,获取这个信息的过程就是获取USB设备描述符的事务过程。
这个事务过程分为:

  1. 主机->设备 SETUP令牌,DATA0令牌下发标准请求
  2. 主机->设备 发送ACK,表求设备收到标准请求,然后设备应按令牌进行回复数据
  3. 设备->主机 IN令牌,然后用DATA1令牌返回数据。这里是设备描述符
  4. 主机->设备 主机返回ACK表示收到数据。
    这个具体的过程可详见本站示例USB2.0设备枚举-获取设备描述符事务https://www.usbzh.com/article/detail-447.html

一般最后,其实也会有一个长度为0的DATA/IN事务,但是我们一般不会再关注它了,如果有兴趣了解的可见:https://www.usbzh.com/article/detail-624.html

当然,以上都介绍的是正常过程,但有的时候因为设备端的无响应,会出现这个流程走不下去,然后主机会重试几次后发现设备根据无法正常的回答数据或者无回答,主机也就干脆上报给系统的设备管理器提示设备描述符请求失败。我们的一个示例抓包可见:USB设备接入主机后不停重复枚举最后失败 https://www.usbzh.com/article/detail-757.html

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

USB音箱 UAC设备描述符分析
这里看到,USB规范采用的是USB1.1版本,不过字符串中又显示的是”USB2.0 Device”,所以这里就有点迷~关于设备描述符各字段的详细解释,详见USB规范中设备描述符一节。从bDeviceClass,bDeviceSubClass和bDeviceSubClass都被置为0来看,这是一个典......
USB 枚举/断开过程
USB设备枚举一般会经过插入、供电、初始化、分配地址,配置,获取设备描述符、获取配置描述符、获取字符串描述符和配置设备这么几个过程。各过程的状态如下表:USB设备的枚举过程USB主机检测到USB设备插入后,就要对设备进行枚举了。枚举的作用就是从设备是那个读取一些信息,知道设备是什么样的设备,然后......
USB设备的枚举过程分析
USB协议定义了设备的6种状态,仅在枚举过程种,设备就经历了4个状态的迁移:上电状态(Powered),默认状态(Default),地址状态(Address)和配置状态(Configured)(其他两种是连接状态和挂起状态(Suspend))详情可见:http://www.usbzh.com/art......
Windows10设备管理器USB设备描述符请求失败(未知的usb设备)
在电脑中插入USB设备后,有时会报USB设备描述符请求失败,导致USB设备在设备管理器中枚举失败。一种专业的解决办法见:http://www.usbzh.com/article/detail-1059.htmlUSB设备描述符请求失败现象USB设备描述符请求失败在设备管理器中发现通用串行总线......
USB设备描述符布局
通用串行总线USB以其强大的功能,方便的连接广受用户使用,这些都得益于USB灵活多样的描述符。USB设备通过配置描述符,接口描述符,端点描述符等描述符实现设备功能。USB设备灵活多变的角色转换是通过USB的配置描述符来实现的,但一个USB设备有多个配置描述符时,就表明了这个USB设备支持多角的转换......
USB超高速设备描述符的bMaxPacketSize0为0x09
USB3的设备中,其USB设备描述符和2.0的结构一致,不过在含义上有的字段稍有区别。比如说在USB3.2的版本中,其设备描述符中的bMaxPacketSize0和USB2.0有就所不同。在USB2.0中bMaxPacketSize0代表的是USB设备默认端点0的最大包的大小,一般为0x40即64字......
华为UAC耳机 设备描述符
从UAC的设备描述符可知,音频是属于接口级别的,在UAC1.0版本,是需要将相关的配置参数bDeviceClass,bDeviceSubClass,bDeviceProtocoll置为0。对于别的参数,可参考USB设备描述符进行相关配置。本设备只有一个配置描述符,且端点0的bMaxPacketSiz......
HID 设备描述符关系
HID设备连接到USB主机后,主机通过发送Get_Descriptor请求读取HID设备的描述符,了解描述符对了解USB设备是至关重要的。HID设备的描述符HID设备除了支持USB设备的5种标准描述符之外,还支持HID设备特有的3种描述符。这些描述符是:USB标准描述符:设备描述符、配置描述符、......
USB设备描述符、配置描述符、接口描述符和端点描述符的拓扑关系
在USB设备的逻辑组织中,包含设备、配置、接口和端点4个层次。每个USB设备都提供了不同级别的配置信息,可以包含一个或多个配置,不同的配置使设备表现出不同的功能组合(在探测/连接期间需从其中选定一个),配置由多个接口组成。一次只能有一个配置是活动的。大多数的设备只有一个配置和一个接口,当一个设备......
USB 设备描述符
USB设备描述符是USB设备在进行插拔和初始化过程中,最先被主机读取的一部分信息,它包含了设备的一些基本属性信息,如USB规范版本、设备类、设备子类、设备协议、最大数据包长度等。USB设备描述符通常是在设备插入时被主机读取,在获取到设备描述符后,主机可以自动加载相应的驱动程序,完成设备的初始化和配......
USB-UAC麦克风 设备描述符
UAC麦克风采用的设备描述符结构和USB设备描述符的结构一致,只是有些字段的值有所要求。偏移地址字段长度值描述0bLength10x12设备描述符的总和长度1bDescriptorType10x01设备描述符类型2bcdUSB 20x01001.00使用的USB版本号4bDeviceClass10x......
USB 设备限定描述符
设备限定描述符描述符用在当一个设备能够工作在不同的速度下时,会获取设备限定描述符。同时支持全速与高速的设备,必须有一个Device Qualifier Descriptor。当设备转换速度的时候,设备描述符中的某些字段可能改变。Device Qualifier Descriptor描述符储存当前不......
USB2.0设备枚举-获取设备描述符事务
USB设备与主机进行数据传输或进行设备配置时,有一些常见的术语如事务,令牌,包等。USB设备在枚举过程中有2次获取设备描述符的过程,这里分别标识为首次获取设备描述符和分配地址后的获取描述符。两次获取描述符的过程基本类似,惟一的区别是首次首次获取描述符由于设备尚未分配地址,故使用地址0与主机进行通......
UAC设备描述符
由于音频设备在USB规范中只能定义在接口级别。所在USB规范中没有定义特定的音频设备描述符,所以想要找到音频设备的信息,是在这些设备(如复合设备)的接口描述符信息中找到。因此设备描述符中的bDeviceClass, bDeviceSubClass 和bDeviceProtocol 中的应为0xEF,......
HID报表描述符与设备描述符、配置描述符、字符串描述符的通讯格式对比
报表描述符是USB HID规范中一个很重要的概念。USB HID设备报表描述符内容表述了该HID设备的功能及数据传输的格式。USB HID报表描述符在概念上和设备描述符,配置描述符,接口描述符,端点描述符和其它USB设备描述符类似,但是还是有一些细微的区别。我里我们做一个简要的区别:设备描述符、......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!