Fundamentals 16 min read

An Overview of USB 3.0, Type‑C, and OTG Technologies

The article reviews USB 3.0’s higher 5 Gbps (10 Gbps Gen 2) bandwidth, asynchronous transfers, burst and stream capabilities, explains the reversible Type‑C connector’s power‑delivery, dual‑lane data and DisplayPort alternate mode, and details USB 3.0 OTG role negotiation via CC pins together with Linux kernel and ConfigFS support.

OPPO Kernel Craftsman
OPPO Kernel Craftsman
OPPO Kernel Craftsman
An Overview of USB 3.0, Type‑C, and OTG Technologies

This article continues the introduction to USB technology, focusing on three main topics: the new features of USB 3.0, the Type‑C connector, and USB 3.0 OTG.

USB 3.0

USB has become the most successful PC peripheral interconnect, with billions of devices shipped. New applications such as high‑definition video capture, large‑capacity storage, and high‑resolution photography demand higher bandwidth, which USB 3.0 provides by increasing the bus speed to 5 Gbps (10 Gbps in Gen 2) and introducing asynchronous transfer modes.

Key differences between USB 2.0 and USB 3.0 include:

USB 2.0 uses three‑part transactions (token, data, handshake); USB 3.0 embeds the token in the data packet for OUT transfers and replaces it with a handshake for IN transfers.

USB 2.0 does not support bursting; USB 3.0 supports continuous bursting.

USB 2.0 is a half‑duplex broadcast bus; USB 3.0 is a dual‑simplex unicast bus, allowing simultaneous IN and OUT transactions.

USB 2.0 uses a polling model; USB 3.0 uses asynchronous notifications.

USB 2.0 lacks streaming; USB 3.0 adds streaming capability for bulk endpoints.

The article describes the IN transaction flow, the conditions for completing an IN transfer, and the advantages of asynchronous, point‑to‑point communication, such as higher efficiency and lower power consumption for idle devices.

Burst Transactions

USB 3.0 allows a host to send or receive a series of packets without intermediate acknowledgments, as long as the endpoint’s maximum burst size is not exceeded. Each packet in a burst must be sized to the maximum packet size, except for the final packet, which may be shorter.

Stream Transfer

When a device’s configuration descriptor includes a MaxStreams field, the bulk endpoint can operate in stream mode, enabling many logical streams (up to 65 533) over a single physical endpoint. Streams are useful for high‑capacity devices that need out‑of‑order data delivery.

Companion Descriptor

USB 3.0 adds a companion descriptor to each endpoint descriptor, indicating support for burst transactions and stream transfers.

Summary of USB 3.0 New Features

Bus speed up to 5 Gbps (10 Gbps in Gen 2)

Asynchronous transfer mode

Burst transactions without waiting for acknowledgments

Stream transfer for massive parallel data flows

Type‑C Connector

Type‑C was introduced after USB 3.0 to provide reversible plug orientation, higher power delivery (up to 20 V 5 A), and the ability to carry DisplayPort signals. The connector adds a TX/RX pair, VCONN, and CC pins.

Key functions of the additional pins:

TX/RX pairs enable dual‑lane USB 3.1 data or can be repurposed for DisplayPort video.

VCONN powers active cables and enables E‑Mark identification of cable capabilities.

CC pins are used for role detection (host/device), Power Delivery negotiation, and mode switching.

Power Delivery (PD) 3.0 uses Biphase Mark Coding (BMC) and supports fixed voltage/current levels (PD 2.0) as well as programmable power supplies (PPS) with adjustable voltage (3 V–21 V) and current (0 A–6.3 A).

DisplayPort Alternate Mode

Type‑C’s four differential pairs can be re‑allocated to carry DisplayPort signals while the remaining pairs continue to support USB 3.1 data, enabling a single cable for video, data, and power.

USB 3.0 OTG

OTG functionality, originally based on the ID pin in USB 2.0 micro‑B connectors, is now handled by the CC pins in Type‑C. USB 3.0 OTG separates power roles, allowing a device to act as host while still receiving power.

The hardware components of USB 3.0 OTG include:

USB controller (xhci or dwc3) – handles data transfer, URB/TRB management.

USB PHY – converts serial USB signals to controller‑compatible format.

Type‑C PHY – processes CC‑pin signaling; can be implemented with dedicated chips such as fusb302.

Linux kernel support involves the EXTCON subsystem for state notifications, and the ConfigFS interface for dynamic gadget configuration. The article outlines the EXTCON driver usage (devm_extcon_register_notifier, devm_extcon_dev_register) and shows how Android’s UsbDeviceManager sets sys.usb.config to select gadget functions (e.g., mtp).

OTG enumeration follows a flowchart where the host and device exchange role‑determination messages via the CC pins, after which the appropriate gadget driver (e.g., function/f_mtp.c) is bound.

Finally, the ConfigFS subsystem replaces the older android.c/composite.c gadget configuration, providing a flexible way to expose multiple functions and manage stream IDs and burst parameters through the struct usb_request interface.

Linux kernelUSB protocolPower Deliveryhardware interfacesOTGType-CUSB 3.0
OPPO Kernel Craftsman
Written by

OPPO Kernel Craftsman

Sharing Linux kernel-related cutting-edge technology, technical articles, technical news, and curated tutorials

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.