Methods for analyzing USB data traffic using a single USB host

US008417840B2
(12) United States Patent
(10) Patent N0.:
(45) Date of Patent:
Santhanam et a].
(54)
METHODS FOR ANALYZING USB DATA
TRAFFIC USINGA SINGLE USB HOST
CONTROLLER
(75) Inventors: Gopal Santhanam, Sunnyvale, CA
(US); Etai Bruhis, Palo Alto, CA (U S);
Notice:
*Apr. 9, 2013
Catalyst Enterprises Inc ., “Bus & Protocol Analyzers,” product speci
?cation, 2005.*
“Universal Serial Bus Speci?cation,” speci?cation, Apr. 27, 2000.*
Ellisys, “Ellisys USB Explorer 260 Getting Started Guide,” manual,
Nov. 22, 2007*
Kumaran Santhanam, Sunnyvale, CA
Ellisys, “Ellisys USB Explorer 200 Getting Started Guide,” manual,
(Us)
Feb. 13, 2006*
(73) Assignee: Total Phase, Inc., Sunnyvale, CA (US)
(*)
US 8,417,840 B2
Ellisys, “Ellisys USB Tracker 110 Getting Started Guide,” manual,
Feb. 13, 2006*
Subject to any disclaimer, the term of this
patent is extended or adjusted under 35
Lecroy Corporation. “LeCroy USBTracerTM USB 2.0 Design &Veri
U.S.C. 154(b) by 0 days.
?cation System User Manual.” user manual, Jul. 2007.*
This patent is subject to a terminal dis
claimer.
2001.*
Hitex, “USB Agent Explores the secrets of USB,” brochure, Jun.
(21) Appl. No.: 13/441,725
(22) Filed:
Apr. 6, 2012
Lecroy Corporation, “LeCroy AdvisorTM USB 2.0 Bus and Protocol
Analyzer User Manual,” user manual, Jul. 2007.*
Computer Access Technology Corporation, “CATCTM USB
(65)
ChiefTM Bus & Protocol Analyzer User’s Manual,” user manual, Nov.
9, 2001 .*
Prior Publication Data
US 2012/0246348 A1
Lecroy Corporation, “LeCroy USBMobileHSTM Protocol Analyzer
Sep. 27, 2012
User Manual,” user manual, Jul. 2007.*
Related US. Application Data
* cited by examiner
(63)
Continuation of application No. 12/416,107, ?led on
Mar. 31, 2009, noW Pat. No. 8,176, 216.
(60)
Provisional application No. 61/041,080, ?led on Mar.
31, 2008.
(74) Attorney, Agent, or Firm * Van Pelt, Yi & James LLP
(51)
Int. Cl.
G06F 3/00
US. Cl.
(57)
Primary Examiner * Chun-Kuan Lee
(52)
USPC
(58)
(2006.01)
ABSTRACT
A method is described for capturing USB data tra?ic for a
.......................................................... ..
710/15
Field of Classi?cation Search ................... .. 710/15
See application ?le for complete search history.
(56)
References Cited
PUBLICATIONS
monitored device by a USB analyzer using a single USB host
controller. It comprises the steps of: generating and storing an
address and communication speed associated With the USB
analyzer; reading a USB packet; discarding selected read
packets based on the stored analyzer address and communi
cation speed; and transmitting the remaining packets to an
analysis computer.
Catalyst Enterprises Inc. “Conquest Series USB Protocol Analyzers,”
product speci?cation, 2006*
21 Claims, 4 Drawing Sheets
30
Plug in Analyzer
Read USB Data
32
48
Enumerete Analyzer
Write Data to
Buffer
is ii a Token PID?
Store Analyzer‘s Device Address
and Anelyzer‘s Communication
Yes
Speed
52
36
Enable/Disable Filienng
Does the
Requested Devlce Address
Match the Analyzer‘: Address and Do
the Speeds Mitch?
Yes
Begin Capture
Read USB Data
40
Is filtering enabled?
No
5B
is Token PID?
Read USB Data
N0
58
Write data in Buffer
Is Corvupted PID?
Vee
US. Patent
Apr. 9, 2013
Sheet 1 014
US 8,417,840 B2
or
w?Im?
SEA_-g4.
31L
E“=w9eo:
ow A
V
w xoml
v.9“.
:2BF:
US. Patent
Apr. 9, 2013
a
o
Sheet 2 of4
a
w
CPL
n
W
m
M
nowcoaw m
v.
w
M
US 8,417,840 B2
.
w
_
n
_. ¢
_.,
M
mnw coawm
az
w
...
.
.v.
..
.,.
.,..
.,...
,
.....
_
.
v
..
....,l
E.
mu
_£in:8.50
OTL
u
_
w
_
_.4;. . 1 3H."IN",
“
_
W
E.3
E
1_£“8w.e:80
I%En!
,...
,.,,.
..
.
.
..
~.
v.,..,,..,..
..
v,
.,.
,,.
.
...
.
,
,,
H
”
n
@mM
w2cuo5caw0mw
"$9,7~@92“26m5cu0<mc w
E
9%
2
W
_
5.81.820
v
_
~
~
_
_
_
UE2L
_
_
_
32A52>;wm"a~g§:$"@w2c$o5=a6mbwo0
_
.
,.
,
.
.
.
.
~
.,.....
.,.k
..
,.,.
_,.
.,,
.v
,
..,,.,.
.
a.
.,.,,.
""
H
$v9,N89w9>3.m_x8oam=<.m
w
_
_
_
_
_
_
_
E“8_N9@9H5wmZ2.xQ5omZm
w3z._Ao<w5~m9§$5
__
_ UCQW
M
w_
M
3.\L
E_w_m?P8g.25
EMw5zm1g9
“
_L
_
_
_
n
N
wu
L"
x®?Nw>om.QC<
2"NE“6w3%z0m2<?6~a§vm$b?.JQ;.
w8_E“c32~o@m8a20wm5=0<m
_
_
_
_
.
N.mE
:28?:
US. Patent
Apr. 9, 2013
US 8,417,840 B2
Sheet 3 of4
Plug in Analyzer
l
(“32
Enumerate Analyzer
Store Analyzer's Device Address
and Analyzer’s Communication
Speed
l
(""36
Enable/Disable Filtering
Begin Capture
40
»
Yes
ls filtering enabled?
Read USB Data
i
Write data to Buffer
Fig. 3a
("'44
US. Patent
Apr. 9, 2013
Sheet 4 of4
US 8,417,840 B2
(-46
Read USB Data
(~50
Write Data to
Buffer
is it a Token PID?
A
Does the
No
Requested Device Address
Match the Analyzer's Address and Do
the Speeds Match?
54
Read USB Data
Yes
Is Token PD?
is Corrupted PID?
Fig. 3b
Yes
=
US 8,417,840 B2
1
2
METHODS FOR ANALYZING USB DATA
TRAFFIC USINGA SINGLE USB HOST
CONTROLLER
14 on a single host controller 10. High-speed (HS) commu
nication devices are electrically isolated from full-speed (FS)
and loW-speed (LS) devices, even if connected to the same
host controller. Thus, packets to the analyZer 12 Will only be
perceived on the monitor port 15 if the monitor port 15 is HS
and the communication port 11 is HS, or if they are both not
HS.
CROSS REFERENCE
This application claims priority from a provisional patent
application entitled “Method and Circuits forAnalyZing USB
Data Tra?ic Using a Hardware USB Analyzer on a Single
USB Host Controller” ?led on Mar. 31, 2008 and having an
FIG. 2 illustrates the data tra?ic at various times for an
analyZer and a device on the same host controller. Each con
10
Application No. 61/041,080. Said application is incorporated
herein by reference.
nection to the host controller 10 effectively has a logical
“Send” and “Receive” unit. All packets sent by the host con
troller 10 (see times t0 and t2) are received by all attached
FIELD OF INVENTION
peripherals (i.e., the device 14 and the analyZer 12). The
responses from the peripherals (see times t1 and t3) are only
seen on the physical communication interface betWeen the
This invention relates to methods for analyzing USB data
particular peripheral and the host controller 10.
tra?ic, and, in particular, to methods for capturing USB data
tra?ic using a USB analyZer on a single USB host controller.
BACKGROUND
20
When the host controller 10 sends a packet With the data
“PKT2ANL” to the analyZer 12 at time t2, the analyZer 12
receives the packet on its receive logical port (of the commu
nication port 11), as Well as on its monitor port 15. Therefore,
When the analyZer 12 responds With the monitored data at
Universal Serial Bus (USB) is a serial bus standard used for
connecting peripheral devices to a host computer. A USB
system comprises a USB host, a plurality of doWnstream USB
ports, and one or more peripheral devices. A USB host may
time t3, that piece of data, “PKT2ANL”, is unnecessarily
25
present in the analyZer response. If the host controller 10 is
sending many packets to the analyZer 12, then this has the
have multiple USB host controllers (the “host controllers”),
potential of overloading the captured analysis traf?c With
Wherein each host controller may provide for one or more
unnecessary information, and can also take up bandWidth in
the analyZer’s response at time t3.
USB ports.
Speci?cally, the USB 2.0 architecture offers high-speed
communications, and is capable of connecting multiple
30
devices to a hub that is further connected to a port of the host
computer. The USB 2.0 architecture employs a unidirectional
broadcast system. In such a system, When a host controller or
hub sends a packet, all devices doWnstream from the origi
nating point of the data Will receive the packet. When the host
controller communicates With a speci?c device, it must
include the address of the device in the Token packet.
35
40
This feature of the USB architecture is especially signi?
cant for USB analyZers, Which communicate to an analysis
computer through the USB system. FIG. 1 illustrates a typical
setup for connecting an analyZer to a USB system, Wherein
45
controller. An analyZer 12 is setup to monitor the communi
cations betWeen a host controller 10 and a device 14. The
analyZer 12 can be setup such that the host controller 10 and
the device 14 are unaWare of the analyZer’s presence on the
communication line.
Since the analyZer 12 and the device 14 are connected to
the same host controller 10, the analyZer 12 Will receive tra?ic
(e. g., packet 16) intended for itself and for the device on the
communication port 11 and on the monitor port 15. Since
packets intended for the communication port 11 of the ana
lyZer 12 are also perceived on the monitorport 15, this creates
Using a separate host controller for the analysis computer
troller, and alloWs both the analyZer and the device under test
received by the host controller and hubs that are directly
the analyZer and a device are connected to the same host
the device address of the analyZer beforehand and set up a
?lter for it.
is optimal in all cases; it reduces the load on that host con
Upstream tra?ic (i.e., the responses from the devices) is only
connected on the return path to the host controller.
Previous products and technologies combated this issue in
one of tWo Ways: they either avoided the issue entirely by
insisting the user put the USB analyZer on a separate host
controller, or they required the user of the analyZer to knoW
50
55
to have more available bandWidth. HoWever, this situation is
not alWays possible or practical, as it requires the user to
include additional hardWare on the analysis computer or to
obtain another USB capable computer; thereby requiring a
total of tWo computers. Therefore, this requirement excludes
users from e?iciently using the analyZer in such a situation,
and does not address the problem.
Some products give the ability to create a hardWare ?lter
that Will serve a similar purpose. The ?lter can be con?gured
to discard all data intended for a speci?c device address. In
this Way, the analyZer and the device under test can be on the
same ho st controller Without overloading the capture buffers.
HoWever, these products require the user to knoW the device
address of the analyZer in order to con?gure the ?lter. This
?lter Would potentially have to be recon?gured each time the
analyZer is used since the device address of the analyZer can
change every time it is plugged into a computer. While serv
ing a similar purpose to the present invention, this approach
a positive feedback loop. Every time the computer requests
also puts unnecessary strain on the user to maintain the func
data from the analyZer 12, it actually creates more traf?c on
the monitorport 15 to be sent back to the computer. The tra?ic
tionality of the ?lter.
Therefore, it is desirable to provide methods for analyZing
can overWhelm the user With unnecessary data and Will also
put unnecessary load on the analyZer’ s buffer memory and the
60
controller by automatically ?ltering the USB data tra?ic.
analysis computer. This is especially true When the analyZer
12 sends large volumes of analysis data back to the analysis
computer simultaneously to When the traf?c is being cap
tured.
It should be noted that this positive feedback occurs only
during particular con?gurations of the analyZer 12 and device
USB data tra?ic using a USB analyZer on a single USB host
SUMMARY OF INVENTION
65
An object of this invention is to provide methods for rec
ogniZing packets received on a monitor port intended for an
analyZer’s device address and then discarding those packets.
US 8,417,840 B2
3
4
Another object of this invention is to provide methods for
analyzing USB data tra?ic Without requiring the analyzer to
host controller. Unintentional ?ltering can therefore occur
When the analyZer is connected to a HS bus and monitoring
be on a separate bus or requiring a manually con?gured ?lter.
FS/LS devices on a single host controller, or vice-versa.
Yet another object of this invention is to provide methods
Therefore the speed of the monitored bus should be checked
for an easy and maintainable interface for a user of an ana
against the speed of the communication bus.
lyZer to automatically ?lter USB traf?c.
Brie?y, USB data tra?ic for a monitored device is captured
by a USB analyZer, Wherein the monitored device and the
USB analyZer utiliZe only one USB host controller, compris
ing the steps of: storing an analyZer address associated With
the USB analyZer and the speed of the analyZer’s communi
cation port; reading a USB packet; and ?ltering the read
For example, if the analyZer’s device address is set to 0x01
and it is communicating at HS, it is possible that a FS device
being monitored Will also have a device address of 0x01, even
if on the same host controller. If self-?ltering Was enabled,
and the speed of the bus Was not taken into account, then the
user Would not see any monitored tra?ic (as all packets Would
packet as a function of the stored analyZer address and its
communication speed.
An advantage of this invention is that methods for recog
niZing packets received on a monitor port intended for an
analyZer’s device address and then discarding those packets
are provided.
Another advantage of this invention is that methods for
analyZing USB data tra?ic Without requiring the analyZer to
20
be on a separate bus or requiring a manually con?gured ?lter
are provided.
Yet another advantage is that methods for an easy and
mechanisms during the capture start-up process.
Using this mechanism, users could safely analyZe USB
maintainable interface for a user of an analyZer to automati
cally ?lter USB tra?ic are provided.
match that device address and be ?ltered out). Therefore, to
aid in this situation the analyZer Would take into account its
oWn communication speed and that of the monitored bus.
Only if the device address and the speed of communication
match Would the packet Would be ?ltered out.
The speed of the monitor port Would be detected automati
cally through mechanisms not relevant to this invention. The
speed of communication port is determined before the cap
ture begins. It could therefore be automatically detected by
the analyZer, or transmitted to the analyZer through other
25
With a single host controller, even as they test multiple devices
of any speed, during a single capture.
DESCRIPTION OF THE DRAWINGS
FIGS. 3a-3b illustrate a How chart for a preferred embodi
ment of the invention for capturing USB data tra?ic for an
The foregoing and other objects, aspects, and advantages
of the invention Will be better understood from the folloWing
detailed description of the preferred embodiment of the
analyZer and a device on the same host controller. When an
30
analyZer is connected to a host controller via a USB cable 30,
the analyZer is enumerated 32. During the enumeration 32,
invention When taken in conjunction With the accompanying
draWings in Which:
the ho st controller allocates an address to the analyZer in order
to prepare for transmission of data to the analyZer and for the
FIG. 1 illustrates a typical setup for connecting an analyZer
to a USB system, Wherein the analyZer and a device are
connected to the same host controller.
FIG. 2 illustrates USB data tra?ic at various times for an
analyZer and a device connected to the same host controller.
FIGS. 3a-3b illustrate a How chart for a preferred embodi
35
ment of the invention for capturing USB data tra?ic for an
analyZer and a device connected to the same host controller.
40
reception of data from the analyZer.
Upon enumeration of the USB analyZer 32, the analyZer
stores its address for future use 34, as Well as its communi
cation speed. In an alternative embodiment, the analyZer’s
device address does not need to be stored upon enumeration.
It can also be determined by the analysis computer, and then
transmitted to the analyZer upon starting the capture of USB
data traf?c. Similarly, the analyZer’s communication speed
DETAILED DESCRIPTION OF THE PREFERRED
EMBODIMENTS
could be con?gured the same Way.
The analyZer can then be con?gured With a single input
45
from the user via a user interface to enable (or disable) the
Presently preferred embodiments of the present invention
provide methods for effectively monitoring USB data tra?ic
?ltering of packets intended for the analyZer’ s device address
on a single USB host controller by implementing a preferably
When the capture is started 38, the analyZer checks if the
?ltering of its device address is enabled 40. The analyZer can
check if the ?lter is enabled at the beginning of the USB data
capture, or, alternatively, it can check Whether the ?lter is
enabled at the reception of each packet.
If the ?lter is not enabled 40, then the analyZer alloWs all
packets through to the rest of the system. The analyZer Will
continuously read USB data from the stream 42, Write it to the
buffer 44, and check again to see if ?ltering is enabled 40.
36.
hardWare based ?lter that removes packets from a monitor
port intended for the analyZer. These packets are removed in
50
order to minimiZe the load on the capture buffers. Further
more, a graphical interface for this ?lter is provided to greatly
simplify the use of the analyZer. To apply this ?lter, the
graphical interface can have a check box to enable this ?lter,
a mechanism to call a single function With a single constant in
55
a programming API, or other user interface mechanisms to
enable this ?lter. This ?lter can remain valid and functional so
If the ?lter is enabled 40, then special ?ltering techniques
can be used to remove those packets intended for the analyZer
long as the settings are saved, even if the device address of the
analyZer changes.
In the preferred embodiment of the present invention, the
?ltering mechanism also takes into account the speed of the
60
from the captured data stream. In one example of such special
?ltering techniques, each packet in the USB data tra?ic is read
65
46 to determine Whether it is a Token packet identi?er 48
(herein referred to as a “Token PID”). If it is not a Token PID
48, or it is a Token PID that does not match the analyZer’s
device address 52 or if the speed does not match, then the
analyZer Writes the data to an outbound buffer 50, and reads
monitored bus. The USB protocol is de?ned in such a Way
that on a single host controller the device address space
(meaning the set of possible device addresses) of full-speed
(FS) and loW-speed (LS) communication is separate to that of
high-speed (HS). Therefore, it is possible for HS devices to
have the same device address of FS or LS devices on the same
the next piece of USB data 40. In comparing the speed of the
communication port and the monitor port, they are considered
US 8,417,840 B2
6
5
2. The method of claim 1, further comprising: transmitting
matched if the communication port is HS and the monitor port
is HS, or if the communication port is not HS and the monitor
port is not HS.
However, if the packet is a Token PID 48 that matches the
analyzer’s device address 52 and the communication speed of
the analyzer, then the analyzer does not Write that data to the
the ?ltered USB data to an analysis computer.
3. The method of claim 1, Wherein the monitored device
and the USB analyzer utilize a same USB host controller.
4. The method of claim 3, Wherein the ?ltering further
comprising:
outbound buffer. Instead, it transitions to a neW state and reads
if the USB packet comprises a token packet identi?er and if
the token packet identi?er has a target address not equal
the next piece of USB data 54. Once in this neW state, the
analyzer Will not Write any of the neW USB data into the buffer
ing to the analyzer address, storing the USB packet.
until a neW Token PID is received that does not match the
5. The method of claim 3, Wherein the ?ltering further
analyzer’s device address (since all interim non-Token pack
comprising:
ets are taken to be intended for the analyzer).
if the USB packet comprises a token packet identi?er and if
the token packet identi?er has a target address equaling
After the next piece of USB data is read, the analyzer
determines Whether the read USB data is a Token PID 56. If
the data is a Token PID, then the requested device address in
the Token PID is compared to the analyzer’s address and
speed to determine if the addresses match 52. If the addresses
and speed do not match, then the data is Written to the buffer
50. If the addresses and speed match, the analyzer does not
Write that data to the outbound buffer, and the next USB data
is read 54.
If the read USB data is not a Token PID, then it is deter
mined Whether the data is a corrupted PID 58. If the data is a
corrupted PID, then the data is Written to the buffer 50. If the
data is not a corrupted PID, then the next USB data is read 54.
In an alternative embodiment, the analyzer can ?lter only a
to the analyzer address, discarding the USB packet.
6. The method of claim 3, Wherein the ?ltering further
comprising: if the USB packet comprises a corrupted packet
identi?er, storing the USB packet.
20
target address not equaling to the analyzer address, the USB
packet is stored in the pass-through buffer of the USB ana
lyzer.
8. The method of claim 3, Wherein a graphical user inter
25
formed as a function of a packet type of the read USB packet.
packet types) intended for its device address.
10. A USB analyzer for capturing universal serial bus
(U SB) data tra?ic for a monitored device, comprising:
30
to the device can be seen on the analysis computer and ana
lyzed. As a general case, data to the analyzer itself Would be
?ltered out; and, as an option, tra?ic to the analyzer can also
be transmitted to the analysis computer if so desired.
It is important to note that other products and technologies
employ display ?lters to aid With the visualization of the data.
This is not to be confused With the type of ?ltering presented
by this invention. Display ?lters Work only on already cap
tured data, and only ?lter What has already been doWnloaded
to the analysis computer. This invention ?lters the packets
face is provided for enabling or disabling the ?ltering.
9. The method of claim 3, Wherein the ?ltering is per
subset of packets (e.g., those packets only matching certain
The data in the buffer is then transmitted to the analysis
computer via the host controller and thereby the USB tra?ic
7. The method of claim 3, Wherein the USB analyzer has a
pass-through buffer and if a token packet identi?er has a
35
a processor con?gured to:
read a USB packet; and
?lter USB data read from the USB packet at least in part
based on Whether the read USB data is associated With
a USB packet comprising a target address that is equal
to a stored analyzer address, and Whether a ?rst com
munication speed associated With the monitored
device matches With a second communication speed
associated With the USB analyzer; and
40
before they reach the capture buffer: thus, reducing the hard
a memory coupled to the processor and con?gured to pro
vide the processor With instructions.
Ware buffer usage, the load on the analysis computer, and the
11. The USB analyzer of claim 10, Wherein the processor is
intrusiveness of the analyzer. Display ?lters cannot prevent
the capture buffer from being overloaded and exhausted by
the unnecessary tra?ic described previously.
further con?gured to: transmit the ?ltered USB data to an
analysis computer.
45
While the present invention has been described With refer
ence to certain preferred embodiments or methods, it is to be
understood that the present invention is not limited to such
speci?c embodiments or methods. Rather, it is the inventor’s
contention that the invention be understood and construed in
troller.
13. The USB analyzer of claim 12, Wherein the processor is
50
its broadest meaning as re?ected by the folloWing claims.
Thus, these claims are to be understood as incorporating not
only the preferred methods described herein but all those
other and further alterations and modi?cations as Would be
apparent to those ordinary skilled in the art.
55
We Claim:
1. A method for capturing universal serial bus (USB) data
tra?ic for a monitored device by a USB analyzer, comprising:
reading a USB packet; and
?ltering USB data read from the USB packet at least in part
60
further con?gured to:
if the USB packet comprises a token packet identi?er and if
the token packet identi?er has a target address not equal
ing to the analyzer address, store the USB packet.
14. The USB analyzer of claim 12, Wherein the processor is
further con?gured to:
if the USB packet comprises a token packet identi?er and if
the token packet identi?er has a target address equaling
to the analyzer address, discard the USB packet.
15. The USB analyzer of claim 12, Wherein the processor is
further con?gured to: if the USB packet comprises a cor
rupted packet identi?er, store the USB packet.
16. The USB analyzer of claim 12, Wherein the USB ana
lyzer has a pass-through buffer and if a token packet identi?er
has a target address not equaling to the analyzer address, the
USB packet is stored in the pass-through buffer of the USB
based on Whether the read USB data is associated With a
USB packet comprising a target address that is equal to
a stored analyzer address, and Whether a ?rst communi
cation speed associated With the monitored device
matches With a second communication speed associated
With the USB analyzer.
12. The USB analyzer of claim 10, Wherein the monitored
device and the USB analyzer utilize a same USB host con
65
analyzer.
17. The USB analyzer of claim 12, further comprising a
graphical user interface for enabling or disabling the ?ltering.
US 8,417,840 B2
7
18. The USB analyzer of claim 12, wherein the ?ltering is
performed as a function of a packet type of the read USB
packet.
19. The USB analyzer of claim 10, Wherein ?ltering com
prises:
5
if the USB packet comprises a token packet identi?er, and
if the token packet identi?er has a target address that is
equal to the stored analyZer address, and if the ?rst
communication speed associated With the monitored
device matches With the second communication speed 10
associated With the USB analyZer, entering a state in
Which one or more subsequent read USB packets are
discarded.
20. The USB analyZer of claim 19, Wherein the state is
exited in the event that a neW token packet identi?er is 15
received and that the neW token packet identi?er has a target
address that is not equal to the stored analyZer address.
21. The USB analyZer of claim 10, Wherein the analyZer
address is assigned by an analysis computer having a USB
host controller.
20