11da177e4SLinus Torvalds# 21da177e4SLinus Torvalds# USB Core configuration 31da177e4SLinus Torvalds# 41da177e4SLinus Torvaldsconfig USB_DEBUG 51da177e4SLinus Torvalds bool "USB verbose debug messages" 61da177e4SLinus Torvalds depends on USB 71da177e4SLinus Torvalds help 81da177e4SLinus Torvalds Say Y here if you want the USB core & hub drivers to produce a bunch 91da177e4SLinus Torvalds of debug messages to the system log. Select this if you are having a 101da177e4SLinus Torvalds problem with USB support and want to see more of what is going on. 111da177e4SLinus Torvalds 12*f2a383e4SGreg Kroah-Hartmanconfig USB_ANNOUNCE_NEW_DEVICES 13*f2a383e4SGreg Kroah-Hartman bool "USB announce new devices" 14*f2a383e4SGreg Kroah-Hartman depends on USB 15*f2a383e4SGreg Kroah-Hartman default N 16*f2a383e4SGreg Kroah-Hartman help 17*f2a383e4SGreg Kroah-Hartman Say Y here if you want the USB core to always announce the 18*f2a383e4SGreg Kroah-Hartman idVendor, idProduct, Manufacturer, Product, and SerialNumber 19*f2a383e4SGreg Kroah-Hartman strings for every new USB device to the syslog. This option is 20*f2a383e4SGreg Kroah-Hartman usually used by distro vendors to help with debugging and to 21*f2a383e4SGreg Kroah-Hartman let users know what specific device was added to the machine 22*f2a383e4SGreg Kroah-Hartman in what location. 23*f2a383e4SGreg Kroah-Hartman 24*f2a383e4SGreg Kroah-Hartman If you do not want this kind of information sent to the system 25*f2a383e4SGreg Kroah-Hartman log, or have any doubts about this, say N here. 26*f2a383e4SGreg Kroah-Hartman 271da177e4SLinus Torvaldscomment "Miscellaneous USB options" 281da177e4SLinus Torvalds depends on USB 291da177e4SLinus Torvalds 301da177e4SLinus Torvaldsconfig USB_DEVICEFS 311da177e4SLinus Torvalds bool "USB device filesystem" 321da177e4SLinus Torvalds depends on USB 331da177e4SLinus Torvalds ---help--- 341da177e4SLinus Torvalds If you say Y here (and to "/proc file system support" in the "File 351da177e4SLinus Torvalds systems" section, above), you will get a file /proc/bus/usb/devices 361da177e4SLinus Torvalds which lists the devices currently connected to your USB bus or 371da177e4SLinus Torvalds busses, and for every connected device a file named 381da177e4SLinus Torvalds "/proc/bus/usb/xxx/yyy", where xxx is the bus number and yyy the 391da177e4SLinus Torvalds device number; the latter files can be used by user space programs 401da177e4SLinus Torvalds to talk directly to the device. These files are "virtual", meaning 411da177e4SLinus Torvalds they are generated on the fly and not stored on the hard drive. 421da177e4SLinus Torvalds 431da177e4SLinus Torvalds You may need to mount the usbfs file system to see the files, use 441da177e4SLinus Torvalds mount -t usbfs none /proc/bus/usb 451da177e4SLinus Torvalds 461da177e4SLinus Torvalds For the format of the various /proc/bus/usb/ files, please read 471da177e4SLinus Torvalds <file:Documentation/usb/proc_usb_info.txt>. 481da177e4SLinus Torvalds 499f8b17e6SKay Sievers Usbfs files can't handle Access Control Lists (ACL), which are the 509f8b17e6SKay Sievers default way to grant access to USB devices for untrusted users of a 519f8b17e6SKay Sievers desktop system. The usbfs functionality is replaced by real 529f8b17e6SKay Sievers device-nodes managed by udev. These nodes live in /dev/bus/usb and 539f8b17e6SKay Sievers are used by libusb. 549f8b17e6SKay Sievers 559f8b17e6SKay Sieversconfig USB_DEVICE_CLASS 569f8b17e6SKay Sievers bool "USB device class-devices (DEPRECATED)" 579f8b17e6SKay Sievers depends on USB 58dda034bcSKay Sievers default y 599f8b17e6SKay Sievers ---help--- 609f8b17e6SKay Sievers Userspace access to USB devices is granted by device-nodes exported 619f8b17e6SKay Sievers directly from the usbdev in sysfs. Old versions of the driver 629f8b17e6SKay Sievers core and udev needed additional class devices to export device nodes. 639f8b17e6SKay Sievers 649f8b17e6SKay Sievers These additional devices are difficult to handle in userspace, if 65dda034bcSKay Sievers information about USB interfaces must be available. One device 66dda034bcSKay Sievers contains the device node, the other device contains the interface 67dda034bcSKay Sievers data. Both devices are at the same level in sysfs (siblings) and one 68dda034bcSKay Sievers can't access the other. The device node created directly by the 69dda034bcSKay Sievers usb device is the parent device of the interface and therefore 70dda034bcSKay Sievers easily accessible from the interface event. 719f8b17e6SKay Sievers 72dda034bcSKay Sievers This option provides backward compatibility for libusb device 73dda034bcSKay Sievers nodes (lsusb) when usbfs is not used, and the following udev rule 74dda034bcSKay Sievers doesn't exist: 75dda034bcSKay Sievers SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", \ 76dda034bcSKay Sievers NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", MODE="0644" 771da177e4SLinus Torvalds 781da177e4SLinus Torvaldsconfig USB_DYNAMIC_MINORS 791da177e4SLinus Torvalds bool "Dynamic USB minor allocation (EXPERIMENTAL)" 801da177e4SLinus Torvalds depends on USB && EXPERIMENTAL 811da177e4SLinus Torvalds help 821da177e4SLinus Torvalds If you say Y here, the USB subsystem will use dynamic minor 831da177e4SLinus Torvalds allocation for any device that uses the USB major number. 841da177e4SLinus Torvalds This means that you can have more than 16 of a single type 851da177e4SLinus Torvalds of device (like USB printers). 861da177e4SLinus Torvalds 871da177e4SLinus Torvalds If you are unsure about this, say N here. 881da177e4SLinus Torvalds 891da177e4SLinus Torvaldsconfig USB_SUSPEND 90f3f3253dSDavid Brownell bool "USB selective suspend/resume and wakeup (EXPERIMENTAL)" 911da177e4SLinus Torvalds depends on USB && PM && EXPERIMENTAL 921da177e4SLinus Torvalds help 931da177e4SLinus Torvalds If you say Y here, you can use driver calls or the sysfs 941da177e4SLinus Torvalds "power/state" file to suspend or resume individual USB 95f3f3253dSDavid Brownell peripherals. 96f3f3253dSDavid Brownell 97f3f3253dSDavid Brownell Also, USB "remote wakeup" signaling is supported, whereby some 98f3f3253dSDavid Brownell USB devices (like keyboards and network adapters) can wake up 99f3f3253dSDavid Brownell their parent hub. That wakeup cascades up the USB tree, and 100f3f3253dSDavid Brownell could wake the system from states like suspend-to-RAM. 1011da177e4SLinus Torvalds 1021da177e4SLinus Torvalds If you are unsure about this, say N here. 1031da177e4SLinus Torvalds 1040458d5b4SAlan Sternconfig USB_PERSIST 1050458d5b4SAlan Stern bool "USB device persistence during system suspend (DANGEROUS)" 1060458d5b4SAlan Stern depends on USB && PM && EXPERIMENTAL 1070458d5b4SAlan Stern default n 1080458d5b4SAlan Stern help 109b41a60ecSAlan Stern 110b41a60ecSAlan Stern If you say Y here and enable the "power/persist" attribute 111b41a60ecSAlan Stern for a USB device, the device's data structures will remain 1120458d5b4SAlan Stern persistent across system suspend, even if the USB bus loses 113b41a60ecSAlan Stern power. (This includes hibernation, also known as swsusp or 114b41a60ecSAlan Stern suspend-to-disk.) The devices will reappear as if by magic 115b41a60ecSAlan Stern when the system wakes up, with no need to unmount USB 116b41a60ecSAlan Stern filesystems, rmmod host-controller drivers, or do anything 117b41a60ecSAlan Stern else. 1180458d5b4SAlan Stern 1190458d5b4SAlan Stern WARNING: This option can be dangerous! 1200458d5b4SAlan Stern 1210458d5b4SAlan Stern If a USB device is replaced by another of the same type while 1220458d5b4SAlan Stern the system is asleep, there's a good chance the kernel won't 1230458d5b4SAlan Stern detect the change. Likewise if the media in a USB storage 1240458d5b4SAlan Stern device is replaced. When this happens it's almost certain to 1250458d5b4SAlan Stern cause data corruption and maybe even crash your system. 1260458d5b4SAlan Stern 1270458d5b4SAlan Stern If you are unsure, say N here. 1280458d5b4SAlan Stern 1291da177e4SLinus Torvaldsconfig USB_OTG 1301da177e4SLinus Torvalds bool 1311da177e4SLinus Torvalds depends on USB && EXPERIMENTAL 1321da177e4SLinus Torvalds select USB_SUSPEND 1331da177e4SLinus Torvalds default n 1341da177e4SLinus Torvalds 1351da177e4SLinus Torvalds 1361da177e4SLinus Torvaldsconfig USB_OTG_WHITELIST 1371da177e4SLinus Torvalds bool "Rely on OTG Targeted Peripherals List" 1381da177e4SLinus Torvalds depends on USB_OTG 1391da177e4SLinus Torvalds default y 1401da177e4SLinus Torvalds help 1411da177e4SLinus Torvalds If you say Y here, the "otg_whitelist.h" file will be used as a 1421da177e4SLinus Torvalds product whitelist, so USB peripherals not listed there will be 1431da177e4SLinus Torvalds rejected during enumeration. This behavior is required by the 1441da177e4SLinus Torvalds USB OTG specification for all devices not on your product's 1451da177e4SLinus Torvalds "Targeted Peripherals List". 1461da177e4SLinus Torvalds 1471da177e4SLinus Torvalds Otherwise, peripherals not listed there will only generate a 1481da177e4SLinus Torvalds warning and enumeration will continue. That's more like what 1491da177e4SLinus Torvalds normal Linux-USB hosts do (other than the warning), and is 1501da177e4SLinus Torvalds convenient for many stages of product development. 1511da177e4SLinus Torvalds 15289ccbdc9SDavid Brownellconfig USB_OTG_BLACKLIST_HUB 15389ccbdc9SDavid Brownell bool "Disable external hubs" 15489ccbdc9SDavid Brownell depends on USB_OTG 15589ccbdc9SDavid Brownell help 15689ccbdc9SDavid Brownell If you say Y here, then Linux will refuse to enumerate 15789ccbdc9SDavid Brownell external hubs. OTG hosts are allowed to reduce hardware 15889ccbdc9SDavid Brownell and software costs by not supporting external hubs. 1591da177e4SLinus Torvalds 160