USB Tutorial
1
USB Tutorial
Objectives
Review USB functionalities
Be able to read a USB trace
Understand the enumeration process
Highlight that class drivers are part of the USB success
2
USB Tutorial
Few generalities on USB
Host Tiered start topology
2 types of peripherals:
Root Hub - HUB
- Function
HUB - Up to 127 peripherals
A master/slave architecture
USB 2.0 spec supercedes USB 1.1 spec
- USB 2.0 LS ( USB1.1 at 1.5Mbps)
HUB Keyboard Disk - USB 2.0 FS ( USB 1.1 at 12Mbps)
- USB 2.0 HS (480 Mbps)
Power Management
- Different device class: bus powered or self powered
Speaker Printer - Vbus > 4.35V. 100mA, (500mA after negociation),
500uA in suspend mode
- Host disables power to ill-behaved peripherals
3
USB Tutorial
The Transaction Protocol is Host Based
Host based token polling
- Data from host-to-function and function-to-host
- Host handles most of the protocol complexity
- Peripheral design is simple and low-cost
Robustness
- Handshake to acknowledge data transfer and flow control
- Very low raw physical bit error rate (< 10 –10)
- CRC protection plus hardware retry option
- Data toggle Sequence bits
Bounded transfer characteristics
- Data transfer bandwidth and latency prenegociated
- Flow control for peripheral buffer management
No asynchronous message/interrupt from the peripheral
4
USB Tutorial
USB Topology
A unique device address is assigned to each USB device
Physical tiered start network:
HOST Dok @: 3
Hub @: 2
Root Hub @: 1 Mouse @: 4
USB cable Keyboard @: 6 IP phone @: 5
Logical network: Root Hub @: 1
HOST A driver has no
Hub @: 2 information on the
HUB Driver
topology of the
Dok @: 3
MSD Driver physical network
Mouse @: 4
Audio Driver
IP phone @: 5
HID Driver
Logical link Keyboard @: 6
Each device sees all traffic generated by the host
A device does not see data sent by another peripheral
5
USB Tutorial
USB transfer
A device has several endpoints
Each endpoint is assigned to a logical pipe with the host
Each pipe is characterized by:
SOF @5EP0 @6EP1 @6EP2
- Device address
- Endpoint number
- Transfer type A 1ms USB Frame
Transfer type:
Type Direction Packets per frame M ax Packet Size
Control Bidir Several 64 Bytes
Bulk Unidir Several 64 Bytes
Isochronous Unidir One 1024 Bytes
Interrupt Unidir One max 64 Bytes
Control: configuration/command/status type communication
Bulk: large amounts of data at highly variable times
Isochronous: constant-rate, error tolerant transfers
Interrupt: send or receive data infrequently but with bounded service periods
6
USB Tutorial
USB pipes
Device address is affected by the host
Endpoint configuration depends on the device implementation
Time multiplexing of transfer is under host control
Device Address 3
Control Transf er
Bulk IN Transf er
Ep0 Disk On Key
Bulk OUT Transf er
Ep1
Ep2
Device Address 4
Control Transf er
Interrupt IN Transf er
Ep0 Mouse
Ep3
Host Device Address 5
Control Transf er
Iso IN Transf er
Ep0 IP Phone
Iso OUT Transf er
Ep1
Ep2
Device Address 2
Control Transf er
Ep0 Hub
Interrupt IN Transf er
Ep1
Logical Pipe
7
USB Tutorial
Example of USB controller
8
USB Tutorial
USB transactions
A transfer is composed of one or several transactions
Example of control transfer (several transactions)
Setup Stage
Data Stage
Status Stage
Example of bulk transfer (one transaction)
9
USB Tutorial
USB Transactions (1)
A transaction is made of 3 packets
- Token: device address, endpoint number, transfer type
- Data : data to be sent
- Handshake: acknowledge Token Data Transfer Handshake
Example of bulk transaction:
10
USB Tutorial
USB Transactions (2)
Example of bulk OUT transaction:
Token Data Transfer Handshake
Endpoint Address
Device Address
PID
Host Token
Data
Device Handshake
11
USB Tutorial
Summary
The host affects an address to the device
The device has several endpoints
To each endpoint corresponds a pipe and a type of transfer
Transfer is made of one or several transactions
Transactions are composed of 3 packets
Device Transfer
•Device address
Offers Handles
Control Bulk Iso Int
Pipe/Endpoint 2+ 1+ 1+ 1+
•Endpoint number
•Endpoint type Transaction
Token pkt
Data pkt
Handshake pkt
12
USB Tutorial
Control transfer
The device is not ready…
The device does not
acknowledge the transaction
The host retries…
The device has
Acknowledged the transaction
13
USB Tutorial
USB scheduling(1)
USB transfers occurs in a millisecond time-frame window
The host sends a Start Of Frame (SOF) Packet at the beginning of
each frame
This is the host which starts a transfer with a logical peripheral
Transactions are time multiplexed in one or several frames
This is the host which do the transaction arbitration
SOF @5 @3 @6 SOF @5 @6 @6 SOF @5 @2 SOF
Time
A 1ms USB Frame
-Host handles most of the protocol complexity
-Peripheral design is simple and low-cost
14
USB Tutorial
USB scheduling (2)
The bus allocation depends on the host controller
A constant interval width is allocated to isochronous and interrupt
transfer
A minimum interval width is reserved for control transfer
The rest of interval is for bulk transfer
Valible width Fixed width Variable width
Control Iso + Interrupt transfer Bulk transfer
transfers
-A host can refuse a new peripheral which requests
large isochronous transfer size
-Such peripheral offers several configurations
15
USB Tutorial
Bandwidth
Theorically up to 1216 bytes can be transferred through a bulk
endpoint in a frame
In practice ~950 bytes
1ms frame
16
USB Tutorial
Device detection
The host (hub) downstream port integrates 2 pull-downs
(15Kohms). The bus state is SE0 (DP = DM = 0V)
When a device is connected, the bus state is idle (DP = 3.3V DM =
0V). DP is forced by the device pull-up (1.5Kohms).
The hub/host detects the port status change and forces a bus
reset to the new device (DP = 0V DM = 0V).
Then the host sends requests to the device through the default
control endpoint (endpoint number 0). A newly connected device
address is 0. 3.3V
HOST
1.5 Kohms
DP
15 Kohms DP
DM
DM
15 Kohms
Device
17
USB Tutorial
Enumeration
Enumeration is the Process of Assigning Addresses and Setting
Configurations
Host Hub Device
Status Change Connect Cable
Attached
Query Change
Port Enable Powered
Reset Device
Get Device Descriptor via default Pipe and Address Default
Assign a Unique Address
Read all Configuration Information Addressed
Configure and Assign Configuration Value
Configured
18
USB Tutorial
Enumeration trace
Default Address, default control endpoint
Enter Address State
Enter Configured State
19
USB Tutorial
USB Device State
After 3ms of bus inactivity
the device must enter
Suspended state and drain less
than 500uA
20
USB Tutorial
Standard requests
A setup transaction includes an 8-byte formatted data packet
Standard requests are defined in Chapter 9 of the USB spec
21
USB Tutorial
Host software architecture
Linux and WIN CE provide
OHCI/UHCI/EHCI HCD driver
USBD Driver
Main class drivers: Hub, HID, Mass storage, Printer, …
• Symbian and RTOS does not HID MS HUB Etc…
provide USB host stack driver
•SW IPs providers are able to
provide solutions for RTOS USB Protocol Driver API
Softconnex, Philog, …
Expensive: (65k$ for a mass Host Controller Driver (HCD)
storage solution) OHCI-UHCI-EHCI
•It is still possible to build a mini
host from our full host:
the SW is only able to drive Host regs
some kinds of devices Controller
22
USB Tutorial
Device USB driver components
USB Device driver API
Power Attach/ Status Control Protocol Endpoint Data
Management Detach & •Standard Requests •Transfer Protocols
Processing Control •Class Requests Bulk In/Out
•Isochronous In/Out
•Vendor Requests
•Interrupt In/Out
Clock Pull-Up USB Controller Endpoint FIFO
Registers Resistor Registers Registers
23
USB Tutorial
Device descriptor
The USB Host stacks uses the descriptor retrieved from the
device to find the corresponding driver.
Windows looks for a matching Vendor ID/Product ID in its .inf
library
If not found, it will search for a matching class driver
If not found then it will request the user to insert a CD to install
the corresponding driver
Device Descriptor
Configuration Descriptor Configuration Descriptor
Interface Descriptor Interface Descriptor Interface Descriptor
Endpoint Endpoint Endpoint Endpoint Endpoint Endpoint
Descriptor Descriptor Descriptor Descriptor Descriptor Descriptor
24
USB Tutorial
USB class drivers
Building on top of the USB specifications, there are Device Class
Specifications from the Device Working Group
Matching device class requirements allow use of standard host
class drivers provided by Windows or Linux
Each class driver specifies the endpoint configurations required
Existing class drivers:
- Audio class (speakers, …)
- HID (keyboard, mouse, …)
- Mass Storage (disk on key)
- Printer class
- Smart Card CCID
- Communication Data Class
- …
25
USB Tutorial
Objectives
Review USB functionalities
Be able to read a USB trace
Understand the enumeration process
Highlight that class drivers are part of the USB success
26
USB Tutorial
What is happening?
Transaction NACKed by the device
27
USB Tutorial
What is the physical topology?
How many device connected?
Which device answers?
Where is connected the bus analyser?
28
USB Tutorial
Answer
Bus Analyzer
HUB New Device
Upstream Port
Downstream Ports
Device Nb 3
Device Nb 2
USB Wire
The bus analyzer logs all downstream packets from the host
and only upstream packets from the new device
29