In USB 2.0, all communication between the host and a high-speed hub occurs at high speed (480 Mbps). However, low-speed and full-speed devices may still be connected downstream of the hub.

To communicate with these slower devices without blocking the high-speed bus, USB 2.0 uses the Split Transaction Protocol.


Why Split Transactions Are Needed

Without split transactions, a full-speed transaction (12 Mbps) behind a high-speed hub would occupy the high-speed bus for the entire duration of the slow transaction:

Device Speed Time to transfer 64 bytes High-speed bus time wasted
Full-speed (12 Mbps) ~43 µs ~43 µs (could carry ~2,580 HS bytes)
Low-speed (1.5 Mbps) ~341 µs ~341 µs (could carry ~20,480 HS bytes)

Split transactions solve this by decoupling the high-speed bus activity from the slow downstream transaction.


How Split Transactions Work

A split transaction divides communication into two separate high-speed transactions with a gap in between:

          High-Speed Bus                Hub TT              LS/FS Device
               │                          │                      │
   ┌───────────┤                          │                      │
   │Start Split│─── HS ──────────────────►│                      │
   │  (SS)     │  Token + optional data   │                      │
   └───────────┤                          │                      │
               │     ◄── ACK ─────────────┤                      │
               │                          │                      │
               │   ★ Bus is FREE here ★  │── FS/LS ────────────►│
               │    (other HS traffic     │  Actual transaction  │
               │     can use the bus)     │  at native speed     │
               │                          │◄─────────────────────│
   ┌───────────┤                          │  Response stored     │
   │Complete   │─── HS ──────────────────►│                      │
   │Split (CS) │  Request result          │                      │
   └───────────┤                          │                      │
               │     ◄── Data/Status ─────┤                      │
               │                          │                      │

The key insight: between Start Split and Complete Split, the high-speed bus is free for other traffic.


Split Transaction Phases

Phase 1: Start Split (SSPLIT)

The host sends a Start Split token at high speed, containing:

Field Size Description
Hub Address 7 bits Address of the high-speed hub
SC 1 bit Start/Complete flag: 0 = Start Split
Port 7 bits Downstream hub port number where the LS/FS device is attached
S 1 bit Speed: 0 = Full-speed, 1 = Low-speed
E 1 bit Endpoint type encoding (used with ET)
ET 2 bits Endpoint type: 00 = Control, 01 = Isochronous, 10 = Bulk, 11 = Interrupt

This is followed by the normal token (IN/OUT/SETUP) and optional data packet, all at high speed.

The Transaction Translator then:

  1. Identifies the target downstream port
  2. Buffers the transaction data
  3. Responds to the host with ACK (accepted the split request)
  4. Begins the LS/FS transaction on the downstream port at native speed

Phase 2: Complete Split (CSPLIT)

Later (typically in a subsequent microframe), the host sends a Complete Split token to retrieve the result:

Field Size Description
Hub Address 7 bits Same hub as the Start Split
SC 1 bit Start/Complete flag: 1 = Complete Split
Port 7 bits Same downstream port
S 1 bit Speed
E 1 bit End (for isochronous, marks last microframe)
ET 2 bits Endpoint type

The TT responds with:


Complete Split Response Codes

Response Meaning Host Action
DATA0/1 LS/FS IN data returned successfully Accept data
ACK LS/FS OUT transaction completed successfully Transfer done
NAK LS/FS device responded with NAK Retry the Start Split
STALL LS/FS device endpoint is halted Report error to software
NYET TT has not yet completed the LS/FS transaction Retry Complete Split in next microframe
ERR Transaction error on the LS/FS bus Report error to software

Example: Bulk IN Split Transaction

Split Transaction Sequence - Bulk IN Transfer.png

This example shows the packet sequence associated with a Bulk IN split transaction where the downstream hub ports have low- and full-speed devices attached. In this example, a single Transaction Translator sends a packet to the full-speed device.

Sequence

1. Start Split (SS) Transaction

Every split transaction begins with the host sending the Start Split (SS) token packet followed by either:

Note

All token packets are sent at high speed to the hub.

2. Transaction Translator Operation

The Transaction Translator (TT) within the hub:

3. Complete Split (CS) Transaction

The host sends the Complete Split (CS) transaction consisting of the same token packets sent in the SS transaction to verify the entry being completed. In this example:

Detailed Packet Sequence

Microframe N:
  Host ──── SSPLIT Token ──────────────────► Hub (TT)
  Host ──── IN Token ──────────────────────► Hub (TT)
  Host ◄──── ACK ──────────────────────────── Hub (TT)

       (TT stores tokens and begins FS transaction)
       (TT performs FS IN at native device speed)
       (TT stores returned data payload)
       (HS bus is FREE for other traffic)

Microframe N+1:
  Host ──── CSPLIT Token ──────────────────► Hub (TT)
  Host ──── IN Token ──────────────────────► Hub (TT)
  Host ◄──── DATA0 (64 bytes from device) ── Hub (TT)
  Host ──── ACK ───────────────────────────► Hub (TT)

Example: Interrupt IN Split Transaction

For periodic transfers (interrupt), the timing is tightly scheduled:

Microframe Action
N Host sends SSPLIT + IN token; TT ACKs; TT begins LS/FS poll
N+1 Host sends CSPLIT; TT may respond NYET (not done yet)
N+2 Host sends CSPLIT again; TT returns data or NAK
Note

The host controller schedules Start Splits and Complete Splits in specific microframes based on the endpoint's polling interval. The EHCI controller maintains a periodic schedule for this purpose.


Major Components of a High-Speed Hub

Major High-Speed Hub Functions.png

1. Hub Repeater

Handles high-speed upstream/downstream traffic:

2. Transaction Translator (TT)

The TT is the core component for split transactions — it acts as a miniature LS/FS host controller embedded in the hub:

Single-TT vs. Multi-TT Hubs

Hub Type TT Count Behavior
Single-TT 1 All downstream LS/FS traffic serialized through one TT
Multi-TT 1 per port Each port has a dedicated TT; parallel LS/FS transactions possible
Tip

Multi-TT hubs provide better bandwidth for setups with multiple LS/FS devices but are more expensive. Most USB 2.0 hubs are single-TT.

3. Hub Controller

Manages hub-level operations:


Benefits of Split Transactions

Benefit Details
High-speed bus stays free Slow LS/FS transactions are isolated inside the TT
Mixed-speed support HS, FS, and LS devices coexist on the same hub
Improved bandwidth The HS bus can carry other traffic during the LS/FS transaction gap
No LS/FS traffic on HS bus Raw LS/FS signaling never appears on the high-speed bus segment

Applicability

Host ↔ Device Path Protocol Used
Host ↔ HS device (direct) Normal HS transactions
Host ↔ FS/LS device behind HS hub Split transactions
Host ↔ FS/LS device behind FS hub Normal FS/LS transactions (PRE preamble for LS)
Host ↔ HS device behind HS hub Normal HS transactions (hub acts as repeater)

Relationship to SuperSpeed

USB 3.0 SuperSpeed does not use split transactions. Instead: