1.\" $FreeBSD$ 2.\" 3.\" Copyright (c) 2008-2010 Hans Petter Selasky. All rights reserved. 4.\" 5.\" Redistribution and use in source and binary forms, with or without 6.\" modification, are permitted provided that the following conditions 7.\" are met: 8.\" 1. Redistributions of source code must retain the above copyright 9.\" notice, this list of conditions and the following disclaimer. 10.\" 2. Redistributions in binary form must reproduce the above copyright 11.\" notice, this list of conditions and the following disclaimer in the 12.\" documentation and/or other materials provided with the distribution. 13.\" 14.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24.\" SUCH DAMAGE. 25.\" 26.Dd December 30, 2017 27.Dt USBCONFIG 8 28.Os 29.Sh NAME 30.Nm usbconfig 31.Nd configure the USB subsystem 32.Sh SYNOPSIS 33.Nm 34.Op Fl u Ar unit 35.Op Fl a Ar addr 36.Op cmds... 37.Nm 38.Op Fl d Ar [ugen]<unit>.<addr> 39.Op cmds... 40.Sh DESCRIPTION 41The 42.Nm 43utility is used to configure and dump information about the USB subsystem. 44.Pp 45The options are as follows: 46.Bl -tag -width " " 47.It Fl u Ar unit 48Limit device range to USB devices connected to the given USBUS unit. 49.It Fl a Ar addr 50Limit device range to the given USB device index. 51Should only be used in conjunction with the unit argument. 52.It Fl d Ar [ugen]<unit>.<addr> 53Limit device range to USB devices connected to the given unit and address. 54The unit and address coordinates may be prefixed by the lowercased word "ugen". 55.It Fl h 56Show help and available commands. 57.El 58.Pp 59The following commands may be used with 60.Nm : 61.Bl -tag -width indent 62.It Cm set_config Ar cfg_index 63Choose the configuration for the USB device. 64Valid values range from zero to the number reported as the 65.Ar bNumConfigurations 66in 67.Cm dump_device_desc 68output. 69The special value of 255 unconfigures the device, detaching 70the interface drivers and reducing the power consumption to minimum, 71but without going into power saving mode or detaching from the bus. 72In some cases, it prevents the device from charging. 73.It Cm set_alt Ar alt_index 74Choose the alternate interface for the USB device. 75Alternative settings for the current configuration are available as the 76.Ar bAlternateSetting 77in 78.Cm dump_curr_config_desc 79output. 80Usually there is no need to adjust this setting. 81.It Cm set_template Ar template 82Set the global USB device side template. 83See 84.Xr usb_template 4 85for more information. 86.It Cm get_template 87Get the current USB device side template. 88.It Cm add_dev_quirk_vplh Ar vid Ar pid Ar lo_rev Ar hi_rev Ar quirk_name 89Add a quirk by specifying the Vendor ID, Product ID, low and high 90revision numbers, and the quirk name. 91See 92.Xr usb_quirk 4 93for more information. 94.It Cm remove_dev_quirk_vplh Ar vid Ar pid Ar lo_rev Ar hi_rev Ar quirk_name 95Remove a quirk. 96.It Cm add_quirk Ar quirk_name 97Add quirk for the currently selected USB device. 98.It Cm remove_quirk Ar quirk_name 99Remove a quirk for the currently selected USB device. 100.It Cm dump_all_desc 101Display the device and configuration descriptors. 102.It Cm dump_quirk_names 103Display the list of supported quirk names. 104.It Cm dump_device_quirks 105Display the list of current device quirks. 106.It Cm dump_device_desc 107Display the device descriptor. 108.It Cm dump_curr_config_desc 109Display current configuration descriptor. 110.It Cm dump_all_config_desc 111Display all the configuration descriptors. 112.It Cm dump_string Ar index 113Display string descriptor at selected index. 114.It Cm dump_info 115Display summary information about the device. 116.It Cm show_ifdrv 117Display the list of interface drivers (such as 118.Xr ukbd 4 119or 120.Xr u3g 4 ) 121currently attached to the device. 122.It Cm suspend 123Force the device to suspend. 124.It Cm resume 125Force the device to resume. 126.It Cm power_off 127Turn the device off. 128.It Cm power_save 129Turn the automatic suspend and resume on. 130This is the default for USB hubs. 131.It Cm power_on 132Turn the device on and disable automatic suspend and resume. 133This is the default for non-hub devices. 134.It Cm reset 135Reset the device. 136This forces the USB stack to reenumerate the bus. 137.It Cm list 138List all available USB devices. 139This is the default if 140.Nm 141is called without specifying a command. 142.It Cm do_request Ar bmReqTyp Ar bReq Ar wVal Ar wIdx Ar wLen Ar data... 143Perform a synchronous control request on the specified device. 144See 145.Xr libusb20_dev_request_sync 3 146for more information. 147.El 148.Sh EXAMPLES 149Show information about the device on USB bus 1 at address 2: 150.Pp 151.Dl usbconfig -d ugen1.2 dump_info 152.Pp 153Dump HID descriptor for device on USB bus 1 at address 2: 154.Pp 155.Dl usbconfig -d ugen1.2 do_request 0x81 0x06 0x2200 0 0x100 156.Pp 157Dump string descriptor at index Z for device on USB bus 1 at address 2: 158.Pp 159.Dl usbconfig -d ugen1.2 dump_string Z 160.Pp 161Dump current configuration descriptor for device on USB bus 1 at address 2: 162.Pp 163.Dl usbconfig -d ugen1.2 dump_curr_config_desc 164.Pp 165Dump device descriptor for device on USB bus 1 at address 2: 166.Pp 167.Dl usbconfig -d ugen1.2 dump_device_desc 168.Pp 169Program the device on USB bus 1 at address 2 to suspend, resume, power off, go into power save, or power on: 170.Pp 171.Dl usbconfig -d ugen1.2 suspend 172.Dl usbconfig -d ugen1.2 resume 173.Dl usbconfig -d ugen1.2 power_off 174.Dl usbconfig -d ugen1.2 power_save 175.Dl usbconfig -d ugen1.2 power_on 176.Sh SEE ALSO 177.Xr usb 4 , 178.Xr usb_quirk 4 , 179.Xr usb_template 4 180