2 |
- |
1 |
.TH USB 3
|
|
|
2 |
.EQ
|
|
|
3 |
delim $$
|
|
|
4 |
.EN
|
|
|
5 |
.SH NAME
|
|
|
6 |
usb \- USB Host Controller Interface
|
|
|
7 |
.SH SYNOPSIS
|
|
|
8 |
.nf
|
|
|
9 |
.B bind -a #u /dev
|
|
|
10 |
.PP
|
|
|
11 |
.nf
|
|
|
12 |
.B /dev/usb
|
|
|
13 |
.B /dev/usb/ctl
|
|
|
14 |
.BI /dev/usb/ep N . M
|
|
|
15 |
.BI /dev/usb/ep N . M /data
|
|
|
16 |
.BI /dev/usb/ep N . M /ctl
|
|
|
17 |
\&...
|
|
|
18 |
.fi
|
|
|
19 |
.SH DESCRIPTION
|
|
|
20 |
The Universal Serial Bus is a complex yet popular bus
|
|
|
21 |
for connecting all kind of devices to a computer.
|
|
|
22 |
It is a four-wire tree-shaped bus that provides both communication and (limited)
|
|
|
23 |
power to devices.
|
|
|
24 |
Branching points in the tree are provided by devices called
|
|
|
25 |
.IR hubs .
|
|
|
26 |
Hubs provide ports where USB devices (also hubs) can be attached.
|
|
|
27 |
.PP
|
|
|
28 |
Most PCs have one or more USB controllers called
|
|
|
29 |
.I host
|
|
|
30 |
controllers.
|
|
|
31 |
Each one has a built-in hub called a
|
|
|
32 |
.I "root hub"
|
|
|
33 |
providing several ports.
|
|
|
34 |
In some cases, more hubs are built-in
|
|
|
35 |
and attached to a root hub port.
|
|
|
36 |
The topology of the network is a tree with at most
|
|
|
37 |
127 nodes, counting both internal and leaf nodes.
|
|
|
38 |
.PP
|
|
|
39 |
Host controllers come in four flavours:
|
|
|
40 |
UHCI and OHCI for USB 1 (up to 12 Mb/s),
|
|
|
41 |
EHCI for USB 2 (up to 480 Mb/s)
|
|
|
42 |
and
|
|
|
43 |
XHCI for USB 3 (up to 5 Gb/s).
|
|
|
44 |
We currently support all but XHCI, which is still quite new.
|
|
|
45 |
.PP
|
|
|
46 |
The USB bus is fully controlled by the host; all devices are polled.
|
|
|
47 |
Hubs are passive in the sense that they do not poll the devices attached
|
|
|
48 |
to them.
|
|
|
49 |
The host polls those devices and the hubs merely route the messages.
|
|
|
50 |
.PP
|
|
|
51 |
Devices may be added to or removed from the bus at any time.
|
|
|
52 |
When a device is attached, the host queries it to determine its type and speed.
|
|
|
53 |
The querying process is standardized.
|
|
|
54 |
The first level of querying is the same for all devices,
|
|
|
55 |
the next is somewhat specialized
|
|
|
56 |
for particular classes of devices (such as mice, keyboards, or audio devices).
|
|
|
57 |
Specialization continues as subclasses and subsubclasses are explored.
|
|
|
58 |
.PP
|
|
|
59 |
Enumeration of the bus and initial configuration of devices is done
|
|
|
60 |
by a user level program,
|
|
|
61 |
.IR usbd (4).
|
|
|
62 |
Device drivers are implemented by separate user programs, although
|
|
|
63 |
some of them may be statically linked into
|
|
|
64 |
.IR usbd .
|
|
|
65 |
.PP
|
|
|
66 |
The kernel device described in this page is responsible for providing
|
|
|
67 |
I/O for using the devices through so called
|
|
|
68 |
.IR endpoints .
|
|
|
69 |
Access to the host controller is hidden from user programs, which see
|
|
|
70 |
just a set of endpoints.
|
|
|
71 |
After system initialization, some endpoints
|
|
|
72 |
are created by the device to permit I/O to root hubs.
|
|
|
73 |
All other devices must be configured by
|
|
|
74 |
.IR usbd .
|
|
|
75 |
.SS Devices and Endpoints
|
|
|
76 |
A device includes one or more functions (e.g., audio output,
|
|
|
77 |
volume control buttons, mouse input, etc.)
|
|
|
78 |
Communication with device functions is performed
|
|
|
79 |
by some combination of
|
|
|
80 |
issuing control requests to, sending data to, and receiving data from
|
|
|
81 |
device
|
|
|
82 |
.IR endpoints .
|
|
|
83 |
Endpoints can be understood as addresses in the bus.
|
|
|
84 |
There are several types:
|
|
|
85 |
.TF "\fIIsochronous
|
|
|
86 |
.TP
|
|
|
87 |
.I Control
|
|
|
88 |
Their main use is to configure devices.
|
|
|
89 |
Writing a message with a specific format
|
|
|
90 |
(specified in the USB specification)
|
|
|
91 |
issues a request to the device.
|
|
|
92 |
If the request implies a reply,
|
|
|
93 |
a read can be made next to retrieve the requested data (if the write succeeded).
|
|
|
94 |
.TP
|
|
|
95 |
.I Interrupt
|
|
|
96 |
Used to send and receive messages to or from a specific device function
|
|
|
97 |
(e.g., to read events from a mouse).
|
|
|
98 |
.TP
|
|
|
99 |
.I Bulk
|
|
|
100 |
Used to send and receive larger amounts of data through streams
|
|
|
101 |
(e.g., to write blocks to a disk).
|
|
|
102 |
.TP
|
|
|
103 |
.I Isochronous
|
|
|
104 |
Used to send and receive data in a timely manner
|
|
|
105 |
(e.g., to write audio samples to a speaker).
|
|
|
106 |
.PD
|
|
|
107 |
.PP
|
|
|
108 |
All USB devices include at least
|
|
|
109 |
a control endpoint to perform device configuration.
|
|
|
110 |
This is called the
|
|
|
111 |
.I setup
|
|
|
112 |
endpoint or
|
|
|
113 |
.IR "endpoint zero" .
|
|
|
114 |
After configuring a device, other endpoints may be created
|
|
|
115 |
as dictated by the device to perform actual I/O.
|
|
|
116 |
.SS Operation
|
|
|
117 |
Bus enumeration and device configuration is performed by
|
|
|
118 |
.IR usbd (4)
|
|
|
119 |
and not by this driver.
|
|
|
120 |
The driver provides an interface
|
|
|
121 |
to access existing endpoints (initially those for the built-in root hubs),
|
|
|
122 |
to create and configure other ones, and to perform I/O through them.
|
|
|
123 |
.PP
|
|
|
124 |
Each directory
|
|
|
125 |
.BI /dev/usb/ep N . M
|
|
|
126 |
represents an endpoint, where
|
|
|
127 |
.I N
|
|
|
128 |
is a number identifying a device and
|
|
|
129 |
.I M
|
|
|
130 |
is a number identifying one of its endpoints.
|
|
|
131 |
.PP
|
|
|
132 |
For each device attached to the bus, and configured by
|
|
|
133 |
.IR usbd (4),
|
|
|
134 |
an endpoint zero (a
|
|
|
135 |
.I setup
|
|
|
136 |
endpoint)
|
|
|
137 |
is provided at
|
|
|
138 |
.BI /dev/usb/ep N .0
|
|
|
139 |
for configuring the device.
|
|
|
140 |
This is always a control endpoint and represents the device itself.
|
|
|
141 |
.PP
|
|
|
142 |
The device driver may use the setup endpoint
|
|
|
143 |
to issue control requests and perhaps to create more endpoints for the device.
|
|
|
144 |
Each new endpoint created has its own directory as said above.
|
|
|
145 |
For example, if the driver for the device
|
|
|
146 |
.BI /dev/usb/ep N . 0
|
|
|
147 |
creates the endpoint number 3 for that device, a directory
|
|
|
148 |
.BI /dev/usb/ep N .3
|
|
|
149 |
will be available to access that endpoint.
|
|
|
150 |
.PP
|
|
|
151 |
All endpoint directories contain two files:
|
|
|
152 |
.B data
|
|
|
153 |
and
|
|
|
154 |
.BR ctl .
|
|
|
155 |
The former has mode bit
|
|
|
156 |
.B DMEXCL
|
|
|
157 |
set and can be open by only one process at a time.
|
|
|
158 |
.SS data
|
|
|
159 |
.PP
|
|
|
160 |
The
|
|
|
161 |
.B data
|
|
|
162 |
file is used to perform actual I/O.
|
|
|
163 |
In general, reading from it retrieves
|
|
|
164 |
data from the endpoint and writing into it sends data to the endpoint.
|
|
|
165 |
For control endpoints, writing to this file issues a control request
|
|
|
166 |
(which may include data); if the request retrieves data from the device,
|
|
|
167 |
a following read on the file will provide such data.
|
|
|
168 |
.PP
|
|
|
169 |
USB errors reported by the endpoint upon I/O failures
|
|
|
170 |
are passed to the user process through the error string.
|
|
|
171 |
I/O stalls not resulting from an error, usually
|
|
|
172 |
an indication from the device, are reported by indicating that the
|
|
|
173 |
number of bytes transferred has been zero.
|
|
|
174 |
In most cases, the correct course of action after noticing the stall
|
|
|
175 |
is for the device driver to issue a `clear halt' request (see
|
|
|
176 |
.I unstall
|
|
|
177 |
in
|
|
|
178 |
.IR usb (2))
|
|
|
179 |
to resume I/O.
|
|
|
180 |
The most common error is
|
|
|
181 |
.L crc/timeout
|
|
|
182 |
indicating problems in communication with the device (eg., a physical
|
|
|
183 |
detach of the device or a wiring problem).
|
|
|
184 |
.PP
|
|
|
185 |
For control and isochronous transfers, there is an implicit
|
|
|
186 |
timeout performed by the kernel and it is not necessary for applications
|
|
|
187 |
to place their own timers.
|
|
|
188 |
For other transfer types, the kernel will not time out any operation
|
|
|
189 |
by default
|
|
|
190 |
(but see the
|
|
|
191 |
.L timeout
|
|
|
192 |
control request).
|
|
|
193 |
.SS "ctl and status"
|
|
|
194 |
.PP
|
|
|
195 |
The
|
|
|
196 |
.B ctl
|
|
|
197 |
file can be read to learn about the endpoint.
|
|
|
198 |
It contains information that can be used
|
|
|
199 |
to locate a particular device (or endpoint).
|
|
|
200 |
It also accepts writes with textual control requests described later.
|
|
|
201 |
.PP
|
|
|
202 |
This may result from the read of an endpoint control file:
|
|
|
203 |
.IP
|
|
|
204 |
.EX
|
|
|
205 |
.I "(the first line is wrapped to make it fit here)"
|
|
|
206 |
.ft L
|
|
|
207 |
enabled control rw speed full maxpkt 64 pollival 0
|
|
|
208 |
samplesz 0 hz 0 hub 1 port 3 busy
|
|
|
209 |
storage csp 0x500608 vid 0x951 did 0x1613 Kingston 'DT 101 II'
|
|
|
210 |
.ft
|
|
|
211 |
.EE
|
|
|
212 |
.LP
|
|
|
213 |
The first line contains status information.
|
|
|
214 |
The rest is information supplied by
|
|
|
215 |
.IR usbd (4)
|
|
|
216 |
as an aid to locate devices.
|
|
|
217 |
The status information includes:
|
|
|
218 |
.TF "\fREndpoint mode
|
|
|
219 |
.PD
|
|
|
220 |
.TP
|
|
|
221 |
Device state
|
|
|
222 |
One of
|
|
|
223 |
.BR config ,
|
|
|
224 |
.BR enabled ,
|
|
|
225 |
and
|
|
|
226 |
.BR detached .
|
|
|
227 |
An endpoint starts in the
|
|
|
228 |
.B config
|
|
|
229 |
state, and accepts control commands written to its
|
|
|
230 |
.B ctl
|
|
|
231 |
file to configure the endpoint.
|
|
|
232 |
When configured, the
|
|
|
233 |
state is
|
|
|
234 |
.B enabled
|
|
|
235 |
and the
|
|
|
236 |
.B data
|
|
|
237 |
file is used as described above (several control requests can still
|
|
|
238 |
be issued to its
|
|
|
239 |
.B ctl
|
|
|
240 |
file, but most will not be accepted from now on).
|
|
|
241 |
Upon severe errors, perhaps a physical
|
|
|
242 |
detachment from the bus, the endpoint enters the
|
|
|
243 |
.B detached
|
|
|
244 |
state and no further I/O is accepted on it.
|
|
|
245 |
Files for an endpoint (including its directory)
|
|
|
246 |
vanish when the device is detached and its files are no longer open.
|
|
|
247 |
Root hubs may not be detached.
|
|
|
248 |
.TP
|
|
|
249 |
Endpoint type
|
|
|
250 |
.BR control ,
|
|
|
251 |
.BR iso ,
|
|
|
252 |
.BR interrupt ,
|
|
|
253 |
or
|
|
|
254 |
.BR bulk ,
|
|
|
255 |
indicating the type of transfer supported by the endpoint.
|
|
|
256 |
.TP
|
|
|
257 |
Endpoint mode
|
|
|
258 |
One of
|
|
|
259 |
.BR r ,
|
|
|
260 |
.BR w ,
|
|
|
261 |
or
|
|
|
262 |
.BR rw ,
|
|
|
263 |
depending on the direction of the endpoint (in, out, or inout).
|
|
|
264 |
.TP
|
|
|
265 |
Speed
|
|
|
266 |
.BR low
|
|
|
267 |
(1.5 Mb/s),
|
|
|
268 |
.BR full
|
|
|
269 |
(12 Mb/s),
|
|
|
270 |
or
|
|
|
271 |
.BR high
|
|
|
272 |
(480 Mb/s).
|
|
|
273 |
.TP
|
|
|
274 |
Maximum packet size
|
|
|
275 |
Used when performing I/O on the data file.
|
|
|
276 |
.TP
|
|
|
277 |
Polling interval
|
|
|
278 |
The polling period expressed as a number of µframes
|
|
|
279 |
(for high-speed endpoints) or frames (for low- and full-speed endpoints).
|
|
|
280 |
Note that a µframe takes 125 µs while a frame takes 1 ms.
|
|
|
281 |
This is only of relevance for interrupt and isochronous endpoints.
|
|
|
282 |
This value determines how often I/O happens.
|
|
|
283 |
Note that the control request adjusting the polling interval does
|
|
|
284 |
.I not
|
|
|
285 |
use these units, to make things easier for USB device drivers.
|
|
|
286 |
.TP
|
|
|
287 |
Sample size
|
|
|
288 |
Number of bytes per I/O sample (isochronous endpoints only).
|
|
|
289 |
.TP
|
|
|
290 |
Frequency
|
|
|
291 |
Number of samples per second (Hertz).
|
|
|
292 |
.TP
|
|
|
293 |
Hub address
|
|
|
294 |
Device address of the hub where the device is attached.
|
|
|
295 |
.TP
|
|
|
296 |
Port number
|
|
|
297 |
Port number (in the hub) where the device is attached.
|
|
|
298 |
.TP
|
|
|
299 |
Usage
|
|
|
300 |
.L busy
|
|
|
301 |
while the data file is open and
|
|
|
302 |
.L idle
|
|
|
303 |
otherwise.
|
|
|
304 |
This is useful to avoid disturbing endpoints already run
|
|
|
305 |
by a device driver.
|
|
|
306 |
.LP
|
|
|
307 |
The second line contains information describing the device:
|
|
|
308 |
.TF "\fRDevice strings
|
|
|
309 |
.PD
|
|
|
310 |
.TP
|
|
|
311 |
Class name
|
|
|
312 |
As provided by the device itself.
|
|
|
313 |
.TP
|
|
|
314 |
CSP
|
|
|
315 |
Class, Subclass, and Protocol for the device.
|
|
|
316 |
If the device contains different functions and has more CSPs,
|
|
|
317 |
all of them will be listed.
|
|
|
318 |
The first one is that of the device itself.
|
|
|
319 |
For example,
|
|
|
320 |
a mouse and keyboard combo may identify itself as a keyboard but
|
|
|
321 |
then include two CSPs, one for the keyboard and another one for the mouse.
|
|
|
322 |
.TP
|
|
|
323 |
Vid and Did
|
|
|
324 |
Vendor and device identifiers.
|
|
|
325 |
.TP
|
|
|
326 |
Device strings
|
|
|
327 |
Provided by the device and identifying the manufacturer and type of device.
|
|
|
328 |
.LP
|
|
|
329 |
For example, to find a mouse not yet in use by a driver, scan the
|
|
|
330 |
.B ctl
|
|
|
331 |
files for
|
|
|
332 |
.BR enabled ,
|
|
|
333 |
.BR idle ,
|
|
|
334 |
and
|
|
|
335 |
.BR "csp 0x020103" .
|
|
|
336 |
A mouse belongs to class 3 (in the least significant byte),
|
|
|
337 |
.IR "human interface device" ,
|
|
|
338 |
subclass 1,
|
|
|
339 |
.IR boot ,
|
|
|
340 |
protocol 2,
|
|
|
341 |
.I mouse
|
|
|
342 |
(protocol 1 would be the keyboard).
|
|
|
343 |
USB class, subclass and proto codes can be found at
|
|
|
344 |
.BR http://www.usb.org .
|
|
|
345 |
.SS Control requests
|
|
|
346 |
Endpoint control files accept the following requests.
|
|
|
347 |
In most cases
|
|
|
348 |
the driver does not issue them, leaving the task to either
|
|
|
349 |
.IR usbd (4)
|
|
|
350 |
or the usb driver library documented in
|
|
|
351 |
.IR usb (2).
|
|
|
352 |
.TF "\fLsamplehz\fI n
|
|
|
353 |
.TP
|
|
|
354 |
.B detach
|
|
|
355 |
Prevent further I/O on the device (delete the endpoint)
|
|
|
356 |
and remove its file interface as soon as no process is using their files.
|
|
|
357 |
.TP
|
|
|
358 |
.BI maxpkt " n"
|
|
|
359 |
Set the maximum packet size to
|
|
|
360 |
.I n
|
|
|
361 |
bytes.
|
|
|
362 |
.TP
|
|
|
363 |
.BI pollival " n"
|
|
|
364 |
Only for interrupt and isochronous endpoints.
|
|
|
365 |
Set the polling interval as a function of the value
|
|
|
366 |
.I n
|
|
|
367 |
given by the endpoint descriptor.
|
|
|
368 |
The interval value used is the period
|
|
|
369 |
.I n
|
|
|
370 |
in bus time units for low- and full-speed interrupt endpoints.
|
|
|
371 |
Otherwise, the actual interval is
|
|
|
372 |
$2 sup n$
|
|
|
373 |
and not
|
|
|
374 |
.IR n .
|
|
|
375 |
Bus time units are 1 ms for low- and full-speed endpoints and 125 µs for
|
|
|
376 |
high-speed endpoints.
|
|
|
377 |
In most cases, the device driver may ignore
|
|
|
378 |
all this and issue the control request supplying the
|
|
|
379 |
polling interval value as found
|
|
|
380 |
in the endpoint descriptor.
|
|
|
381 |
The kernel adjusts the value according
|
|
|
382 |
to the endpoint configuration and converts it into the number of
|
|
|
383 |
frames or µframes between two consecutive polls.
|
|
|
384 |
.TP
|
|
|
385 |
.BI samplesz " n"
|
|
|
386 |
Use
|
|
|
387 |
.I n
|
|
|
388 |
as the number of bytes per sample.
|
|
|
389 |
.TP
|
|
|
390 |
.BI hz " n"
|
|
|
391 |
Use
|
|
|
392 |
.I n
|
|
|
393 |
as the number of samples per second.
|
|
|
394 |
.TP
|
|
|
395 |
.BI ntds " n"
|
|
|
396 |
Use
|
|
|
397 |
.I n
|
|
|
398 |
as the number of transactions per frame (or µframe), as reported
|
|
|
399 |
by the descriptor.
|
|
|
400 |
.TP
|
|
|
401 |
.B clrhalt
|
|
|
402 |
Clear the halt condition for an endpoint.
|
|
|
403 |
Used to recover from a stall caused by a device to signal its driver
|
|
|
404 |
(usually due to an unknown request or a failure to complete one).
|
|
|
405 |
.TP
|
|
|
406 |
.BI info " string"
|
|
|
407 |
Replaces description information in
|
|
|
408 |
.B ctl
|
|
|
409 |
with
|
|
|
410 |
.IR string .
|
|
|
411 |
.IR Usbd (4)
|
|
|
412 |
uses this to add device descriptions.
|
|
|
413 |
.TP
|
|
|
414 |
.B address
|
|
|
415 |
Tell this driver that the device has been given an address,
|
|
|
416 |
which causes the device to enter the
|
|
|
417 |
.I enabled
|
|
|
418 |
state.
|
|
|
419 |
.TP
|
|
|
420 |
.BI name " str"
|
|
|
421 |
Generates an additional file name,
|
|
|
422 |
.I str ,
|
|
|
423 |
for the
|
|
|
424 |
.B data
|
|
|
425 |
file of the endpoint.
|
|
|
426 |
This file name appears in the root directory of the
|
|
|
427 |
.L #u
|
|
|
428 |
tree.
|
|
|
429 |
For example, this is used by the audio device
|
|
|
430 |
driver to make the
|
|
|
431 |
.B data
|
|
|
432 |
file also available as
|
|
|
433 |
.BR /dev/audio .
|
|
|
434 |
.TP
|
|
|
435 |
.BI debug " n"
|
|
|
436 |
Enable debugging of the endpoint.
|
|
|
437 |
.I N
|
|
|
438 |
is an integer;
|
|
|
439 |
larger values make diagnostics more verbose.
|
|
|
440 |
.L 0
|
|
|
441 |
stops debugging diagnostics.
|
|
|
442 |
.L 1
|
|
|
443 |
causes just problem reports.
|
|
|
444 |
Bigger values report almost everything.
|
|
|
445 |
.TP
|
|
|
446 |
.BI timeout " n"
|
|
|
447 |
Enable time-outs for the endpoint.
|
|
|
448 |
Transfers are timed out by the kernel after
|
|
|
449 |
.I n
|
|
|
450 |
ms.
|
|
|
451 |
This should not be used for control and isochronous endpoints,
|
|
|
452 |
which are always timed out.
|
|
|
453 |
.PD
|
|
|
454 |
.LP
|
|
|
455 |
Setup endpoints
|
|
|
456 |
(those represented by
|
|
|
457 |
.BI ep N .0
|
|
|
458 |
directories)
|
|
|
459 |
also accept the following requests:
|
|
|
460 |
.TP
|
|
|
461 |
.BI new " n type mode"
|
|
|
462 |
Creates a new endpoint with number
|
|
|
463 |
.I n
|
|
|
464 |
of the given
|
|
|
465 |
.IR type
|
|
|
466 |
(\c
|
|
|
467 |
.BR ctl ,
|
|
|
468 |
.BR bulk ,
|
|
|
469 |
.BR intr ,
|
|
|
470 |
or
|
|
|
471 |
.BR iso ).
|
|
|
472 |
.I Mode
|
|
|
473 |
may be
|
|
|
474 |
.BR r ,
|
|
|
475 |
.BR w ,
|
|
|
476 |
or
|
|
|
477 |
.BR rw ,
|
|
|
478 |
which creates, respectively, an input, output, or input/output endpoint.
|
|
|
479 |
.TP
|
|
|
480 |
.B "speed {low|full|high}
|
|
|
481 |
Set the endpoint speed to full, low, or high, respectively.
|
|
|
482 |
.TP
|
|
|
483 |
.B hub
|
|
|
484 |
Tell this driver that the endpoint corresponds to a hub device.
|
|
|
485 |
.PD
|
|
|
486 |
.PP
|
|
|
487 |
Setup endpoints for hub devices also accept his request:
|
|
|
488 |
.TP
|
|
|
489 |
.B "newdev {low|full|high} \fIport\fP
|
|
|
490 |
Create a new setup endpoint to represent a new device.
|
|
|
491 |
The first argument is the device speed.
|
|
|
492 |
.I Port
|
|
|
493 |
is the port number where the device is attached
|
|
|
494 |
(the hub is implied by the endpoint where the control request is issued).
|
|
|
495 |
.PD
|
|
|
496 |
.PP
|
|
|
497 |
The file
|
|
|
498 |
.B /dev/usb/ctl
|
|
|
499 |
provides all the information provided by the various
|
|
|
500 |
.B ctl
|
|
|
501 |
files when read.
|
|
|
502 |
It accepts several requests that refer to
|
|
|
503 |
the entire driver and not to particular endpoints:
|
|
|
504 |
.TF "\fLdebug \fIn"
|
|
|
505 |
.TP
|
|
|
506 |
.B "debug \fIn\fP
|
|
|
507 |
Sets the global debug flag to
|
|
|
508 |
.IR n .
|
|
|
509 |
.TP
|
|
|
510 |
.B dump
|
|
|
511 |
Dumps data structures for inspection.
|
|
|
512 |
.SH FILES
|
|
|
513 |
.TF #u/usb
|
|
|
514 |
.TP
|
|
|
515 |
.B #u/usb
|
|
|
516 |
root of the USB interface
|
|
|
517 |
.SH SOURCE
|
|
|
518 |
.B /sys/src/9/port/usb.h
|
|
|
519 |
.br
|
|
|
520 |
.B /sys/src/9/*/*usb?hci.h
|
|
|
521 |
.br
|
|
|
522 |
.B /sys/src/9/*/devusb.c
|
|
|
523 |
.br
|
|
|
524 |
.B /sys/src/9/*/usb?hci*.c
|
|
|
525 |
.SH "SEE ALSO"
|
|
|
526 |
.IR usb (2),
|
|
|
527 |
.IR usb (4),
|
|
|
528 |
.IR usbd (4),
|
|
|
529 |
.IR plan9.ini (8)
|
|
|
530 |
.SH BUGS
|
|
|
531 |
USB controllers limit the speed of all their ports
|
|
|
532 |
to that of the slowest device connected to any one of them.
|
|
|
533 |
.PP
|
|
|
534 |
Isochronous input streams are not implemented for OHCI.
|
|
|
535 |
.PP
|
|
|
536 |
Some EHCI controllers drop completion interrupts and so must
|
|
|
537 |
be polled, which hurts throughput.
|