USB调试笔记
+ -

BUSHOUND抓包stall pid的USTS c0000004错误

2021-08-31 1586 100

对USB设备进行数据分析,使用最多的也就是BUSHOUND了,不过经常遇到一个问题就是 USTS c0000004 stall pid 错误。

USTS   c0000004                                            stall pid

在本站中搜索一下,发现本人因为对USB知识的无知而迷惑过。
不信你可点击查看:http://www.usbzh.com/s.php?q=C0000004

如在HID设备的SET_IDLE时遇到过:

Device  Phase  Data                            Description     Cmd.Phase.Ofs(rep)
------  -----  ------------------------------------------------------------------
  20.0  CTL    21 0a 00 00  00 00 00 00              SET IDLE            7.1.0        
  20.0  USTS   c0000004                             stall pid            7.2.0

UVC摄像头驱动开发时的PTZ功能遇到过:

  13.0            CTL    a1 86 00 0b  00 01 01 00    CLASS      
  13.0            USTS   c0000004                    stall pid  
  13.0            CTL    a1 86 00 0c  00 01 01 00    CLASS      
  13.0            USTS   c0000004                    stall pid  
  13.0            CTL    a1 86 00 0d  00 01 01 00    CLASS      
  13.0            USTS   c0000004                    stall pid  
  13.0            CTL    a1 86 00 0e  00 01 01 00    CLASS      
  13.0            USTS   c0000004                    stall pid  
  13.0            CTL    21 0a 00 00  00 00 00 00    SET IDLE   
  13.0            USTS   c0000004                    stall pid

HID和UVC复合设备时指示灯调试时的遇到的:

CTL 21 0a 00 00 00 00 00 00             SET_IDLE
USTS C0000004                           stall pid

别人在调试U盘GET_MAX_LUN时遇到过:
GET_MAX_LUN

关于stall pid的USTS c0000004错误的解释

关于c0000004错误,这个值到底是什么意思,这是USB状态信息USTS,详见http://www.usbzh.com/article/detail-645.html

另一个就是PID错误了,关于PID,这是USB中的概念,表示包ID错误,即PID=PACKAGE IDENTIY

经过本人多年的来调试经验,返回stall pid的USTS c0000004错误表示控制请求未经过正确的处理,这里示正确处理的原因可能有:

  • 控制请求的一些字段设置错误。如本来是发给接口ID=0的,却发向接口ID=1,即本身的USB请求参数错误
  • 固件接收到控制请求,但不处理,导致PC变为stall状态。

    U盘枚举失败-该设备无法启动(GET_MAX_LUN请求) http://www.usbzh.com/article/detail-536.html

总之,出现上面的错误,需要查的是:

  • 配置描述符中相关的字段是否正确。因为主机会解析该描述符中一些描述符使用这些描述符来进行二次控制请求。
  • 检查固件中是否有对应的数据处理。

关于控制请求可以参见:

0 篇笔记 写笔记

