USB On-The-Go

USB On-The-Go通常缩写为USB OTG，是USB 2.0规格的补充标准。它可使USB设备，例如播放器或手机，从USB周边设备变为USB主机，与其他USB设备连接通信。在正常情况下，这些支持OTG的USB设备和USB主机（如台式电脑或者手提电脑），仍然作为USB周边设备使用。

支持OTG的设备，如USB打印机，可以不连接电脑的情况下直接接入USB随身碟来读取装置内文件进行打印；或平板电脑可以直接接入USB储存碟、键盘或鼠标来扩充外界硬件功能。

## 历史

- USB On-The-Go Supplement 0.7：2000年11月7日发布。
- USB On-The-Go Supplement 1.0：2001年12月18日发布。
- USB On-The-Go Supplement 1.0a：2003年6月24日发布。
- USB On-The-Go Supplement 1.2：2006年4月4日发布。
- USB On-The-Go Supplement 1.3：2006年12月5日发布。

## 架构

标准的USB使用主从结构的架构，USB主机端（即电脑）是“主”，而USB周边装置是“从”。只有USB主机端可以排程该连结的设定与资料传输。USB周边装置不能够自行启动资料传输，只能回应服务器的指令。

USB OTG改变了这种状况，配件不再需要一定要成为单纯的周边装置，它们有时候也可以成为主机端。举例来说，USB打印机与电脑连接时作为电脑的外界周边被电脑控制，与其他USB储存设备连接时作为控制主机来读取储存设备；平板电脑等手持智能终端与电脑连接时主要作为电脑的储存设备等，单独与USB储存设备或USB输入设备连接时则作为这些接入设备的主机来操控储存设备或接收输入。

不过目前支持的厂商比较少，主要是数码伴侣支持此功能，移动电话和平板电脑在硬件情况允许并使用Windows Mobile或Android系统的支持此功能；苹果手机由iPhone 11开始支持此功能。现在不少播放器开始支持此功能，但大多数在主端时只支持读取功能。Android系统如连接USB储存碟，采用exFAT或FAT32格式的USB储存碟较能获得完整功能。

## 规格

USB OTG是原本制定于2001年底USB2.0规范，后来修订的补充的一部分。

最新版本的补充还定义了用于嵌入式主机端从而有针对性的行为能力和使用电脑相同的USB标准A端口。

超高速OTG设备，嵌入式主机端和周边通过USB3.0的补充USB On-The-Go与嵌入式主机端规格被支持。

USB OTG 最早出现于USB 1.1延伸规范，但此规格与其后的USB 2.0延伸规范，并不完全相容，当两者交互混用易生相容性问题。

## 协议

USB 2.0规范的USB OTG和嵌入式主机补充介绍了三种新的通信协议：

### 附加检测协议（ADP）

允许OTG设备，嵌入式主机或USB设备在USB总线不通电的情况下确定连接状态，同时启用基于插入的行为和显示连接状态的功能。它通过定期测量USB端口上的电容来确定是否连接了其他设备，悬空电缆或无电缆。当检测到足够大的电容变化来指示设备连接时，A设备将向USB总线供电并查找设备连接。同时，B设备将生成SRP并等待USB总线上电。

### 会话请求协议（SRP）

允许通信设备控制链路的电源会话何时处于活动状态; 在标准的USB中，只有主机能够这样做。这样可以精确控制功耗，这对于电池供电设备（如相机和手机）非常重要。OTG或嵌入式主机可以使USB链路断电，直到外设（可以是OTG或标准USB设备）需要电源。OTG和嵌入式主机通常只有很少的电池电量可供使用，因此将USB链路断电会有助于延长电池运行时间。

### 主机协商协议（HNP）

允许这两个设备交换其主机/外设角色，前提是两个设备都是OTG双角色设备。通过使用HNP来逆转主机/外设角色，USB OTG设备能够获取对数据传输调度的控制。因此，任何OTG设备都能够通过USB OTG总线启动数据传输。最新版本的补充说明还介绍了HNP轮询，其中主机设备在活动会话期间定期轮询外设以确定它是否希望成为主机。

HNP的主要目的是容纳连接了A和B设备（见下文）的用户在错误的方向上执行他们想要执行的任务。例如，打印机作为A设备（主机）连接，但不能用作特定相机的主机，因为它不理解相机对打印作业的表示。当相机知道如何与打印机通话时，打印机将使用HNP切换到从属角色，相机成为主机，因此存储在相机中的照片可以在不重新连接电缆的情况下打印出来。新的OTG协议不能通过标准USB集线器，因为它们基于电信号通过专用线路。

所述USB OTG和嵌入式主机补编USB 3.0规范引入附加协议，角色交换协议（RSP）。通过扩展USB 3.0规范提供的标准机制，实现了与HNP（即角色交换）相同的目的。继USB 2.0规范的USB OTG和嵌入式主机补充之后，还需要遵循USB 2.0补充规范，以保持向后兼容性。超高速外设功能的OTG设备（SS-OTG）需要支持RSP。超高速外设功能的OTG设备（SSPC-OTG）不需要支持RSP，因为它们只能作为超高速外设功能的上运行; 他们没有超高速外设功能的主机，所以只能在USB 2.0数据速率下使用HNP进行角色交换。

