summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--share/man/man4/Makefile1
-rw-r--r--share/man/man4/u3g.425
-rw-r--r--share/man/man4/usb_quirk.4196
-rw-r--r--sys/dev/usb/quirk/usb_quirk.h11
-rw-r--r--usr.sbin/usbconfig/usbconfig.86
5 files changed, 218 insertions, 21 deletions
diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile
index 7e5cdf1..b7747d8 100644
--- a/share/man/man4/Makefile
+++ b/share/man/man4/Makefile
@@ -469,6 +469,7 @@ MAN= aac.4 \
urio.4 \
${_urtw.4} \
usb.4 \
+ usb_quirk.4 \
uslcom.4 \
utopia.4 \
uvisor.4 \
diff --git a/share/man/man4/u3g.4 b/share/man/man4/u3g.4
index eb192f9..d012353 100644
--- a/share/man/man4/u3g.4
+++ b/share/man/man4/u3g.4
@@ -85,26 +85,19 @@ In some of these devices a mass storage device supported by the
.Xr umass 4
driver is present which contains Windows and Mac OS X drivers.
The device starts up in disk mode (TruInstall, ZeroCD, etc.) and requires
-additional commands to switch it to modem mode.
+additional commands to switch it to modem mode. If your device is not
+switching automatically, please try to add quirks. See
+.Xr usbconfig 5
+and
+.Xr usb_quirk 4 .
.Pp
-The
-.Xr u3gstub 4
-device will attach temporarily to a 3G device with a mass storage device and
-force it to switch to modem mode.
-The attach and detach of
-.Xr u3gstub
-and any driver disk device present on the 3G device is hidden, unless the
-machine was booted in verbose mode (see
-.Xr boot 8 ) .
-To temporarily unhide the device, set
-.Va debug.bootverbose
-to 1 using
-.Xr sysctl 8
-and replug the device.
.Sh SEE ALSO
.Xr tty 4 ,
.Xr ucom 4 ,
-.Xr usb 4
+.XR u3g 4 ,
+.Xr usb 4 ,
+.Xr usb_quirk 4 ,
+.Xr usbconfig 5
.Sh HISTORY
The
.Nm
diff --git a/share/man/man4/usb_quirk.4 b/share/man/man4/usb_quirk.4
new file mode 100644
index 0000000..33b224a
--- /dev/null
+++ b/share/man/man4/usb_quirk.4
@@ -0,0 +1,196 @@
+.\"
+.\" 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 November 9, 2010
+.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 ucom"
+.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 5 .
+.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
+don't 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 isn't
+.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_MS_BAD_CLASS
+doesn't 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_OPEN_CLEARSTALL
+device needs clear endpoint stall
+.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 Mass Storage Change (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
+0x1b0000000200
+.It UQ_MSC_EJECT_REZERO
+ejects after SCSI rezero command
+0x010000000000
+.It UQ_MSC_EJECT_ZTESTOR
+ejects after ZTE SCSI command
+0x850101011801010101010000
+.It UQ_MSC_EJECT_CMOTECH
+ejects after C-motech SCSI command
+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
+0x11060000000000000000000000000000
+.It UQ_MSC_EJECT_TCT
+ejects after TCT SCSI command
+0x06f504025270
+.El
+See
+.Pa /sys/dev/usb/quirk/usb_quirk.h
+for the complete list of supported quirks.
+.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
+.Sh SEE ALSO
+.Xr usb_quirk 4 ,
+.Xr usbconfig 5
+.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 .
diff --git a/sys/dev/usb/quirk/usb_quirk.h b/sys/dev/usb/quirk/usb_quirk.h
index 856ab89..522b15a 100644
--- a/sys/dev/usb/quirk/usb_quirk.h
+++ b/sys/dev/usb/quirk/usb_quirk.h
@@ -27,11 +27,14 @@
#ifndef _USB_QUIRK_H_
#define _USB_QUIRK_H_
-/* NOTE: UQ_NONE is not a valid quirk */
-enum { /* keep in sync with usb_quirk_str table */
- UQ_NONE,
+enum {
+ /*
+ * Keep in sync with theusb_quirk_str usb_quirk.c, and with the
+ * share/man/man4/usb_quirk.4
+ */
+ UQ_NONE, /* not a valid quirk */
- UQ_MATCH_VENDOR_ONLY,
+ UQ_MATCH_VENDOR_ONLY, /* match quirk on vendor only */
/* Various quirks */
diff --git a/usr.sbin/usbconfig/usbconfig.8 b/usr.sbin/usbconfig/usbconfig.8
index 971367d..ae69737 100644
--- a/usr.sbin/usbconfig/usbconfig.8
+++ b/usr.sbin/usbconfig/usbconfig.8
@@ -92,5 +92,9 @@ Display a list of available quirk names:
.Pp
.Dl usbconfig dump_quirk_names
.Pp
+See
+.Xr usb_quirk 4
+for more information on quirks.
.Sh SEE ALSO
-.Xr usb 4
+.Xr usb 4 ,
+.Xr usb_quirk 4
OpenPOWER on IntegriCloud