打开UVC摄像头(特定类请求)数据分析
通过上节可以知道,设备支持4种的视频格式,且每种格式如下:MPJPG数据格式bFormatIndexbFrameIndex分辩率及及帧率11640x480x(30,15,10)121280x720x(30,15,10)131920x1080x(30,15,10)该UVC摄像头中MJPG格式的最分辨率......
UVC特定类请求get cur返回长度是26或者是34的是什么?
从返回的长度来看,你应该是在应用打开摄像头,进行视频格式及图形分辨率协商返回的数据长度.UVC视频流接口这两个特别重要的选择子,分别用于协商过程和提交数据格式,让固件开始发送数据。ControlSelector ValueVS_PROBE_CONTROL0x01VS_COMMIT_CONTROL0x......
UVC摄像头批量传输的StreamOn和StreamOff
在UVC规范中,UVC摄像头视频数据的传输方式支持两种,分别为批量传输和同步传输。UVC摄像头数据传输的格式按负载数据头的方式按帧进行打包传输。根据USB规范可知,同步传输方式是只要带中带有同步端点的接口,系统会定时从设备中读取数据,无论设备中是否有数据。而如要要停止数据的传输,只需要选中不带有同步......
USB标准请求、类特定请求总结
做USB开发,最常见的就是USB的控制请求的那8个字节的分析,如果抓包工具有协议分析那还好说,但是如果不带速协议分析,那其实还是挺郁闷的。所以说,如何快速的通过USB请求的那几个字段定位出是何请求,是可以大大的提高我们的协议分析效率的。USB的请求这里包括USB的标准请求特定类请求,其包括以下几......
BusHound的使用方法详解
在开始菜单日运行Bus Hound软件,将USB设备插入电脑U口。如图所示,进入”Devices”目录,在”Devices”内选择要监听的设备。例如:我的设备置是一个U盘,则装置为USB大容量储存设备,点选”USB大容量储存设备”图示,可以在下面的”Properties”图框内看到设备的设备树及设备......
HID键盘设备数据抓包分析实践
本文使用 Bus Hound 工具对 USB HID 设备数据包进行分析,并结合官方手册及网上文章进行整理。在进行数据分析前,我们先回顾一下USB相关的基础知识。USB描述符USB 主机是通过各种描述符来识别设备的,有设备描述符,接口描述符,端点描述符,字符描述符,报告描述符(HID)等。和普通的U......
UAC 特定类请求
特定类请求一般用于设置或获取音频控制。这些控制又分为两大部分:音频控制请求:对音频控制单元或终端进行控制。音频流请求: 如对音频流控制的请求,如音频采相率等。音频设备类也支持其他特定于类的请求:内存请求(Memory Request),每个可寻址的实体或终端,可导出一个内存映射接口。提供对该实体内存......
USB3.2超高速的标准请求
USB3.2超高速请求相对于USB2.0的标准请求,多了一些新的标准请求。当然USB2.0的标准请求也适用于USB3.2的标准请求。USB3.2超高速规范增加的新的标准请求:bRequestValueSET_ENCRYPTION13GET_ENCRYPTION14SET_HANDSHAKE15GET......
关于UVC摄像头指示灯的调试过程总结
最近遇到了一个很是奇怪的UVC摄像头指示灯问题,现象如下:上层应用是一个会议系统软件,当需要进行会议时,点击会议按钮添加会议。这时应用软件打开摄像头,并开始与服务器进行网络连接。当然由于摄像头的打开,摄像头指示灯点亮。上层应用软件与服务器连接后,进行会议界面。这时突然摄像头指示灯熄灭,但会议正常,摄......
UVC 再议特定类请求
通过特定请求的支持 GET_INFO可以获取设备支持的特定类请求。当然在UVC规范中,有些特定类请求是可选择的,有些是必须的,这种情况因特定类请求的使用环境不同而定。我们知道,特定类请求一般包括:名称值 说明RC_UNDEFINED0x00未定义SET_CUR0x01设置属性GET_CUR0x81获......
BusHound简介及安装
BusHound简介BusHound软件是由美国perisoft公司研制的一种专用于PC机各种总线数据包监视和控制的开发工具软件,其名“hound”的中文意思为“猎犬”,即指其能敏锐地感知到总线的丝毫变化。Bus Hound是一个超级软件总线协议分析器,用于捕捉来自设备的协议包和输入输出操作,其优......
BusHound设备窗口
使用BusHound进行数据抓包,抓包的目标为设备。BusHound提供了一个类似设备管理器的窗口,以树形的方式显示。设备树主要包括SCSI设备树和Usb设备树。设备IDBusHound为每个显示在设备窗口中的设备树分配一个ID,这个ID在设备窗口树列表中,设备名前中括号中的数字为设备ID.点击设备......
USB 标准请求
USB定义了8个字节的标准请求,通过这些请求,可以对设备的状态进行更改或对设备进行枚举。USB的标准请求的数据传输方式都是控制传输方式,所以使用的端点是设备的默认端点0。USB这8个字节的的控制请求不包括传输过程中的数据,但包括了控制请求的数据长度。当数据长度为不为0时,设备或主机向对方传输相应长......
USB2.0 SETUP令牌包
SETUP令牌包用于主机向USB设备发送配置信息SETUP令牌包结构SETUP令牌包格式由8位的包标识字段PID,7位的地址字段ADDR、4位的端点字段和5位的循环字段CRC共24位3字节组成。包标识字段PID:定义了数据传输方向为USB主机到USB设备。ADDR字段:指明了USB设备地址。E......
UVC 特定类请求概述
本节我们来讲述UVC的特定类请求。UVC特定类请求的功能UVC特定类请求的主要功能用于控制UVC摄像头,实现对UVC摄像头的打开,关闭及摄像头参数的控制。通过对UVC规范的学习,使用我们可详细的了解UVC是怎样通过这些特定类请求实现对UVC摄像头的控制。UVC特定类请求的分类大多数特定于类的请求用于......
作者信息
USB中文网
B站搜索 站长漫谈 看视频。
pnpon内核开发网,USB中文网,
busrom硬核技术网站长
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

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

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