## 设备角色

USB OTG为设备定义两种角色：OTG A设备和OTG B设备，指定哪一端为链路供电，最初是主机。OTG A设备是电力供应商，而OTG B设备是电力消费者。在默认链接配置中，A设备充当USB主机，B设备充当USB外设。主机和外设模式可能会在以后使用HNP进行交换。由于每个OTG控制器都支持这两种角色，因此它们通常被称为双重角色控制器，而不是OTG控制器。

对于集成电路（IC）设计人员来说，USB OTG的一个有吸引力的特性是能够用更少的门实现更多的USB功能。

“传统”方法包括四个控制器，从而导致更多的测试和调试门：

基于EHCI的 USB高速主机控制器（一个寄存器接口）

基于OHCI的全速/低速主机控制器（另一个寄存器接口）

USB设备控制器，支持高速和全速第四个控制器在主机和设备控制器之间切换OTG根端口另外，大多数小工具必须是主机或设备。OTG硬件设计将所有控制器合并为一个双角色控制器，比单个设备控制器稍微复杂一些。

## 目标外设列表

在将主机设备聚焦于特定的产品或应用程序，而不是像普通PC一样用作通用主机。TPL指定“定位”主机支持的产品，定义需要支持的产品，包括输出功率，传输速度，支持的协议和设备类别。它适用于所有目标主机，包括充当主机和嵌入式主机的OTG设备。

## 接口

<image>

### OTG迷你接口

最初的USB OTG标准引入了一种名为mini-AB的插座，在稍后的版本（1.4版以后）中被micro-AB取代。它可以接受mini-A插头或mini-B插头，而mini-A适配器可以连接到来自外围设备的标准A USB电缆。标准OTG电缆的一端有一个mini-A插头，另一端有一个mini-B插头（它不能有两个相同类型的插头）。

插入mini-A插头的设备成为OTG A设备，插入迷你B插头的设备成为B设备。插入的插头类型通过ID引脚的状态进行检测（mini-A插头的ID引脚接地，而mini-B插头悬空）。

纯mini-A插座也存在，用于需要紧凑主机端口的地方，但OTG不受支持。

### OTG微型接口

随着USB微型插头的推出，还引入了一种名为micro-AB的新插头插座。它可以接受一个micro-A插头或一个micro-B插头。Micro-A适配器允许连接到标准A插头，如在固定或标准设备上使用的那样。OTG产品必须有一个微型AB插座，并且不能有其他USB插座。

OTG电缆的一端有一个micro-A插头，另一端有一个micro-B插头（它不能有两个相同类型的插头）。OTG为标准USB连接器添加了第五个引脚，称为ID引脚; micro-A插头的ID引脚接地，而micro-B插头的ID悬空。插入micro-A插头的设备成为OTG A设备，插入了micro-B插头的设备成为B设备。所插入的插头的类型由引脚ID的状态来检测。

在标称阻值124kΩ，68kΩ和36.5kΩ的情况下，相对于接地引脚定义了三个额外的ID引脚状态。这些允许设备与USB附件充电器适配器一起工作，允许OTG设备同时连接到充电器和另一个设备。

这三种状态用于以下情况：

一个充电器和一个没有断言V BUS（不提供电源）的设备或A设备都被连接。允许OTG设备充电并启动SRP，但不能连接。

充电器和断言V BUS（正在提供电源）的A设备已连接。允许OTG设备充电并连接，但不启动SRP。

充电器和B设备连接在一起。OTG设备被允许充电并进入主机模式。

USB 3.0引入了micro-AB插座和micro-A和micro-B插头的向后兼容SuperSpeed扩展。它们包含非超速微型连接器的所有引脚，并使用ID引脚标识A设备和B设备角色，并添加SuperSpeed引脚。

## OTG微电缆

当支持OTG的设备连接到PC时，它使用自己的USB-A或USB Type-C电缆（通常以现代设备的微B，USB-C或Lightning插头结尾）。当启用OTG的设备连接到USB从设备（如闪存驱动器）时，从设备必须以设备的适当连接结束，或者用户必须提供以USB-A结尾的适当适配器。该适配器可将任何标准USB外设连接到OTG设备。将两台支持OTG的设备连接在一起需要一个适配器连接从设备的USB-A电缆，或者使用适当的双面电缆和一个软件实施来管理它。USB Type-C设备正变得越来越普遍。

## 向下兼容性

### 充电器的兼容性

USB OTG设备向后兼容USB 2.0（适用于SuperSpeed OTG设备的USB 3.0），并且在连接到标准（非OTG）USB设备时，将作为标准USB主机或设备运行。主要的例外是OTG主机只需要为TPL上列出的产品提供足够的电力，这些产品可能足以连接未列出的外设。有源USB集线器可能会回避这个问题（如果支持的话），因为它会根据USB 2.0或USB 3.0规范提供自己的电源。

在OTG补充版本的1.3和2.0版本之间引入了HNP和SRP中的一些不兼容问题，这会在使用这些协议版本时导致互操作性问题。

有些设备可以通过USB端口为其电池充电；有些甚至可以检测到专用充电器，并汲取大于500mA的电流量，以帮助其更快速的充电。OTG设备也不例外。