2 .\" Copyright (c) 2010 AnyWi Technologies
3 .\" All rights reserved.
5 .\" Permission to use, copy, modify, and distribute this software for any
6 .\" purpose with or without fee is hereby granted, provided that the above
7 .\" copyright notice and this permission notice appear in all copies.
9 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
26 To compile this module into the kernel,
27 place the following line in your
28 kernel configuration file:
29 .Bd -ragged -offset indent
33 Alternatively, to load the module at boot
34 time, place the following line in
36 .Bd -literal -offset indent
42 module provides support for dynamically adding and removing quirks for
48 swap left and right channels
50 input is async despite claim of adaptive
52 do not adjust for fractional samples
54 audio device has broken extension unit
55 .It UQ_AU_VENDOR_CLASS
56 audio device uses vendor class to identify itself
57 .It UQ_AU_SET_SPDIF_CM6206
58 audio device needs special programming to enable S/PDIF audio output
60 bad audio spec version number
62 device claims audio class, but is not
64 printer has broken bidir mode
66 device is bus powered, despite claim
68 device should be ignored by hid class
70 device should be ignored by kbd class
72 device should set the boot protocol
74 device should be ignored by ums class
76 does not identify properly
77 .It UQ_MS_LEADING_BYTE
78 mouse sends an unknown leading byte
80 mouse has Z-axis reversed
82 string descriptors are broken
84 hub lies about power status
86 spurious mouse button up events
88 has some Unicode strings swapped
90 select configuration index 1 by default
92 select configuration index 2 by default
94 select configuration index 3 by default
96 select configuration index 4 by default
98 select configuration index 0 by default
99 .It UQ_ASSUME_CM_OVER_DATA
100 assume cm over data feature
102 .Sh USB Mass Storage quirks:
104 .It UQ_MSC_NO_TEST_UNIT_READY
105 send start/stop instead of TUR
106 .It UQ_MSC_NO_RS_CLEAR_UA
107 does not reset Unit Att.
108 .It UQ_MSC_NO_START_STOP
109 does not support start/stop
110 .It UQ_MSC_NO_GETMAXLUN
111 does not support get max LUN
112 .It UQ_MSC_NO_INQUIRY
113 fake generic inq response
114 .It UQ_MSC_NO_INQUIRY_EVPD
115 does not support inq EVPD
116 .It UQ_MSC_NO_SYNC_CACHE
117 does not support sync cache
118 .It UQ_MSC_SHUTTLE_INIT
119 requires Shuttle init sequence
120 .It UQ_MSC_ALT_IFACE_1
121 switch to alternate interface 1
122 .It UQ_MSC_FLOPPY_SPEED
123 does floppy speeds (20kb/s)
124 .It UQ_MSC_IGNORE_RESIDUE
126 .It UQ_MSC_WRONG_CSWSIG
127 uses wrong CSW signature
128 .It UQ_MSC_RBC_PAD_TO_12
129 pad RBC requests to 12 bytes
130 .It UQ_MSC_READ_CAP_OFFBY1
131 reports sector count, not max sec.
132 .It UQ_MSC_FORCE_SHORT_INQ
133 does not support full inq.
134 .It UQ_MSC_FORCE_WIRE_BBB
135 force BBB wire protocol
136 .It UQ_MSC_FORCE_WIRE_CBI
137 force CBI wire protocol
138 .It UQ_MSC_FORCE_WIRE_CBI_I
139 force CBI with int. wire protocol
140 .It UQ_MSC_FORCE_PROTO_SCSI
141 force SCSI command protocol
142 .It UQ_MSC_FORCE_PROTO_ATAPI
143 force ATAPI command protocol
144 .It UQ_MSC_FORCE_PROTO_UFI
145 force UFI command protocol
146 .It UQ_MSC_FORCE_PROTO_RBC
147 force RBC command protocol
149 .Sh 3G Datacard (u3g) quirks:
151 .It UQ_MSC_EJECT_HUAWEI
152 ejects after Huawei USB command
153 .It UQ_MSC_EJECT_SIERRA
154 ejects after Sierra USB command
155 .It UQ_MSC_EJECT_SCSIEJECT
156 ejects after SCSI eject command
158 .It UQ_MSC_EJECT_REZERO
159 ejects after SCSI rezero command
161 .It UQ_MSC_EJECT_ZTESTOR
162 ejects after ZTE SCSI command
163 .Dv 0x850101011801010101010000
164 .It UQ_MSC_EJECT_CMOTECH
165 ejects after C-motech SCSI command
166 .Dv 0xff52444556434847
167 .It UQ_MSC_EJECT_WAIT
168 wait for the device to eject
169 .It UQ_MSC_EJECT_SAEL_M460
170 ejects after Sael USB commands
171 .It UQ_MSC_EJECT_HUAWEISCSI
172 ejects after Huawei SCSI command
173 .Dv 0x11060000000000000000000000000000
175 ejects after TCT SCSI command
177 .It UQ_MSC_DYMO_EJECT
178 ejects after HID command
183 .Pa /sys/dev/usb/quirk/usb_quirk.h
184 or run "usbconfig dump_quirk_names" for the complete list of supported quirks.
186 The following tunable can be set at the
188 prompt before booting the kernel, or stored in
190 .Bl -tag -width indent
191 .It Va hw.usb.quirk.%d
192 The value is a string whose format is:
193 .Bd -literal -offset indent
194 .Qo VendorId ProductId LowRevision HighRevision UQ_QUIRK,... Qc
199 for all USB devices matching
203 which have a hardware revision between and including
213 are all 16 bits numbers which can be decimal or hexadecimal based.
215 A maximum of 100 variables
216 .Ic hw.usb.quirk.0, .1, ..., .99
219 If a matching entry is found in the kernel's internal quirks table, it
220 is replaced by the new definition.
222 Else a new entry is created given that the quirk table is not full.
224 The kernel iterates over the
226 variables starting at
230 or the first non-existing one.
235 device which appears as a USB device on
237 .Bd -literal -offset indent
238 usbconfig -d ugen0.3 add_quirk UQ_MSC_EJECT_WAIT
241 Enable a Holtec/Keep Out F85 gaming keyboard on
243 .Bd -literal -offset indent
244 usbconfig -d ugen1.4 add_quirk UQ_KBD_BOOTPROTO
247 To install a quirk at boot time, place one or several lines like the
250 .Bd -literal -offset indent
251 hw.usb.quirk.0="0x04d9 0xfa50 0 0xffff UQ_KBD_IGNORE"
261 .An Hans Petter Selasky Aq Mt hselasky@FreeBSD.org .
262 This manual page was written by
263 .An Nick Hibma Aq Mt n_hibma@FreeBSD.org .