Provided by: freebsd-manpages_12.2-1_all bug

NAME

       usb_quirk — USB quirks module

SYNOPSIS

       To compile this module into the kernel, place the following line in your kernel configuration file:

             device usb

       Alternatively, to load the module at boot time, place the following line in loader.conf(5):

             usb_quirk_load="YES"

DESCRIPTION

       The  usb_quirk  module  provides  support for dynamically adding and removing quirks for USB devices with
       usbconfig(8).

General quirks:

       UQ_AUDIO_SWAP_LR
               swap left and right channels

       UQ_AU_INP_ASYNC
               input is async despite claim of adaptive

       UQ_AU_NO_FRAC
               do not adjust for fractional samples

       UQ_AU_NO_XU
               audio device has broken extension unit

       UQ_AU_VENDOR_CLASS
               audio device uses vendor class to identify itself

       UQ_AU_SET_SPDIF_CM6206
               audio device needs special programming to enable S/PDIF audio output

       UQ_BAD_ADC
               bad audio spec version number

       UQ_BAD_AUDIO
               device claims audio class, but is not

       UQ_BROKEN_BIDIR
               printer has broken bidir mode

       UQ_BUS_POWERED
               device is bus powered, despite claim

       UQ_HID_IGNORE
               device should be ignored by hid class

       UQ_KBD_IGNORE
               device should be ignored by kbd class

       UQ_KBD_BOOTPROTO
               device should set the boot protocol

       UQ_UMS_IGNORE
               device should be ignored by ums class

       UQ_MS_BAD_CLASS
               does not identify properly

       UQ_MS_LEADING_BYTE
               mouse sends an unknown leading byte

       UQ_MS_REVZ
               mouse has Z-axis reversed

       UQ_NO_STRINGS
               string descriptors are broken

       UQ_POWER_CLAIM
               hub lies about power status

       UQ_SPUR_BUT_UP
               spurious mouse button up events

       UQ_SWAP_UNICODE
               has some Unicode strings swapped

       UQ_CFG_INDEX_1
               select configuration index 1 by default

       UQ_CFG_INDEX_2
               select configuration index 2 by default

       UQ_CFG_INDEX_3
               select configuration index 3 by default

       UQ_CFG_INDEX_4
               select configuration index 4 by default

       UQ_CFG_INDEX_0
               select configuration index 0 by default

       UQ_ASSUME_CM_OVER_DATA
               assume cm over data feature

       UQ_WMT_IGNORE
               device should be ignored by wmt driver

USB Mass Storage quirks:

       UQ_MSC_NO_TEST_UNIT_READY
               send start/stop instead of TUR

       UQ_MSC_NO_RS_CLEAR_UA
               does not reset Unit Att.

       UQ_MSC_NO_START_STOP
               does not support start/stop

       UQ_MSC_NO_GETMAXLUN
               does not support get max LUN

       UQ_MSC_NO_INQUIRY
               fake generic inq response

       UQ_MSC_NO_INQUIRY_EVPD
               does not support inq EVPD

       UQ_MSC_NO_SYNC_CACHE
               does not support sync cache

       UQ_MSC_SHUTTLE_INIT
               requires Shuttle init sequence

       UQ_MSC_ALT_IFACE_1
               switch to alternate interface 1

       UQ_MSC_FLOPPY_SPEED
               does floppy speeds (20kb/s)

       UQ_MSC_IGNORE_RESIDUE
               gets residue wrong

       UQ_MSC_WRONG_CSWSIG
               uses wrong CSW signature

       UQ_MSC_RBC_PAD_TO_12
               pad RBC requests to 12 bytes

       UQ_MSC_READ_CAP_OFFBY1
               reports sector count, not max sec.

       UQ_MSC_FORCE_SHORT_INQ
               does not support full inq.

       UQ_MSC_FORCE_WIRE_BBB
               force BBB wire protocol

       UQ_MSC_FORCE_WIRE_CBI
               force CBI wire protocol

       UQ_MSC_FORCE_WIRE_CBI_I
               force CBI with int. wire protocol

       UQ_MSC_FORCE_PROTO_SCSI
               force SCSI command protocol

       UQ_MSC_FORCE_PROTO_ATAPI
               force ATAPI command protocol

       UQ_MSC_FORCE_PROTO_UFI
               force UFI command protocol

       UQ_MSC_FORCE_PROTO_RBC
               force RBC command protocol

3G Datacard (u3g) quirks:

       UQ_MSC_EJECT_HUAWEI
               ejects after Huawei USB command

       UQ_MSC_EJECT_SIERRA
               ejects after Sierra USB command

       UQ_MSC_EJECT_SCSIEJECT
               ejects after SCSI eject command 0x1b0000000200

       UQ_MSC_EJECT_REZERO
               ejects after SCSI rezero command 0x010000000000

       UQ_MSC_EJECT_ZTESTOR
               ejects after ZTE SCSI command 0x850101011801010101010000

       UQ_MSC_EJECT_CMOTECH
               ejects after C-motech SCSI command 0xff52444556434847

       UQ_MSC_EJECT_WAIT
               wait for the device to eject

       UQ_MSC_EJECT_SAEL_M460
               ejects after Sael USB commands

       UQ_MSC_EJECT_HUAWEISCSI
               ejects after Huawei SCSI command 0x11060000000000000000000000000000

       UQ_MSC_EJECT_TCT
               ejects after TCT SCSI command 0x06f504025270

       UQ_MSC_DYMO_EJECT
               ejects after HID command 0x1b5a01

       See /sys/dev/usb/quirk/usb_quirk.h or run "usbconfig dump_quirk_names" for the complete list of supported
       quirks.

LOADER TUNABLE

       The following tunable can be set at the  loader(8)  prompt  before  booting  the  kernel,  or  stored  in
       loader.conf(5).

       hw.usb.quirk.%d
               The value is a string whose format is:

                     "VendorId ProductId LowRevision HighRevision UQ_QUIRK,..."

               Installs the quirks UQ_QUIRK,... for all USB devices matching VendorId and ProductId which have a
               hardware revision between and including LowRevision and HighRevision.

               VendorId, ProductId, LowRevision and HighRevision are all 16 bits numbers which can be decimal or
               hexadecimal based.

               A maximum of 100 variables hw.usb.quirk.0, .1, ..., .99 can be defined.

               If  a  matching  entry  is found in the kernel's internal quirks table, it is replaced by the new
               definition.

               Else a new entry is created given that the quirk table is not full.

               The kernel iterates over the hw.usb.quirk.N variables starting at N = 0 and stops at N  =  99  or
               the first non-existing one.

EXAMPLES

       After attaching a u3g device which appears as a USB device on ugen0.3:

             usbconfig -d ugen0.3 add_quirk UQ_MSC_EJECT_WAIT

       Enable a Holtec/Keep Out F85 gaming keyboard on ugen1.4:

             usbconfig -d ugen1.4 add_quirk UQ_KBD_BOOTPROTO

       To install a quirk at boot time, place one or several lines like the following in loader.conf(5):

             hw.usb.quirk.0="0x04d9 0xfa50 0 0xffff UQ_KBD_IGNORE"

SEE ALSO

       usbconfig(8)

HISTORY

       The   usb_quirk   module   appeared   in   FreeBSD   8.0,   and   was  written  by  Hans  Petter  Selasky
       <hselasky@FreeBSD.org>.  This manual page was written by Nick Hibma <n_hibma@FreeBSD.org>.

Debian                                           August 19, 2017                                    USB_QUIRK(4)