diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:55:43 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:55:43 -0400 |
| commit | ac5e55f5f2af5b92794c2aded46c6bae85b5f5ed (patch) | |
| tree | 9367490586c84cba28652e443e3166d66c33b0d9 /static/freebsd/man4/usb_quirk.4 3.html | |
| parent | 253e67c8b3a72b3a4757fdbc5845297628db0a4a (diff) | |
docs: Added All FreeBSD Manuals
Diffstat (limited to 'static/freebsd/man4/usb_quirk.4 3.html')
| -rw-r--r-- | static/freebsd/man4/usb_quirk.4 3.html | 255 |
1 files changed, 255 insertions, 0 deletions
diff --git a/static/freebsd/man4/usb_quirk.4 3.html b/static/freebsd/man4/usb_quirk.4 3.html new file mode 100644 index 00000000..e1db8515 --- /dev/null +++ b/static/freebsd/man4/usb_quirk.4 3.html @@ -0,0 +1,255 @@ +<table class="head"> + <tr> + <td class="head-ltitle">USB_QUIRK(4)</td> + <td class="head-vol">Device Drivers Manual</td> + <td class="head-rtitle">USB_QUIRK(4)</td> + </tr> +</table> +<div class="manual-text"> +<section class="Sh"> +<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1> +<p class="Pp"><code class="Nm">usb_quirk</code> — <span class="Nd">USB + quirks module</span></p> +</section> +<section class="Sh"> +<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1> +<p class="Pp">To compile this module into the kernel, place the following line + in your kernel configuration file:</p> +<div class="Bd Pp Bd-indent"><code class="Cd">device usb</code></div> +<p class="Pp">Alternatively, to load the module at boot time, place the + following line in <a class="Xr">loader.conf(5)</a>:</p> +<div class="Bd Pp Bd-indent Li"> +<pre>usb_quirk_load="YES"</pre> +</div> +</section> +<section class="Sh"> +<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1> +<p class="Pp">The <code class="Nm">usb_quirk</code> module provides support for + dynamically adding and removing quirks for USB devices with + <a class="Xr">usbconfig(8)</a>.</p> +</section> +<section class="Sh"> +<h1 class="Sh" id="General_quirks:"><a class="permalink" href="#General_quirks:">General + quirks:</a></h1> +<dl class="Bl-tag"> + <dt>UQ_AUDIO_SWAP_LR</dt> + <dd>swap left and right channels</dd> + <dt>UQ_AU_INP_ASYNC</dt> + <dd>input is async despite claim of adaptive</dd> + <dt>UQ_AU_NO_FRAC</dt> + <dd>do not adjust for fractional samples</dd> + <dt>UQ_AU_NO_XU</dt> + <dd>audio device has broken extension unit</dd> + <dt>UQ_AU_VENDOR_CLASS</dt> + <dd>audio device uses vendor class to identify itself</dd> + <dt>UQ_AU_SET_SPDIF_CM6206</dt> + <dd>audio device needs special programming to enable S/PDIF audio output</dd> + <dt>UQ_BAD_ADC</dt> + <dd>bad audio spec version number</dd> + <dt>UQ_BAD_AUDIO</dt> + <dd>device claims audio class, but is not</dd> + <dt>UQ_BROKEN_BIDIR</dt> + <dd>printer has broken bidir mode</dd> + <dt>UQ_BUS_POWERED</dt> + <dd>device is bus powered, despite claim</dd> + <dt>UQ_HID_IGNORE</dt> + <dd>device should be ignored by hid class</dd> + <dt>UQ_KBD_IGNORE</dt> + <dd>device should be ignored by kbd class</dd> + <dt>UQ_KBD_BOOTPROTO</dt> + <dd>device should set the boot protocol</dd> + <dt>UQ_UMS_IGNORE</dt> + <dd>device should be ignored by ums class</dd> + <dt>UQ_MS_BAD_CLASS</dt> + <dd>does not identify properly</dd> + <dt>UQ_MS_LEADING_BYTE</dt> + <dd>mouse sends an unknown leading byte</dd> + <dt>UQ_MS_REVZ</dt> + <dd>mouse has Z-axis reversed</dd> + <dt>UQ_MS_VENDOR_BTN</dt> + <dd>mouse has buttons in vendor usage page</dd> + <dt>UQ_NO_STRINGS</dt> + <dd>string descriptors are broken</dd> + <dt>UQ_POWER_CLAIM</dt> + <dd>hub lies about power status</dd> + <dt>UQ_SPUR_BUT_UP</dt> + <dd>spurious mouse button up events</dd> + <dt>UQ_SWAP_UNICODE</dt> + <dd>has some Unicode strings swapped</dd> + <dt>UQ_CFG_INDEX_1</dt> + <dd>select configuration index 1 by default</dd> + <dt>UQ_CFG_INDEX_2</dt> + <dd>select configuration index 2 by default</dd> + <dt>UQ_CFG_INDEX_3</dt> + <dd>select configuration index 3 by default</dd> + <dt>UQ_CFG_INDEX_4</dt> + <dd>select configuration index 4 by default</dd> + <dt>UQ_CFG_INDEX_0</dt> + <dd>select configuration index 0 by default</dd> + <dt>UQ_ASSUME_CM_OVER_DATA</dt> + <dd>assume cm over data feature</dd> + <dt>UQ_IGNORE_CDC_CM</dt> + <dd>ignore cm descriptor</dd> + <dt>UQ_WMT_IGNORE</dt> + <dd>device should be ignored by wmt driver</dd> +</dl> +</section> +<section class="Sh"> +<h1 class="Sh" id="USB_Mass_Storage_quirks:"><a class="permalink" href="#USB_Mass_Storage_quirks:">USB + Mass Storage quirks:</a></h1> +<dl class="Bl-tag"> + <dt>UQ_MSC_NO_TEST_UNIT_READY</dt> + <dd>send start/stop instead of TUR</dd> + <dt>UQ_MSC_NO_RS_CLEAR_UA</dt> + <dd>does not reset Unit Att.</dd> + <dt>UQ_MSC_NO_START_STOP</dt> + <dd>does not support start/stop</dd> + <dt>UQ_MSC_NO_GETMAXLUN</dt> + <dd>does not support get max LUN</dd> + <dt>UQ_MSC_NO_INQUIRY</dt> + <dd>fake generic inq response</dd> + <dt>UQ_MSC_NO_INQUIRY_EVPD</dt> + <dd>does not support inq EVPD</dd> + <dt>UQ_MSC_NO_SYNC_CACHE</dt> + <dd>does not support sync cache</dd> + <dt>UQ_MSC_SHUTTLE_INIT</dt> + <dd>requires Shuttle init sequence</dd> + <dt>UQ_MSC_ALT_IFACE_1</dt> + <dd>switch to alternate interface 1</dd> + <dt>UQ_MSC_FLOPPY_SPEED</dt> + <dd>does floppy speeds (20kb/s)</dd> + <dt>UQ_MSC_IGNORE_RESIDUE</dt> + <dd>gets residue wrong</dd> + <dt>UQ_MSC_WRONG_CSWSIG</dt> + <dd>uses wrong CSW signature</dd> + <dt>UQ_MSC_RBC_PAD_TO_12</dt> + <dd>pad RBC requests to 12 bytes</dd> + <dt>UQ_MSC_READ_CAP_OFFBY1</dt> + <dd>reports sector count, not max sec.</dd> + <dt>UQ_MSC_FORCE_SHORT_INQ</dt> + <dd>does not support full inq.</dd> + <dt>UQ_MSC_FORCE_WIRE_BBB</dt> + <dd>force BBB wire protocol</dd> + <dt>UQ_MSC_FORCE_WIRE_CBI</dt> + <dd>force CBI wire protocol</dd> + <dt>UQ_MSC_FORCE_WIRE_CBI_I</dt> + <dd>force CBI with int. wire protocol</dd> + <dt>UQ_MSC_FORCE_PROTO_SCSI</dt> + <dd>force SCSI command protocol</dd> + <dt>UQ_MSC_FORCE_PROTO_ATAPI</dt> + <dd>force ATAPI command protocol</dd> + <dt>UQ_MSC_FORCE_PROTO_UFI</dt> + <dd>force UFI command protocol</dd> + <dt>UQ_MSC_FORCE_PROTO_RBC</dt> + <dd>force RBC command protocol</dd> +</dl> +</section> +<section class="Sh"> +<h1 class="Sh" id="3G_Datacard_(u3g)_quirks:"><a class="permalink" href="#3G_Datacard_(u3g)_quirks:">3G + Datacard (u3g) quirks:</a></h1> +<dl class="Bl-tag"> + <dt>UQ_MSC_EJECT_HUAWEI</dt> + <dd>ejects after Huawei USB command</dd> + <dt>UQ_MSC_EJECT_SIERRA</dt> + <dd>ejects after Sierra USB command</dd> + <dt>UQ_MSC_EJECT_SCSIEJECT</dt> + <dd>ejects after SCSI eject command + <code class="Dv">0x1b0000000200</code></dd> + <dt>UQ_MSC_EJECT_REZERO</dt> + <dd>ejects after SCSI rezero command + <code class="Dv">0x010000000000</code></dd> + <dt>UQ_MSC_EJECT_ZTESTOR</dt> + <dd>ejects after ZTE SCSI command + <code class="Dv">0x850101011801010101010000</code></dd> + <dt>UQ_MSC_EJECT_CMOTECH</dt> + <dd>ejects after C-motech SCSI command + <code class="Dv">0xff52444556434847</code></dd> + <dt>UQ_MSC_EJECT_WAIT</dt> + <dd>wait for the device to eject</dd> + <dt>UQ_MSC_EJECT_SAEL_M460</dt> + <dd>ejects after Sael USB commands</dd> + <dt>UQ_MSC_EJECT_HUAWEISCSI</dt> + <dd>ejects after Huawei SCSI command + <code class="Dv">0x11060000000000000000000000000000</code></dd> + <dt>UQ_MSC_EJECT_TCT</dt> + <dd>ejects after TCT SCSI command <code class="Dv">0x06f504025270</code></dd> + <dt>UQ_MSC_DYMO_EJECT</dt> + <dd>ejects after HID command <code class="Dv">0x1b5a01</code></dd> +</dl> +<p class="Pp">See <span class="Pa">/sys/dev/usb/quirk/usb_quirk.h</span> or run + "usbconfig dump_quirk_names" for the complete list of supported + quirks.</p> +</section> +<section class="Sh"> +<h1 class="Sh" id="LOADER_TUNABLE"><a class="permalink" href="#LOADER_TUNABLE">LOADER + TUNABLE</a></h1> +<p class="Pp">The following tunable can be set at the + <a class="Xr">loader(8)</a> prompt before booting the kernel, or stored in + <a class="Xr">loader.conf(5)</a>.</p> +<dl class="Bl-tag"> + <dt id="hw.usb.quirk._d"><var class="Va">hw.usb.quirk.%d</var></dt> + <dd>The value is a string whose format is: + <div class="Bd Pp Bd-indent Li"> + <pre>"VendorId ProductId LowRevision HighRevision UQ_QUIRK,..."</pre> + </div> + <p class="Pp">Installs the quirks <code class="Ic">UQ_QUIRK,...</code> for + all USB devices matching <code class="Ic">VendorId</code> and + <code class="Ic">ProductId</code> which have a hardware revision between + and including <code class="Ic">LowRevision</code> and + <code class="Ic">HighRevision</code>.</p> + <p class="Pp"><code class="Ic">VendorId</code>, + <code class="Ic">ProductId</code>, <code class="Ic">LowRevision</code> + and <code class="Ic">HighRevision</code> are all 16 bits numbers which + can be decimal or hexadecimal based.</p> + <p class="Pp">A maximum of 100 variables <code class="Ic">hw.usb.quirk.0, + .1, ..., .99</code> can be defined.</p> + <p class="Pp">If a matching entry is found in the kernel's internal quirks + table, it is replaced by the new definition.</p> + <p class="Pp">Else a new entry is created given that the quirk table is not + full.</p> + <p class="Pp">The kernel iterates over the + <code class="Ic">hw.usb.quirk.N</code> variables starting at + <code class="Ic">N = 0</code> and stops at <code class="Ic">N = + 99</code> or the first non-existing one.</p> + </dd> +</dl> +</section> +<section class="Sh"> +<h1 class="Sh" id="EXAMPLES"><a class="permalink" href="#EXAMPLES">EXAMPLES</a></h1> +<p class="Pp">After attaching a <code class="Nm">u3g</code> device which appears + as a USB device on <span class="Pa">ugen0.3</span>:</p> +<div class="Bd Pp Bd-indent Li"> +<pre>usbconfig -d ugen0.3 add_quirk UQ_MSC_EJECT_WAIT</pre> +</div> +<p class="Pp">Enable a Holtec/Keep Out F85 gaming keyboard on + <span class="Pa">ugen1.4</span>:</p> +<div class="Bd Pp Bd-indent Li"> +<pre>usbconfig -d ugen1.4 add_quirk UQ_KBD_BOOTPROTO</pre> +</div> +<p class="Pp">To install a quirk at boot time, place one or several lines like + the following in <a class="Xr">loader.conf(5)</a>:</p> +<div class="Bd Pp Bd-indent Li"> +<pre>hw.usb.quirk.0="0x04d9 0xfa50 0 0xffff UQ_KBD_IGNORE"</pre> +</div> +</section> +<section class="Sh"> +<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE + ALSO</a></h1> +<p class="Pp"><a class="Xr">usbconfig(8)</a></p> +</section> +<section class="Sh"> +<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1> +<p class="Pp">The <code class="Nm">usb_quirk</code> module appeared in + <span class="Ux">FreeBSD 8.0</span>, and was written by + <span class="An">Hans Petter Selasky</span> + <<a class="Mt" href="mailto:hselasky@FreeBSD.org">hselasky@FreeBSD.org</a>>. + This manual page was written by <span class="An">Nick Hibma</span> + <<a class="Mt" href="mailto:n_hibma@FreeBSD.org">n_hibma@FreeBSD.org</a>>.</p> +</section> +</div> +<table class="foot"> + <tr> + <td class="foot-date">August 19, 2017</td> + <td class="foot-os">FreeBSD 15.0</td> + </tr> +</table> |
