| What: /sys/bus/usb/devices/<INTERFACE>/authorized | |
| Date: August 2015 | |
| Description: | |
| This allows to authorize (1) or deauthorize (0) | |
| individual interfaces instead a whole device | |
| in contrast to the device authorization. | |
| If a deauthorized interface will be authorized | |
| so the driver probing must be triggered manually | |
| by writing INTERFACE to /sys/bus/usb/drivers_probe | |
| This allows to avoid side-effects with drivers | |
| that need multiple interfaces. | |
| A deauthorized interface cannot be probed or claimed. | |
| What: /sys/bus/usb/devices/usbX/interface_authorized_default | |
| Date: August 2015 | |
| Description: | |
| This is used as value that determines if interfaces | |
| would be authorized by default. | |
| The value can be 1 or 0. It's by default 1. | |
| What: /sys/bus/usb/device/.../authorized | |
| Date: July 2008 | |
| KernelVersion: 2.6.26 | |
| Contact: David Vrabel <david.vrabel@csr.com> | |
| Description: | |
| Authorized devices are available for use by device | |
| drivers, non-authorized one are not. By default, wired | |
| USB devices are authorized. | |
| What: /sys/bus/usb/drivers/.../new_id | |
| Date: October 2011 | |
| Contact: linux-usb@vger.kernel.org | |
| Description: | |
| Writing a device ID to this file will attempt to | |
| dynamically add a new device ID to a USB device driver. | |
| This may allow the driver to support more hardware than | |
| was included in the driver's static device ID support | |
| table at compile time. The format for the device ID is: | |
| idVendor idProduct bInterfaceClass RefIdVendor RefIdProduct | |
| The vendor ID and device ID fields are required, the | |
| rest is optional. The `Ref*` tuple can be used to tell the | |
| driver to use the same driver_data for the new device as | |
| it is used for the reference device. | |
| Upon successfully adding an ID, the driver will probe | |
| for the device and attempt to bind to it. For example:: | |
| # echo "8086 10f5" > /sys/bus/usb/drivers/foo/new_id | |
| Here add a new device (0458:7045) using driver_data from | |
| an already supported device (0458:704c):: | |
| # echo "0458 7045 0 0458 704c" > /sys/bus/usb/drivers/foo/new_id | |
| Reading from this file will list all dynamically added | |
| device IDs in the same format, with one entry per | |
| line. For example:: | |
| # cat /sys/bus/usb/drivers/foo/new_id | |
| 8086 10f5 | |
| dead beef 06 | |
| f00d cafe | |
| The list will be truncated at PAGE_SIZE bytes due to | |
| sysfs restrictions. | |
| What: /sys/bus/usb-serial/drivers/.../new_id | |
| Date: October 2011 | |
| Contact: linux-usb@vger.kernel.org | |
| Description: | |
| For serial USB drivers, this attribute appears under the | |
| extra bus folder "usb-serial" in sysfs; apart from that | |
| difference, all descriptions from the entry | |
| "/sys/bus/usb/drivers/.../new_id" apply. | |
| What: /sys/bus/usb/drivers/.../remove_id | |
| Date: November 2009 | |
| Contact: CHENG Renquan <rqcheng@smu.edu.sg> | |
| Description: | |
| Writing a device ID to this file will remove an ID | |
| that was dynamically added via the new_id sysfs entry. | |
| The format for the device ID is: | |
| idVendor idProduct. After successfully | |
| removing an ID, the driver will no longer support the | |
| device. This is useful to ensure auto probing won't | |
| match the driver to the device. For example: | |
| # echo "046d c315" > /sys/bus/usb/drivers/foo/remove_id | |
| Reading from this file will list the dynamically added | |
| device IDs, exactly like reading from the entry | |
| "/sys/bus/usb/drivers/.../new_id" | |
| What: /sys/bus/usb/devices/.../power/usb2_hardware_lpm | |
| Date: September 2011 | |
| Contact: Andiry Xu <andiry.xu@amd.com> | |
| Description: | |
| If CONFIG_PM is set and a USB 2.0 lpm-capable device is plugged | |
| in to a xHCI host which support link PM, it will perform a LPM | |
| test; if the test is passed and host supports USB2 hardware LPM | |
| (xHCI 1.0 feature), USB2 hardware LPM will be enabled for the | |
| device and the USB device directory will contain a file named | |
| power/usb2_hardware_lpm. The file holds a string value (enable | |
| or disable) indicating whether or not USB2 hardware LPM is | |
| enabled for the device. Developer can write y/Y/1 or n/N/0 to | |
| the file to enable/disable the feature. | |
| What: /sys/bus/usb/devices/.../power/usb3_hardware_lpm_u1 | |
| /sys/bus/usb/devices/.../power/usb3_hardware_lpm_u2 | |
| Date: November 2015 | |
| Contact: Kevin Strasser <kevin.strasser@linux.intel.com> | |
| Lu Baolu <baolu.lu@linux.intel.com> | |
| Description: | |
| If CONFIG_PM is set and a USB 3.0 lpm-capable device is plugged | |
| in to a xHCI host which supports link PM, it will check if U1 | |
| and U2 exit latencies have been set in the BOS descriptor; if | |
| the check is passed and the host supports USB3 hardware LPM, | |
| USB3 hardware LPM will be enabled for the device and the USB | |
| device directory will contain two files named | |
| power/usb3_hardware_lpm_u1 and power/usb3_hardware_lpm_u2. These | |
| files hold a string value (enable or disable) indicating whether | |
| or not USB3 hardware LPM U1 or U2 is enabled for the device. | |
| What: /sys/bus/usb/devices/.../ltm_capable | |
| Date: July 2012 | |
| Contact: Sarah Sharp <sarah.a.sharp@linux.intel.com> | |
| Description: | |
| USB 3.0 devices may optionally support Latency Tolerance | |
| Messaging (LTM). They indicate their support by setting a bit | |
| in the bmAttributes field of their SuperSpeed BOS descriptors. | |
| If that bit is set for the device, ltm_capable will read "yes". | |
| If the device doesn't support LTM, the file will read "no". | |
| The file will be present for all speeds of USB devices, and will | |
| always read "no" for USB 1.1 and USB 2.0 devices. | |
| What: /sys/bus/usb/devices/<INTERFACE>/wireless_status | |
| Date: February 2023 | |
| Contact: Bastien Nocera <hadess@hadess.net> | |
| Description: | |
| Some USB devices use a USB receiver dongle to communicate | |
| wirelessly with their device using proprietary protocols. This | |
| attribute allows user-space to know whether the device is | |
| connected to its receiver dongle, and, for example, consider | |
| the device to be absent when choosing whether to show the | |
| device's battery, show a headset in a list of outputs, or show | |
| an on-screen keyboard if the only wireless keyboard is | |
| turned off. | |
| This attribute is not to be used to replace protocol specific | |
| statuses available in WWAN, WLAN/Wi-Fi, Bluetooth, etc. | |
| If the device does not use a receiver dongle with a wireless | |
| device, then this attribute will not exist. | |
| What: /sys/bus/usb/devices/.../<hub_interface>/port<X> | |
| Date: August 2012 | |
| Contact: Lan Tianyu <tianyu.lan@intel.com> | |
| Description: | |
| The /sys/bus/usb/devices/.../<hub_interface>/port<X> | |
| is usb port device's sysfs directory. | |
| What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/connect_type | |
| Date: January 2013 | |
| Contact: Lan Tianyu <tianyu.lan@intel.com> | |
| Description: | |
| Some platforms provide usb port connect types through ACPI. | |
| This attribute is to expose these information to user space. | |
| The file will read "hotplug", "hardwired" and "not used" if the | |
| information is available, and "unknown" otherwise. | |
| What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/location | |
| Date: October 2018 | |
| Contact: Bjørn Mork <bjorn@mork.no> | |
| Description: | |
| Some platforms provide usb port physical location through | |
| firmware. This is used by the kernel to pair up logical ports | |
| mapping to the same physical connector. The attribute exposes the | |
| raw location value as a hex integer. | |
| What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/quirks | |
| Date: May 2018 | |
| Contact: Nicolas Boichat <drinkcat@chromium.org> | |
| Description: | |
| In some cases, we care about time-to-active for devices | |
| connected on a specific port (e.g. non-standard USB port like | |
| pogo pins), where the device to be connected is known in | |
| advance, and behaves well according to the specification. | |
| This attribute is a bit-field that controls the behavior of | |
| a specific port: | |
| - Bit 0 of this field selects the "old" enumeration scheme, | |
| as it is considerably faster (it only causes one USB reset | |
| instead of 2). | |
| The old enumeration scheme can also be selected globally | |
| using /sys/module/usbcore/parameters/old_scheme_first, but | |
| it is often not desirable as the new scheme was introduced to | |
| increase compatibility with more devices. | |
| - Bit 1 reduces TRSTRCY to the 10 ms that are required by the | |
| USB 2.0 specification, instead of the 50 ms that are normally | |
| used to help make enumeration work better on some high speed | |
| devices. | |
| What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/over_current_count | |
| Date: February 2018 | |
| Contact: Richard Leitner <richard.leitner@skidata.com> | |
| Description: | |
| Most hubs are able to detect over-current situations on their | |
| ports and report them to the kernel. This attribute is to expose | |
| the number of over-current situation occurred on a specific port | |
| to user space. This file will contain an unsigned 32 bit value | |
| which wraps to 0 after its maximum is reached. This file supports | |
| poll() for monitoring changes to this value in user space. | |
| Any time this value changes the corresponding hub device will send a | |
| udev event with the following attributes:: | |
| OVER_CURRENT_PORT=/sys/bus/usb/devices/.../<hub_interface>/port<X> | |
| OVER_CURRENT_COUNT=[current value of this sysfs attribute] | |
| What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/usb3_lpm_permit | |
| Date: November 2015 | |
| Contact: Lu Baolu <baolu.lu@linux.intel.com> | |
| Description: | |
| Some USB3.0 devices are not friendly to USB3 LPM. usb3_lpm_permit | |
| attribute allows enabling/disabling usb3 lpm of a port. It takes | |
| effect both before and after a usb device is enumerated. Supported | |
| values are "0" if both u1 and u2 are NOT permitted, "u1" if only u1 | |
| is permitted, "u2" if only u2 is permitted, "u1_u2" if both u1 and | |
| u2 are permitted. | |
| What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/connector | |
| Date: December 2021 | |
| Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com> | |
| Description: | |
| Link to the USB Type-C connector when available. This link is | |
| only created when USB Type-C Connector Class is enabled, and | |
| only if the system firmware is capable of describing the | |
| connection between a port and its connector. | |
| What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/disable | |
| Date: June 2022 | |
| Contact: Michael Grzeschik <m.grzeschik@pengutronix.de> | |
| Description: | |
| This file controls the state of a USB port, including | |
| Vbus power output (but only on hubs that support | |
| power switching -- most hubs don't support it). If | |
| a port is disabled, the port is unusable: Devices | |
| attached to the port will not be detected, initialized, | |
| or enumerated. | |
| What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/early_stop | |
| Date: Sep 2022 | |
| Contact: Ray Chi <raychi@google.com> | |
| Description: | |
| Some USB hosts have some watchdog mechanisms so that the device | |
| may enter ramdump if it takes a long time during port initialization. | |
| This attribute allows each port just has two attempts so that the | |
| port initialization will be failed quickly. In addition, if a port | |
| which is marked with early_stop has failed to initialize, it will ignore | |
| all future connections until this attribute is clear. | |
| What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/state | |
| Date: June 2023 | |
| Contact: Roy Luo <royluo@google.com> | |
| Description: | |
| Indicates current state of the USB device attached to the port. | |
| Valid states are: 'not-attached', 'attached', 'powered', | |
| 'reconnecting', 'unauthenticated', 'default', 'addressed', | |
| 'configured', and 'suspended'. This file supports poll() to | |
| monitor the state change from user space. | |
| What: /sys/bus/usb/devices/.../power/usb2_lpm_l1_timeout | |
| Date: May 2013 | |
| Contact: Mathias Nyman <mathias.nyman@linux.intel.com> | |
| Description: | |
| USB 2.0 devices may support hardware link power management (LPM) | |
| L1 sleep state. The usb2_lpm_l1_timeout attribute allows | |
| tuning the timeout for L1 inactivity timer (LPM timer), e.g. | |
| needed inactivity time before host requests the device to go to L1 sleep. | |
| Useful for power management tuning. | |
| Supported values are 0 - 65535 microseconds. | |
| What: /sys/bus/usb/devices/.../power/usb2_lpm_besl | |
| Date: May 2013 | |
| Contact: Mathias Nyman <mathias.nyman@linux.intel.com> | |
| Description: | |
| USB 2.0 devices that support hardware link power management (LPM) | |
| L1 sleep state now use a best effort service latency value (BESL) to | |
| indicate the best effort to resumption of service to the device after the | |
| initiation of the resume event. | |
| If the device does not have a preferred besl value then the host can select | |
| one instead. This usb2_lpm_besl attribute allows to tune the host selected besl | |
| value in order to tune power saving and service latency. | |
| Supported values are 0 - 15. | |
| More information on how besl values map to microseconds can be found in | |
| USB 2.0 ECN Errata for Link Power Management, section 4.10) | |
| What: /sys/bus/usb/devices/.../rx_lanes | |
| Date: March 2018 | |
| Contact: Mathias Nyman <mathias.nyman@linux.intel.com> | |
| Description: | |
| Number of rx lanes the device is using. | |
| USB 3.2 adds Dual-lane support, 2 rx and 2 tx lanes over Type-C. | |
| Inter-Chip SSIC devices support asymmetric lanes up to 4 lanes per | |
| direction. Devices before USB 3.2 are single lane (rx_lanes = 1) | |
| What: /sys/bus/usb/devices/.../tx_lanes | |
| Date: March 2018 | |
| Contact: Mathias Nyman <mathias.nyman@linux.intel.com> | |
| Description: | |
| Number of tx lanes the device is using. | |
| USB 3.2 adds Dual-lane support, 2 rx and 2 tx -lanes over Type-C. | |
| Inter-Chip SSIC devices support asymmetric lanes up to 4 lanes per | |
| direction. Devices before USB 3.2 are single lane (tx_lanes = 1) | |
| What: /sys/bus/usb/devices/.../typec | |
| Date: November 2023 | |
| Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com> | |
| Description: | |
| Symlink to the USB Type-C partner device. USB Type-C partner | |
| represents the component that communicates over the | |
| Configuration Channel (CC signal on USB Type-C connectors and | |
| cables) with the local port. | |
| What: /sys/bus/usb/devices/usbX/bAlternateSetting | |
| Description: | |
| The current interface alternate setting number, in decimal. | |
| See USB specs for its meaning. | |
| What: /sys/bus/usb/devices/usbX/bcdDevice | |
| Description: | |
| The device's release number, in hexadecimal. | |
| See USB specs for its meaning. | |
| What: /sys/bus/usb/devices/usbX/bConfigurationValue | |
| Description: | |
| While a USB device typically have just one configuration | |
| setting, some devices support multiple configurations. | |
| This value shows the current configuration, in decimal. | |
| Changing its value will change the device's configuration | |
| to another setting. | |
| The number of configurations supported by a device is at: | |
| /sys/bus/usb/devices/usbX/bNumConfigurations | |
| See USB specs for its meaning. | |
| What: /sys/bus/usb/devices/usbX/bDeviceClass | |
| Description: | |
| Class code of the device, in hexadecimal. | |
| See USB specs for its meaning. | |
| What: /sys/bus/usb/devices/usbX/bDeviceProtocol | |
| Description: | |
| Protocol code of the device, in hexadecimal. | |
| See USB specs for its meaning. | |
| What: /sys/bus/usb/devices/usbX/bDeviceSubClass | |
| Description: | |
| Subclass code of the device, in hexadecimal. | |
| See USB specs for its meaning. | |
| What: /sys/bus/usb/devices/usbX/bInterfaceClass | |
| Description: | |
| Class code of the interface, in hexadecimal. | |
| See USB specs for its meaning. | |
| What: /sys/bus/usb/devices/usbX/bInterfaceNumber | |
| Description: | |
| Interface number, in hexadecimal. | |
| See USB specs for its meaning. | |
| What: /sys/bus/usb/devices/usbX/bInterfaceProtocol | |
| Description: | |
| Protocol code of the interface, in hexadecimal. | |
| See USB specs for its meaning. | |
| What: /sys/bus/usb/devices/usbX/bInterfaceSubClass | |
| Description: | |
| Subclass code of the interface, in hexadecimal. | |
| See USB specs for its meaning. | |
| What: /sys/bus/usb/devices/usbX/bmAttributes | |
| Description: | |
| Attributes of the current configuration, in hexadecimal. | |
| See USB specs for its meaning. | |
| What: /sys/bus/usb/devices/usbX/bMaxPacketSize0 | |
| Description: | |
| Maximum endpoint 0 packet size, in decimal. | |
| See USB specs for its meaning. | |
| What: /sys/bus/usb/devices/usbX/bMaxPower | |
| Description: | |
| Maximum power consumption of the active configuration of | |
| the device, in miliamperes. | |
| What: /sys/bus/usb/devices/usbX/bNumConfigurations | |
| Description: | |
| Number of the possible configurations of the device, in | |
| decimal. The current configuration is controlled via: | |
| /sys/bus/usb/devices/usbX/bConfigurationValue | |
| See USB specs for its meaning. | |
| What: /sys/bus/usb/devices/usbX/bNumEndpoints | |
| Description: | |
| Number of endpoints used on this interface, in hexadecimal. | |
| See USB specs for its meaning. | |
| What: /sys/bus/usb/devices/usbX/bNumInterfaces | |
| Description: | |
| Number of interfaces on this device, in decimal. | |
| What: /sys/bus/usb/devices/usbX/busnum | |
| Description: | |
| Number of the bus. | |
| What: /sys/bus/usb/devices/usbX/configuration | |
| Description: | |
| Contents of the string descriptor associated with the | |
| current configuration. It may include the firmware version | |
| of a device and/or its serial number. | |
| What: /sys/bus/usb/devices/usbX/descriptors | |
| Description: | |
| Contains the interface descriptors, in binary. | |
| What: /sys/bus/usb/devices/usbX/bos_descriptors | |
| Date: March 2024 | |
| Contact: Elbert Mai <code@elbertmai.com> | |
| Description: | |
| Binary file containing the cached binary device object store (BOS) | |
| of the device. This consists of the BOS descriptor followed by the | |
| set of device capability descriptors. All descriptors read from | |
| this file are in bus-endian format. Note that the kernel will not | |
| request the BOS from a device if its bcdUSB is less than 0x0201. | |
| What: /sys/bus/usb/devices/usbX/idProduct | |
| Description: | |
| Product ID, in hexadecimal. | |
| What: /sys/bus/usb/devices/usbX/idVendor | |
| Description: | |
| Vendor ID, in hexadecimal. | |
| What: /sys/bus/usb/devices/usbX/devspec | |
| Description: | |
| Displays the Device Tree Open Firmware node of the interface. | |
| What: /sys/bus/usb/devices/usbX/avoid_reset_quirk | |
| Description: | |
| Most devices have this set to zero. | |
| If the value is 1, enable a USB quirk that prevents this | |
| device to use reset. | |
| (read/write) | |
| What: /sys/bus/usb/devices/usbX/devnum | |
| Description: | |
| USB interface device number, in decimal. | |
| What: /sys/bus/usb/devices/usbX/devpath | |
| Description: | |
| String containing the USB interface device path. | |
| What: /sys/bus/usb/devices/usbX/manufacturer | |
| Description: | |
| Vendor specific string containing the name of the | |
| manufacturer of the device. | |
| What: /sys/bus/usb/devices/usbX/maxchild | |
| Description: | |
| Number of ports of an USB hub | |
| What: /sys/bus/usb/devices/usbX/persist | |
| Description: | |
| Keeps the device even if it gets disconnected. | |
| What: /sys/bus/usb/devices/usbX/product | |
| Description: | |
| Vendor specific string containing the name of the | |
| device's product. | |
| What: /sys/bus/usb/devices/usbX/speed | |
| Description: | |
| Shows the device's max speed, according to the USB version, | |
| in Mbps. | |
| Can be: | |
| ======= ==================== | |
| Unknown speed unknown | |
| 1.5 Low speed | |
| 15 Full speed | |
| 480 High Speed | |
| 5000 Super Speed | |
| 10000 Super Speed+ | |
| 20000 Super Speed+ Gen 2x2 | |
| ======= ==================== | |
| What: /sys/bus/usb/devices/usbX/supports_autosuspend | |
| Description: | |
| Returns 1 if the device doesn't support autosuspend. | |
| Otherwise, returns 0. | |
| What: /sys/bus/usb/devices/usbX/urbnum | |
| Description: | |
| Number of URBs submitted for the whole device. | |
| What: /sys/bus/usb/devices/usbX/version | |
| Description: | |
| String containing the USB device version, as encoded | |
| at the BCD descriptor. | |
| What: /sys/bus/usb/devices/usbX/power/autosuspend | |
| Description: | |
| Time in milliseconds for the device to autosuspend. If the | |
| value is negative, then autosuspend is prevented. | |
| (read/write) | |
| What: /sys/bus/usb/devices/usbX/power/active_duration | |
| Description: | |
| The total time the device has not been suspended. | |
| What: /sys/bus/usb/devices/usbX/power/connected_duration | |
| Description: | |
| The total time (in msec) that the device has been connected. | |
| What: /sys/bus/usb/devices/usbX/power/level | |
| Description: | |
| What: /sys/bus/usb/devices/usbX/ep_<N>/bEndpointAddress | |
| Description: | |
| The address of the endpoint described by this descriptor, | |
| in hexadecimal. The endpoint direction on this bitmapped field | |
| is also shown at: | |
| /sys/bus/usb/devices/usbX/ep_<N>/direction | |
| See USB specs for its meaning. | |
| What: /sys/bus/usb/devices/usbX/ep_<N>/bInterval | |
| Description: | |
| The interval of the endpoint as described on its descriptor, | |
| in hexadecimal. The actual interval depends on the version | |
| of the USB. Also shown in time units at | |
| /sys/bus/usb/devices/usbX/ep_<N>/interval. | |
| What: /sys/bus/usb/devices/usbX/ep_<N>/bLength | |
| Description: | |
| Number of bytes of the endpoint descriptor, in hexadecimal. | |
| What: /sys/bus/usb/devices/usbX/ep_<N>/bmAttributes | |
| Description: | |
| Attributes which apply to the endpoint as described on its | |
| descriptor, in hexadecimal. The endpoint type on this | |
| bitmapped field is also shown at: | |
| /sys/bus/usb/devices/usbX/ep_<N>/type | |
| See USB specs for its meaning. | |
| What: /sys/bus/usb/devices/usbX/ep_<N>/direction | |
| Description: | |
| Direction of the endpoint. Can be: | |
| - both (on control endpoints) | |
| - in | |
| - out | |
| What: /sys/bus/usb/devices/usbX/ep_<N>/interval | |
| Description: | |
| Interval for polling endpoint for data transfers, in | |
| milisseconds or microseconds. | |
| What: /sys/bus/usb/devices/usbX/ep_<N>/type | |
| Description: | |
| Descriptor type. Can be: | |
| - Control | |
| - Isoc | |
| - Bulk | |
| - Interrupt | |
| - unknown | |
| What: /sys/bus/usb/devices/usbX/ep_<N>/wMaxPacketSize | |
| Description: | |
| Maximum packet size this endpoint is capable of | |
| sending or receiving, in hexadecimal. |