Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
USB_QUIRK(4)		    Kernel Interfaces Manual		  USB_QUIRK(4)

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	remov-
       ing 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_MS_VENDOR_BTN
	       mouse has buttons in vendor usage page

       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_IGNORE_CDC_CM
	       ignore cm descriptor

       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>.

FreeBSD	14.3			August 19, 2017			  USB_QUIRK(4)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=usb_quirk&sektion=4&manpath=FreeBSD+14.3-RELEASE+and+Ports>

home | help