USB大容量存储BOT
+ -

REQUEST_SENSE

2026-08-14 本文链接为:http://www.usbzh.com/article/detail-1790.html ,欢迎转载,转载请附上本文链接。

REQUEST_SENSE(0x03)用于主机查询错误处理的。

当主机在处理命令时,SCSI 命令执行失败或 CBW 非法时,端点被 STALL,这样主机检测到STALL后,会发送ClearFeature命令清除端点的STALL,然后会下发REQUEST_SENSE命令,返回上次错误的信息给主机,这样主机就获取到了错误原因。

返回的数据长度为0x12,格式如下

Byte 0:  0x70  (Response Code)
Byte 1:  0x00
Byte 2:  0x04  (Sense Key = HARDWARE_ERROR)
Byte 3-6: 0x00000000
Byte 7:  0x0A  (Additional Sense Length = 1-)后续数据长度
Byte 8-11: 0x00000000
Byte 12: 0x11  (ASC = UNRECOVERED_READ_ERROR)
Byte 13: 0x00  (ASCQ = 0)
Byte 14: 0x00
Byte 15-17: 0x000000

BYTE2的Sense key的值有

#define NO_SENSE                                    0
#define RECOVERED_ERROR                             1
#define NOT_READY                                   2
#define MEDIUM_ERROR                                3
#define HARDWARE_ERROR                              4
#define ILLEGAL_REQUEST                             5
#define UNIT_ATTENTION                              6
#define DATA_PROTECT                                7
#define BLANK_CHECK                                 8
#define VENDOR_SPECIFIC                             9
#define COPY_ABORTED                               10
#define ABORTED_COMMAND                            11
#define VOLUME_OVERFLOW                            13
#define MISCOMPARE                                 14

BYTE12的值有:

#define INVALID_CDB                                 0x20
#define INVALID_FIELED_IN_COMMAND                   0x24
#define PARAMETER_LIST_LENGTH_ERROR                 0x1A
#define INVALID_FIELD_IN_PARAMETER_LIST             0x26
#define ADDRESS_OUT_OF_RANGE                        0x21
#define MEDIUM_NOT_PRESENT                          0x3A
#define MEDIUM_HAVE_CHANGED                         0x28
#define WRITE_PROTECTED                             0x27 
#define UNRECOVERED_READ_ERROR                                        0x11
#define WRITE_FAULT                                                                   0x03

如一个示例如下:

31  OUT    55 53 42 43  90 d5 ce 93  12 00 00 00  80 00 0c 03  00 00 00 12  00 00 00 00  00 00 00 00  00 00 00 
18  IN     70 00 05 00  00 00 00 0c  00 00 00 00  21 00 00 00  00 00
13  IN     55 53 42 53  90 d5 ce 93  00 00 00 00  00

解析如下:

--------CBW---------
0x55, 0x53, 0x42, 0x43, 0x90, 0xD5, 0xCE, 0x93, 0x12, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
UNIT32 dCBWSignature:0x55, 0x53, 0x42, 0x43, 
UNIT32 dCBWTag:0x90, 0xD5, 0xCE, 0x93, 
UNIT32 dCBWDataTransferLength=18,(0x12, 0x00, 0x00, 0x00, )
UNIT8 bmCBWFlags=0x80, Response data to HOST(IN)
UNIT8 bCBWLUN=0x00, 
UNIT8 bCBWCBLength=0x0C, 
BYTE CBWCB[16]=0x03, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
UNIT8 REQUEST_SENSE 0x03, 
UNIT8 length 0x12,

--------REQUEST_SENSE Response---------
 70 00 05 00  00 00 00 0c  00 00 00 00  21 00 00 00  00 00

-----CSW------------
CSW OFFSET=49,0x55, 0x53, 0x42, 0x53, 0x90, 0xD5, 0xCE, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 
UNIT32 dCSWSignature:0x55, 0x53, 0x42, 0x53, 
UNIT32 dCSWTag:0x90, 0xD5, 0xCE, 0x93, 
UNIT32 dCSWDataResidue:0x00, 0x00, 0x00, 0x00, 
UNIT8 bCSWStatus:0x00,
本文链接为:http://www.usbzh.com/article/detail-1790.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     USB技术交流3:1031974172

0 篇笔记 写笔记

关注公众号
  • HID人机交互
  • Linux&USB
  • Linux-USB百科
  • MIDI V1.0
  • TinyUSB
  • UAC音频
  • CDC
  • TYPE-C
  • USB规范
  • USB3测试
  • USB3知识点
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • USB资源
  • XHCI 1.2b 规范
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

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

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