1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
|
.\"
.\" Copyright (c) 2010 AnyWi Technologies
.\" All rights reserved.
.\"
.\" Permission to use, copy, modify, and distribute this software for any
.\" purpose with or without fee is hereby granted, provided that the above
.\" copyright notice and this permission notice appear in all copies.
.\"
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
.\" $FreeBSD$
.\"
.Dd November 9, 2010
.Dt USB_QUIRK 4
.Os
.Sh NAME
.Nm usb_quirk
.Nd USB quirks module
.Sh SYNOPSIS
To compile this module into the kernel,
place the following line in your
kernel configuration file:
.Bd -ragged -offset indent
.Cd "device usb"
.Ed
.Pp
Alternatively, to load the module at boot
time, place the following line in
.Xr loader.conf 5 :
.Bd -literal -offset indent
usb_quirk_load="YES"
.Ed
.Sh DESCRIPTION
The
.Nm
module provides support for dynamically adding and removing quirks for
USB devices with
.Xr usbconfig 5 .
.Sh General quirks:
.Bl -tag -width Ds
.It UQ_AUDIO_SWAP_LR
swap left and right channels
.It UQ_AU_INP_ASYNC
input is async despite claim of adaptive
.It UQ_AU_NO_FRAC
don't adjust for fractional samples
.It UQ_AU_NO_XU
audio device has broken extension unit
.It UQ_BAD_ADC
bad audio spec version number
.It UQ_BAD_AUDIO
device claims audio class, but isn't
.It UQ_BROKEN_BIDIR
printer has broken bidir mode
.It UQ_BUS_POWERED
device is bus powered, despite claim
.It UQ_HID_IGNORE
device should be ignored by hid class
.It UQ_KBD_IGNORE
device should be ignored by kbd class
.It UQ_KBD_BOOTPROTO
device should set the boot protocol
.It UQ_MS_BAD_CLASS
doesn't identify properly
.It UQ_MS_LEADING_BYTE
mouse sends an unknown leading byte
.It UQ_MS_REVZ
mouse has Z-axis reversed
.It UQ_NO_STRINGS
string descriptors are broken
.It UQ_OPEN_CLEARSTALL
device needs clear endpoint stall
.It UQ_POWER_CLAIM
hub lies about power status
.It UQ_SPUR_BUT_UP
spurious mouse button up events
.It UQ_SWAP_UNICODE
has some Unicode strings swapped
.It UQ_CFG_INDEX_1
select configuration index 1 by default
.It UQ_CFG_INDEX_2
select configuration index 2 by default
.It UQ_CFG_INDEX_3
select configuration index 3 by default
.It UQ_CFG_INDEX_4
select configuration index 4 by default
.It UQ_CFG_INDEX_0
select configuration index 0 by default
.It UQ_ASSUME_CM_OVER_DATA
assume cm over data feature
.El
.Sh USB Mass Storage Quirks
.Bl -tag -width Ds
.It UQ_MSC_NO_TEST_UNIT_READY
send start/stop instead of TUR
.It UQ_MSC_NO_RS_CLEAR_UA
does not reset Unit Att.
.It UQ_MSC_NO_START_STOP
does not support start/stop
.It UQ_MSC_NO_GETMAXLUN
does not support get max LUN
.It UQ_MSC_NO_INQUIRY
fake generic inq response
.It UQ_MSC_NO_INQUIRY_EVPD
does not support inq EVPD
.It UQ_MSC_NO_SYNC_CACHE
does not support sync cache
.It UQ_MSC_SHUTTLE_INIT
requires Shuttle init sequence
.It UQ_MSC_ALT_IFACE_1
switch to alternate interface 1
.It UQ_MSC_FLOPPY_SPEED
does floppy speeds (20kb/s)
.It UQ_MSC_IGNORE_RESIDUE
gets residue wrong
.It UQ_MSC_WRONG_CSWSIG
uses wrong CSW signature
.It UQ_MSC_RBC_PAD_TO_12
pad RBC requests to 12 bytes
.It UQ_MSC_READ_CAP_OFFBY1
reports sector count, not max sec.
.It UQ_MSC_FORCE_SHORT_INQ
does not support full inq.
.It UQ_MSC_FORCE_WIRE_BBB
force BBB wire protocol
.It UQ_MSC_FORCE_WIRE_CBI
force CBI wire protocol
.It UQ_MSC_FORCE_WIRE_CBI_I
force CBI with int. wire protocol
.It UQ_MSC_FORCE_PROTO_SCSI
force SCSI command protocol
.It UQ_MSC_FORCE_PROTO_ATAPI
force ATAPI command protocol
.It UQ_MSC_FORCE_PROTO_UFI
force UFI command protocol
.It UQ_MSC_FORCE_PROTO_RBC
force RBC command protocol
.El
.Sh Mass Storage Change (u3g) quirks:
.Bl -tag -width Ds
.It UQ_MSC_EJECT_HUAWEI
ejects after Huawei USB command
.It UQ_MSC_EJECT_SIERRA
ejects after Sierra USB command
.It UQ_MSC_EJECT_SCSIEJECT
ejects after SCSI eject command
0x1b0000000200
.It UQ_MSC_EJECT_REZERO
ejects after SCSI rezero command
0x010000000000
.It UQ_MSC_EJECT_ZTESTOR
ejects after ZTE SCSI command
0x850101011801010101010000
.It UQ_MSC_EJECT_CMOTECH
ejects after C-motech SCSI command
0xff52444556434847
.It UQ_MSC_EJECT_WAIT
wait for the device to eject
.It UQ_MSC_EJECT_SAEL_M460
ejects after Sael USB commands
.It UQ_MSC_EJECT_HUAWEISCSI
ejects after Huawei SCSI command
0x11060000000000000000000000000000
.It UQ_MSC_EJECT_TCT
ejects after TCT SCSI command
0x06f504025270
.El
See
.Pa /sys/dev/usb/quirk/usb_quirk.h
for the complete list of supported quirks.
.Sh EXAMPLES
After attaching a
.Nm u3g
device which appears as a USB device on
.Pa ugen0.3 :
.Bd -literal -offset indent
usbconfig -d ugen0.3 add_quirk UQ_MSC_EJECT_WAIT
.Ed
.Sh SEE ALSO
.Xr usbconfig 5
.Sh HISTORY
The
.Nm
module appeared in
.Fx 8.0 ,
and was written by
.An Hans Petter Selasky Aq hselasky@FreeBSD.org .
This manual page was written by
.An Nick Hibma Aq n_hibma@FreeBSD.org .
|