USB存储(U盘)博客
+ -

UASP(USB Attached SCSI Protocol)简介

2022-03-01 10849 2

UASP全称USB Attached SCSI Protocol,中文译名USB附加SCSI协议。

UAS是一种计算机协议,用于将数据从USB存储设备写入和读出,例如硬盘驱动器(HDD)、固态驱动器(SSD) 和拇指驱动器。UAS 依赖于 USB 协议,并使用标准的SCSI命令集。与较旧的USB 大容量仅批量传输(BOT) 驱动程序 相比,使用 UAS 通常可以提供更快的传输速度。

UASP是作为USB3.0标准的一部分引入的,但如果使用兼容的硬件、固件和驱动程序,也可以与符合较慢 USB 2.0 标准的设备一起使用。

UAS概述

UAS其实定义了两个规范,分别为: UAS规范- T10 “USB Attached SCSI” (T10/2095-D)和UASP规范- USB “Universal Serial Bus Mass Storage Class - USB Attached SCSI Protocol (UASP)”.

国际信息技术标准委员会(INCITS)的 T10 技术委员会开发和维护 UAS 规范;SCSI贸易协会(SCSITA) 推广 UAS 技术。
USB大容量存储设备类(MSC) 工作组开发和维护 UASP 规范;USB Implementers Forum , Inc. (USB-IF) 推广 UASP 技术。

与较旧的 USB 大容量仅批量传输 (BOT) 协议驱动程序相比,UAS 驱动程序通常提供更快的传输速度。尽管 UAS 已添加到USB 3.0标准中,但如果硬件兼容,也可以在 USB 2.0 速度下使用。

与 SSD 一起使用时,UAS 在随机读写方面比 BOT 快得多,但在某些写入任务方面仍远低于原生SATA 3接口的速度。
许多NVMe到USB适配器是 USB 连接的 SCSI 设备

硬件支持

SemiAccurate在 2010 年 7 月的一次简短硬件综述发现,技嘉科技已经为他们的主板引入了使用NEC / Renesas芯片的工作 UAS 驱动程序,并且至少在硬件层面上,“LucidPort USB 300 和 USB302、Symwave SW6315、德州仪器TUSB9260 和VLI VL700 控制器都支持 UASP,而据我们所知, ASMedia ASM1051和 ASM1051E 以及富士通 MB86C30A 不支持。”

VR-Zone 在 2011 年 8 月进行的比较性能评估得出的结论是,只有 NEC/Renesas 芯片具有 UAS 工作驱动程序。相同的瑞萨 UAS 驱动程序(适用于 Windows)也适用于 AMD 的A70M 和 A75 Fusion Controller Hub,其中 USB 部分由 AMD 和瑞萨共同开发。2011 年 10 月,ASMedia 芯片也获得了驱动支持(他们之前在硬件方面有支持)。富士通列出了一些支持 UAS 的高端芯片,例如 MB86C311A。

至于 Intel Platform Controller Hub (PCH) 的支持,MyCE 中的一篇文章指出:“原生 Intel USB3 UASP 解决方案仅在 Windows 8 下支持。更复杂的是,并非所有Z77主板都支持 USB3 UASP。需要许可证才能实施 UASP,并不是所有的主板制造商都准备将这个许可证的额外成本转嫁给最终用户。”

操作系统支持

Microsoft在Windows 8中添加了对 UAS 的本机支持。支持 UAS 的驱动器加载 Uaspstor.sys 而不是旧的 Usbstor.sys。默认情况下,Windows 8也通过 USB2.0 支持 UAS。 UAS 驱动程序和产品由 Microsoft 使用Windows 硬件认证工具包进行认证。

Apple 在OS X 10.8 Mountain Lion中添加了对 UAS 的原生支持;使用 UAS 的驱动器显示在(Apple 菜单 -> 关于本机)-> 系统信息 -> 软件 -> 扩展为 IOUSBAttachedSCSI(或 IOUSBMassStorageUASDriver,取决于 OS X 的版本)“已加载:是”。列出“已加载:否”的驱动器默认为较旧、较慢的仅批量传输 (BOT) 模式。如果驱动器的 USB 控制器、Mac 的 USB 端口或任何连接的 USB 集线器不支持 UASP 模式,则可能会发生这种情况。

自2014年6月8日版本3.15 发布以来,Linux 内核已支持 UAS。 然而,一些Linux发行版,例如Ubuntu(从 v11.xx 开始)在 UAS 协议的实现方面遇到了问题。在某些不支持 UAS 的 USB HDD 驱动器中,该驱动器不能被操作系统挂载。报告的解决方法是将modprobe中的 UAS 模块列入黑名单。

FreeBSD自 2018 年 8 月起不支持 UAS

UASP目标

  • 旨在直接解决 USB 大容量存储设备类仅批量传输 (BOT) 的故障
    • 为 USB 大容量存储设备启用命令队列和乱序完成
    • 消除SCSI命令阶段的软件开销
    • 为 SSD启用TRIM(SCSI 术语中的 UNMAP)操作
  • 最多可以排队 64K 命令
  • SCSI SAM-4 兼容
  • 定义了 USB 3.0 SuperSpeed 和 USB 2.0 High-Speed 版本
    • USB 3.0 SuperSpeed – 主机控制器 (xHCI) 硬件支持,无乱序命令的软件开销
    • USB 2.0 高速 – 在 USB 2.0 驱动器中启用命令队列
  • 流被添加到 USB 3.0 SuperSpeed 协议以支持 UAS 乱序完成
    • USB 3.0 主机控制器 (xHCI) 为流提供硬件支持
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存储设备在Windows环境下使用Uaspstor.sys或Usbstor.sys那个驱动?
USB Attached SCSI (UAS) 协议是一种新的大容量存储协议,旨在通过已建立的 USB 大容量存储协议(仅批量传输)和 BOT (提高性能) 。 它通过减少协议开销、支持 SATA 本机命令队列 (NCQ) 并并行处理多个命令。 为此,UAS 使用新的 USB 3.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......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

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

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