USB大容量存储BOT
+ -

U盘BOT存储UFI协议INQUIRY命令说明及实例分析2

2022-05-23 1199 0

INQUIRY命令请求用于将UFI设备的参数信息发送到主机。主机上的驱动程序使用它来询问UFI设备的配置。

NQUIRY命令请求通常是在通电或硬件复位之后。

#define INQUIRY 0x12

UFI INQUIRY命令格式

UFI INQUIRY命令格式

  • EVPD(Enable Vital Product Data)置为0。
  • Logical Unit Number:返回查询数据的逻辑单元(0到7)
  • Page Code :指定UFI设备应返回到主机的重要产品数据信息的哪一页。UFI设备仅支持页面代码为零(00h)的标准查询数据
  • Allocation Length:指定要返回的查询数据的最大字节数。值为零不会产生错误。

UFI设备应始终返回Inquiry查询的数据,最多返回请求的字节数。UFI设备不使用Inquiry令报告介质状态,例如介质更改或驱动器未就绪。查询命令不得影响驱动装置状态或介质状态。

0x55, 0x53, 0x42, 0x43, 0xA0, 0xB9, 0x16, 0xB9, 0x24, 0x00, 0x00, 0x00, 0x80, 0x00, 0x06, 0x12, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
UNIT32 dCBWSignature:0x55, 0x53, 0x42, 0x43, 
UNIT32 dCBWTag:0xA0, 0xB9, 0x16, 0xB9, 
UNIT32 dCBWDataTransferLength=36,(0x24, 0x00, 0x00, 0x00, )
UNIT8 bmCBWFlags=0x80, Response data to HOST(IN)
UNIT8 bCBWLUN=0x00, 
UNIT8 bCBWCBLength=0x06, 
BYTE CBWCB[16]=0x12, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    INQUIRY=0x12, 
    EPVD=0x00, 
    LogicalUnitNum=0x00, 
    PageCode=0x00, 
    AllocationLength=0x01,

UFI INQUIRY数据响应格式

UFI设备应在批量输入端点上返回包含36个字节的标准查询数据。

UFI INQUIRY数据响应格式

  • Peripheral Device Type:标识当前连接到请求的逻辑单元的设备。
    • 00h直接访问设备(软盘)
    • 1Fh None(没有FDD连接到请求的逻辑单元)
  • RMB:可移动媒体位:该位应设置为1,以指示可移动设备(removable media)。
  • ISO/ECMA:对于UFI设备,必须为0。
  • ANSI Version:必须包含零以符合此版本的规范
  • Response Data Format:UFI设备必须为0x01
  • The Additional Length:指定参数的长度(以字节为单位)。如果命令包的分配长度太小,无法传输所有参数,则不应调整额外长度以反映截断。UFI设备应将该字段设置为1Fh
  • Vendor Identificatio:包含标识产品供应商的8字节ASCII数据。数据应在此字段内左对齐。
  • Product Identification:包含供应商定义的16字节ASCII数据。数据应为在此字段内左对齐。
  • Product Revision Level:包含供应商定义的4字节ASCII数据。数据应在此字段内左对齐。对于UFI设备,此字段表示固件版本号。
----INQUIRY Response-----
0x00, 0x00, 0x04, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x61, 0x73, 0x73, 0x20, 0x53, 0x74, 0x6F, 0x72, 0x61, 0x67, 0x65, 0x20, 0x41, 0x30, 0x30, 0x31, 
    PerpheralDeviceType=0x00, Direct-access device (floppy)
    RMB=0x00, 
    ANSI Version=0x04, 
    ECMA Version=0x00, 
    ISO Version=0x00, 
    Response Data Format=0x02, 
    Additional Length =0x20, 
    Vendor Information =0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    Product Identification =0x00, 0x00, 0x00, 0x4D, 0x61, 0x73, 0x73, 0x20, 0x53, 0x74, 0x6F, 0x72, 0x61, 0x67, 0x65, 0x20, 
    Product Revision Leveln.nn=0x41, 0x30, 0x30, 0x31,

INQUIRY命令的数据格式解析可参见:http://www.usbzh.com/tool/bot-cbw-ufi-csw.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 篇笔记 写笔记

