summaryrefslogtreecommitdiffstats
path: root/share/man/man4/usb_quirk.4
blob: 89ace3476822bc0ce2a71855db18d344579a0863 (plain)
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
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
.\"
.\" 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 September 26, 2015
.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 8 .
.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
do not 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 is not
.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_UMS_IGNORE
device should be ignored by ums class
.It UQ_MS_BAD_CLASS
does not 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_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 3G Datacard (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
.Dv 0x1b0000000200
.It UQ_MSC_EJECT_REZERO
ejects after SCSI rezero command
.Dv 0x010000000000
.It UQ_MSC_EJECT_ZTESTOR
ejects after ZTE SCSI command
.Dv 0x850101011801010101010000
.It UQ_MSC_EJECT_CMOTECH
ejects after C-motech SCSI command
.Dv 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
.Dv 0x11060000000000000000000000000000
.It UQ_MSC_EJECT_TCT
ejects after TCT SCSI command
.Dv 0x06f504025270
.It UQ_MSC_DYMO_EJECT
ejects after HID command
.Dv 0x1b5a01
.El
.Pp
See
.Pa /sys/dev/usb/quirk/usb_quirk.h
or run "usbconfig dump_quirk_names" for the complete list of supported quirks.
.Sh LOADER TUNABLE
The following tunable can be set at the
.Xr loader 8
prompt before booting the kernel, or stored in
.Xr loader.conf 5 .
.Bl -tag -width indent
.It Va hw.usb.quirk.%d
The value is a string whose format is:
.Bd -literal -offset indent
.Qo VendorId ProductId LowRevision HighRevision UQ_QUIRK,... Qc
.Ed
.Pp
Installs the quirks
.Ic UQ_QUIRK,...
for all USB devices matching
.Ic VendorId
and
.Ic ProductId
which have a hardware revision between and including
.Ic LowRevision
and
.Ic HighRevision .
.Pp
.Ic VendorId ,
.Ic ProductId ,
.Ic LowRevision
and
.Ic HighRevision
are all 16 bits numbers which can be decimal or hexadecimal based.
.Pp
A maximum of 100 variables
.Ic hw.usb.quirk.0, .1, ..., .99
can be defined.
.Pp
If a matching entry is found in the kernel's internal quirks table, it
is replaced by the new definition.
.Pp
Else a new entry is created given that the quirk table is not full.
.Pp
The kernel iterates over the
.Ic hw.usb.quirk.N
variables starting at
.Ic N = 0
and stops at
.Ic N = 99
or the first non-existing one.
.El
.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
.Pp
To install a quirk at boot time, place one or several lines like the
following in
.Xr loader.conf 5 :
.Bd -literal -offset indent
hw.usb.quirk.0="0x04d9 0xfa50 0 0xffff UQ_KBD_IGNORE"
.Ed
.Sh SEE ALSO
.Xr usbconfig 8
.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 .
OpenPOWER on IntegriCloud