BOT传输协议和UASP传输协议有什么区别?
BOT传输协议BOT (Bulk-Only Transport),诞生于1999年,专为USB 1.1所设计,至今最快的USB 3.1都可向下兼容这个基本的BOT传输协议。在传输资料作业开始时,外接USB 3.0设备与电脑主板(USB 3.0扩展卡)之间,在同一时间单位内,每次只传输单一指令,所以速......
BOT 简介
BOT全称Universal Serial BusMass Storage ClassBulk-Only Transport(Bulk-Only Transport),是USB大容量数据存储的基础协议。BOT协议用于主机和USB设备之间进行大容量数据传输。对于USB主机来说,USB设备外部硬盘驱动器......
BOT 数据传输过程
按照USB规范,Bulk-Only 传输规范是系统也是通过默认管道(地址0 、端点 0 )进行枚举,枚举后重新分配地址,再次枚举。枚举后,实际工作仅仅使用批量( Bulk )端点传送数据 / 命令 / 状态,批量传输方式不受时间限制并能保证数据的完整性。在取得的端点描述符中包含了 Bulk-In 和......
BOT 设备描述符及布局
Bulk-Only Transport即存储设备和其它的普通设备类似,也有一些通用的描述符,如设备描述符、配置描述符、接口描述符、端点描述符和字符串描述符。BOT大容量存储设备没有其它特殊的描述符。一个标准的USB支持BOT的大容量设备描述符布局如下:设备描述符BOT大容量存储设备类型是接......
BOT 命令块包CBW
CBW即Command Block Wrapper,命令块包)是从 USB 主机发送到设备的命令包,它由 31 个字节构成,其中包含的命令遵从接口描述表中的 bInterfaceSubClass 域所指定的命令集,一般采用 SCSI 传输命令集。 USB 设备从 CBW 中取出并执行相应命令,......
BOT 命令状态包CSW
CSW 应从包的边界开始,在传输了 13 个字节以后结束, CSW 的说明如下表:struct CSW{ DWORD dCSWSignature; // CSW的标识,固定值:53425355h (小端模式) DWORD dCSWTag; //主机发送的一个命令块标......
BOT CBW和CSW数据例解析
读写数据抓包USB传输中:每一个传输包含一笔或多笔事务,每一笔事务又包含一个、两个或三个信息包。事务:Setup(设置)事务、IN(输入)事务、OUT(输出)事务信息包:令牌信息包、数据信息包、联络信息包传输|——>事务——>令牌信息包+数据信息包+联络信息包|——>事务——&......
BOT MASS_STORAGE_RESET
Bulk-Only Mass Storage Reset类特定请求是USB大容量存储设备独有的。 该特定类请求的功能用于复位大容量存储设备和与之关联的接口。通知设备接下来的批量端点输出数据为命令块包(CBW)。由于该请求是控制请求,所以是通过端点0发送的。在设备完成该请求即复位之前,设备应......
BOT GET_MAX_LUN
GET_MAX_LUN特定类请求用于获取最大逻辑单元。GET_MAX_LUN是:控制请求,通过端点0来发送。主机发送组设备,设备返回1字节数据。发送的目标对象是接口。bmRequestTypebRequestwValuewIndexwLengthData1010000......
BOT CBW和CSW的校验
Bulk-Only Protocol传输是通过主机向设备发送CBW请求,设备响应CBW返回CSW响应。Bulk-Only Protocol传输开始是从设备复位(MASS_STORAGE_RESET)之后开始的,设备在接收到CBW请求和主机收到CSW回应后,是需要对CBW和CSW进行拆包解析。CBW......
UASP(USB Attached SCSI Protocol)简介
UASP全称USB Attached SCSI Protocol,中文译名USB附加SCSI协议。 UAS是一种计算机协议,用于将数据从USB存储设备写入和读出,例如硬盘驱动器(HDD)、固态驱动器(SSD) 和拇指驱动器。UAS 依赖于 USB 协议,并使用标准的SCSI命令集。与较旧的USB ......
USB 3.0 支持UASP什么作用
USB 3.0 在数据量较多且零碎传输时,效能的表现会较差,主要原因是在于传输技术所造成的状况。USB 采用半双工传输模式与BOT (Bluk Only Transfer) 传输协议,半双工传输模式就像是再讲对讲机一样,一方说完另一方才能继续对话,也就是说资料的传输方向仅有单向传输功能。BOT ......
U盘BOT存储UFI协议INQUIRY命令说明及实例分析
INQUIRY定义为0x12,用于查询USB存储即U盘的基本信息,这些信息包括厂家信息,产品信息及产品版本号等。INQUIRY流程图INQUIRY命令通过BULK传输的OUT端点下发给设备,设备需要先返回基本的INQUIRY信息,再返回CSW状态。INQUIRY命令格式LUN :被设置为 0......
Windows10 x64基于BOT规范虚拟U盘调试批量端点返回CSW的问题
虚拟了这么多的USB设备,突然想着U盘还没有弄,那就搞一个吧。就当是为了自己学习,没准那天突然有这样的需求。所以说干就干。我们知道,虚拟U盘其实是两套规范的,一种是传统的BOT协议,另一种是UASP的。这里为了兼容性,也是为了学习方便,我们使用BOT规范来虚拟一个标准的U盘。通过UsbTree......
USB存储BOT规范UFI命令大全
命令描述代码配对USB数据流对应章节FORMAT UNIT04houtputsection 4.1 on page 16INQUIRY12hinputsection 4.2 on page 19MODE SELECT55houtputsection......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

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

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