1What: /sys/bus/usb/devices/<INTERFACE>/authorized 2Date: August 2015 3Description: 4 This allows to authorize (1) or deauthorize (0) 5 individual interfaces instead a whole device 6 in contrast to the device authorization. 7 If a deauthorized interface will be authorized 8 so the driver probing must be triggered manually 9 by writing INTERFACE to /sys/bus/usb/drivers_probe 10 This allows to avoid side-effects with drivers 11 that need multiple interfaces. 12 13 A deauthorized interface cannot be probed or claimed. 14 15What: /sys/bus/usb/devices/usbX/interface_authorized_default 16Date: August 2015 17Description: 18 This is used as value that determines if interfaces 19 would be authorized by default. 20 The value can be 1 or 0. It's by default 1. 21 22What: /sys/bus/usb/device/.../authorized 23Date: July 2008 24KernelVersion: 2.6.26 25Contact: David Vrabel <david.vrabel@csr.com> 26Description: 27 Authorized devices are available for use by device 28 drivers, non-authorized one are not. By default, wired 29 USB devices are authorized. 30 31What: /sys/bus/usb/drivers/.../new_id 32Date: October 2011 33Contact: linux-usb@vger.kernel.org 34Description: 35 Writing a device ID to this file will attempt to 36 dynamically add a new device ID to a USB device driver. 37 This may allow the driver to support more hardware than 38 was included in the driver's static device ID support 39 table at compile time. The format for the device ID is: 40 idVendor idProduct bInterfaceClass RefIdVendor RefIdProduct 41 The vendor ID and device ID fields are required, the 42 rest is optional. The `Ref*` tuple can be used to tell the 43 driver to use the same driver_data for the new device as 44 it is used for the reference device. 45 Upon successfully adding an ID, the driver will probe 46 for the device and attempt to bind to it. For example:: 47 48 # echo "8086 10f5" > /sys/bus/usb/drivers/foo/new_id 49 50 Here add a new device (0458:7045) using driver_data from 51 an already supported device (0458:704c):: 52 53 # echo "0458 7045 0 0458 704c" > /sys/bus/usb/drivers/foo/new_id 54 55 Reading from this file will list all dynamically added 56 device IDs in the same format, with one entry per 57 line. For example:: 58 59 # cat /sys/bus/usb/drivers/foo/new_id 60 8086 10f5 61 dead beef 06 62 f00d cafe 63 64 The list will be truncated at PAGE_SIZE bytes due to 65 sysfs restrictions. 66 67What: /sys/bus/usb-serial/drivers/.../new_id 68Date: October 2011 69Contact: linux-usb@vger.kernel.org 70Description: 71 For serial USB drivers, this attribute appears under the 72 extra bus folder "usb-serial" in sysfs; apart from that 73 difference, all descriptions from the entry 74 "/sys/bus/usb/drivers/.../new_id" apply. 75 76What: /sys/bus/usb/drivers/.../remove_id 77Date: November 2009 78Contact: CHENG Renquan <rqcheng@smu.edu.sg> 79Description: 80 Writing a device ID to this file will remove an ID 81 that was dynamically added via the new_id sysfs entry. 82 The format for the device ID is: 83 idVendor idProduct. After successfully 84 removing an ID, the driver will no longer support the 85 device. This is useful to ensure auto probing won't 86 match the driver to the device. For example:: 87 88 # echo "046d c315" > /sys/bus/usb/drivers/foo/remove_id 89 90 Reading from this file will list the dynamically added 91 device IDs, exactly like reading from the entry 92 "/sys/bus/usb/drivers/.../new_id" 93 94What: /sys/bus/usb/devices/.../power/usb2_hardware_lpm 95Date: September 2011 96Contact: Andiry Xu <andiry.xu@amd.com> 97Description: 98 If CONFIG_PM is set and a USB 2.0 lpm-capable device is plugged 99 in to a xHCI host which support link PM, it will perform a LPM 100 test; if the test is passed and host supports USB2 hardware LPM 101 (xHCI 1.0 feature), USB2 hardware LPM will be enabled for the 102 device and the USB device directory will contain a file named 103 power/usb2_hardware_lpm. The file holds a string value (enable 104 or disable) indicating whether or not USB2 hardware LPM is 105 enabled for the device. Developer can write y/Y/1 or n/N/0 to 106 the file to enable/disable the feature. 107 108What: /sys/bus/usb/devices/.../power/usb3_hardware_lpm_u1 109 /sys/bus/usb/devices/.../power/usb3_hardware_lpm_u2 110Date: November 2015 111Contact: Kevin Strasser <kevin.strasser@linux.intel.com> 112 Lu Baolu <baolu.lu@linux.intel.com> 113Description: 114 If CONFIG_PM is set and a USB 3.0 lpm-capable device is plugged 115 in to a xHCI host which supports link PM, it will check if U1 116 and U2 exit latencies have been set in the BOS descriptor; if 117 the check is passed and the host supports USB3 hardware LPM, 118 USB3 hardware LPM will be enabled for the device and the USB 119 device directory will contain two files named 120 power/usb3_hardware_lpm_u1 and power/usb3_hardware_lpm_u2. These 121 files hold a string value (enable or disable) indicating whether 122 or not USB3 hardware LPM U1 or U2 is enabled for the device. 123 124What: /sys/bus/usb/devices/.../ltm_capable 125Date: July 2012 126Contact: Sarah Sharp <sarah.a.sharp@linux.intel.com> 127Description: 128 USB 3.0 devices may optionally support Latency Tolerance 129 Messaging (LTM). They indicate their support by setting a bit 130 in the bmAttributes field of their SuperSpeed BOS descriptors. 131 If that bit is set for the device, ltm_capable will read "yes". 132 If the device doesn't support LTM, the file will read "no". 133 The file will be present for all speeds of USB devices, and will 134 always read "no" for USB 1.1 and USB 2.0 devices. 135 136What: /sys/bus/usb/devices/<INTERFACE>/wireless_status 137Date: February 2023 138Contact: Bastien Nocera <hadess@hadess.net> 139Description: 140 Some USB devices use a USB receiver dongle to communicate 141 wirelessly with their device using proprietary protocols. This 142 attribute allows user-space to know whether the device is 143 connected to its receiver dongle, and, for example, consider 144 the device to be absent when choosing whether to show the 145 device's battery, show a headset in a list of outputs, or show 146 an on-screen keyboard if the only wireless keyboard is 147 turned off. 148 This attribute is not to be used to replace protocol specific 149 statuses available in WWAN, WLAN/Wi-Fi, Bluetooth, etc. 150 If the device does not use a receiver dongle with a wireless 151 device, then this attribute will not exist. 152 153What: /sys/bus/usb/devices/.../<hub_interface>/port<X> 154Date: August 2012 155Contact: Lan Tianyu <tianyu.lan@intel.com> 156Description: 157 The /sys/bus/usb/devices/.../<hub_interface>/port<X> 158 is usb port device's sysfs directory. 159 160What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/connect_type 161Date: January 2013 162Contact: Lan Tianyu <tianyu.lan@intel.com> 163Description: 164 Some platforms provide usb port connect types through ACPI. 165 This attribute is to expose these information to user space. 166 The file will read "hotplug", "hardwired" and "not used" if the 167 information is available, and "unknown" otherwise. 168 169What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/location 170Date: October 2018 171Contact: Bjørn Mork <bjorn@mork.no> 172Description: 173 Some platforms provide usb port physical location through 174 firmware. This is used by the kernel to pair up logical ports 175 mapping to the same physical connector. The attribute exposes the 176 raw location value as a hex integer. 177 178 179What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/quirks 180Date: May 2018 181Contact: Nicolas Boichat <drinkcat@chromium.org> 182Description: 183 In some cases, we care about time-to-active for devices 184 connected on a specific port (e.g. non-standard USB port like 185 pogo pins), where the device to be connected is known in 186 advance, and behaves well according to the specification. 187 This attribute is a bit-field that controls the behavior of 188 a specific port: 189 190 - Bit 0 of this field selects the "old" enumeration scheme, 191 as it is considerably faster (it only causes one USB reset 192 instead of 2). 193 194 The old enumeration scheme can also be selected globally 195 using /sys/module/usbcore/parameters/old_scheme_first, but 196 it is often not desirable as the new scheme was introduced to 197 increase compatibility with more devices. 198 - Bit 1 reduces TRSTRCY to the 10 ms that are required by the 199 USB 2.0 specification, instead of the 50 ms that are normally 200 used to help make enumeration work better on some high speed 201 devices. 202 203What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/over_current_count 204Date: February 2018 205Contact: Richard Leitner <richard.leitner@skidata.com> 206Description: 207 Most hubs are able to detect over-current situations on their 208 ports and report them to the kernel. This attribute is to expose 209 the number of over-current situation occurred on a specific port 210 to user space. This file will contain an unsigned 32 bit value 211 which wraps to 0 after its maximum is reached. This file supports 212 poll() for monitoring changes to this value in user space. 213 214 Any time this value changes the corresponding hub device will send a 215 udev event with the following attributes:: 216 217 OVER_CURRENT_PORT=/sys/bus/usb/devices/.../<hub_interface>/port<X> 218 OVER_CURRENT_COUNT=[current value of this sysfs attribute] 219 220What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/usb3_lpm_permit 221Date: November 2015 222Contact: Lu Baolu <baolu.lu@linux.intel.com> 223Description: 224 Some USB3.0 devices are not friendly to USB3 LPM. usb3_lpm_permit 225 attribute allows enabling/disabling usb3 lpm of a port. It takes 226 effect both before and after a usb device is enumerated. Supported 227 values are "0" if both u1 and u2 are NOT permitted, "u1" if only u1 228 is permitted, "u2" if only u2 is permitted, "u1_u2" if both u1 and 229 u2 are permitted. 230 231What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/connector 232Date: December 2021 233Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com> 234Description: 235 Link to the USB Type-C connector when available. This link is 236 only created when USB Type-C Connector Class is enabled, and 237 only if the system firmware is capable of describing the 238 connection between a port and its connector. 239 240What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/disable 241Date: June 2022 242Contact: Michael Grzeschik <m.grzeschik@pengutronix.de> 243Description: 244 This file controls the state of a USB port, including 245 Vbus power output (but only on hubs that support 246 power switching -- most hubs don't support it). If 247 a port is disabled, the port is unusable: Devices 248 attached to the port will not be detected, initialized, 249 or enumerated. 250 251What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/early_stop 252Date: Sep 2022 253Contact: Ray Chi <raychi@google.com> 254Description: 255 Some USB hosts have some watchdog mechanisms so that the device 256 may enter ramdump if it takes a long time during port initialization. 257 This attribute allows each port just has two attempts so that the 258 port initialization will be failed quickly. In addition, if a port 259 which is marked with early_stop has failed to initialize, it will ignore 260 all future connections until this attribute is clear. 261 262What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/state 263Date: June 2023 264Contact: Roy Luo <royluo@google.com> 265Description: 266 Indicates current state of the USB device attached to the port. 267 Valid states are: 'not-attached', 'attached', 'powered', 268 'reconnecting', 'unauthenticated', 'default', 'addressed', 269 'configured', and 'suspended'. This file supports poll() to 270 monitor the state change from user space. 271 272What: /sys/bus/usb/devices/.../power/usb2_lpm_l1_timeout 273Date: May 2013 274Contact: Mathias Nyman <mathias.nyman@linux.intel.com> 275Description: 276 USB 2.0 devices may support hardware link power management (LPM) 277 L1 sleep state. The usb2_lpm_l1_timeout attribute allows 278 tuning the timeout for L1 inactivity timer (LPM timer), e.g. 279 needed inactivity time before host requests the device to go to L1 sleep. 280 Useful for power management tuning. 281 Supported values are 0 - 65535 microseconds. 282 283What: /sys/bus/usb/devices/.../power/usb2_lpm_besl 284Date: May 2013 285Contact: Mathias Nyman <mathias.nyman@linux.intel.com> 286Description: 287 USB 2.0 devices that support hardware link power management (LPM) 288 L1 sleep state now use a best effort service latency value (BESL) to 289 indicate the best effort to resumption of service to the device after the 290 initiation of the resume event. 291 If the device does not have a preferred besl value then the host can select 292 one instead. This usb2_lpm_besl attribute allows to tune the host selected besl 293 value in order to tune power saving and service latency. 294 295 Supported values are 0 - 15. 296 More information on how besl values map to microseconds can be found in 297 USB 2.0 ECN Errata for Link Power Management, section 4.10 298 299What: /sys/bus/usb/devices/.../rx_lanes 300Date: March 2018 301Contact: Mathias Nyman <mathias.nyman@linux.intel.com> 302Description: 303 Number of rx lanes the device is using. 304 USB 3.2 adds Dual-lane support, 2 rx and 2 tx lanes over Type-C. 305 Inter-Chip SSIC devices support asymmetric lanes up to 4 lanes per 306 direction. Devices before USB 3.2 are single lane (rx_lanes = 1) 307 308What: /sys/bus/usb/devices/.../tx_lanes 309Date: March 2018 310Contact: Mathias Nyman <mathias.nyman@linux.intel.com> 311Description: 312 Number of tx lanes the device is using. 313 USB 3.2 adds Dual-lane support, 2 rx and 2 tx -lanes over Type-C. 314 Inter-Chip SSIC devices support asymmetric lanes up to 4 lanes per 315 direction. Devices before USB 3.2 are single lane (tx_lanes = 1) 316 317What: /sys/bus/usb/devices/.../typec 318Date: November 2023 319Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com> 320Description: 321 Symlink to the USB Type-C partner device. USB Type-C partner 322 represents the component that communicates over the 323 Configuration Channel (CC signal on USB Type-C connectors and 324 cables) with the local port. 325 326What: /sys/bus/usb/devices/usbX/bAlternateSetting 327Description: 328 The current interface alternate setting number, in decimal. 329 330 See USB specs for its meaning. 331 332What: /sys/bus/usb/devices/usbX/bcdDevice 333Description: 334 The device's release number, in hexadecimal. 335 336 See USB specs for its meaning. 337 338What: /sys/bus/usb/devices/usbX/bConfigurationValue 339Description: 340 While a USB device typically have just one configuration 341 setting, some devices support multiple configurations. 342 343 This value shows the current configuration, in decimal. 344 345 Changing its value will change the device's configuration 346 to another setting. 347 348 The number of configurations supported by a device is at: 349 350 /sys/bus/usb/devices/usbX/bNumConfigurations 351 352 See USB specs for its meaning. 353 354What: /sys/bus/usb/devices/usbX/bDeviceClass 355Description: 356 Class code of the device, in hexadecimal. 357 358 See USB specs for its meaning. 359 360What: /sys/bus/usb/devices/usbX/bDeviceProtocol 361Description: 362 Protocol code of the device, in hexadecimal. 363 364 See USB specs for its meaning. 365 366What: /sys/bus/usb/devices/usbX/bDeviceSubClass 367Description: 368 Subclass code of the device, in hexadecimal. 369 370 See USB specs for its meaning. 371 372What: /sys/bus/usb/devices/usbX/bInterfaceClass 373Description: 374 Class code of the interface, in hexadecimal. 375 376 See USB specs for its meaning. 377 378What: /sys/bus/usb/devices/usbX/bInterfaceNumber 379Description: 380 Interface number, in hexadecimal. 381 382 See USB specs for its meaning. 383 384What: /sys/bus/usb/devices/usbX/bInterfaceProtocol 385Description: 386 Protocol code of the interface, in hexadecimal. 387 388 See USB specs for its meaning. 389 390What: /sys/bus/usb/devices/usbX/bInterfaceSubClass 391Description: 392 Subclass code of the interface, in hexadecimal. 393 394 See USB specs for its meaning. 395 396What: /sys/bus/usb/devices/usbX/bmAttributes 397Description: 398 Attributes of the current configuration, in hexadecimal. 399 400 See USB specs for its meaning. 401 402What: /sys/bus/usb/devices/usbX/bMaxPacketSize0 403Description: 404 Maximum endpoint 0 packet size, in decimal. 405 406 See USB specs for its meaning. 407 408What: /sys/bus/usb/devices/usbX/bMaxPower 409Description: 410 Maximum power consumption of the active configuration of 411 the device, in miliamperes. 412 413What: /sys/bus/usb/devices/usbX/bNumConfigurations 414Description: 415 Number of the possible configurations of the device, in 416 decimal. The current configuration is controlled via: 417 418 /sys/bus/usb/devices/usbX/bConfigurationValue 419 420 See USB specs for its meaning. 421 422What: /sys/bus/usb/devices/usbX/bNumEndpoints 423Description: 424 Number of endpoints used on this interface, in hexadecimal. 425 426 See USB specs for its meaning. 427 428What: /sys/bus/usb/devices/usbX/bNumInterfaces 429Description: 430 Number of interfaces on this device, in decimal. 431 432What: /sys/bus/usb/devices/usbX/busnum 433Description: 434 Number of the bus. 435 436What: /sys/bus/usb/devices/usbX/configuration 437Description: 438 Contents of the string descriptor associated with the 439 current configuration. It may include the firmware version 440 of a device and/or its serial number. 441 442What: /sys/bus/usb/devices/usbX/descriptors 443Description: 444 Contains the interface descriptors, in binary. 445 446What: /sys/bus/usb/devices/usbX/bos_descriptors 447Date: March 2024 448Contact: Elbert Mai <code@elbertmai.com> 449Description: 450 Binary file containing the cached binary device object store (BOS) 451 of the device. This consists of the BOS descriptor followed by the 452 set of device capability descriptors. All descriptors read from 453 this file are in bus-endian format. Note that the kernel will not 454 request the BOS from a device if its bcdUSB is less than 0x0201. 455 456What: /sys/bus/usb/devices/usbX/idProduct 457Description: 458 Product ID, in hexadecimal. 459 460What: /sys/bus/usb/devices/usbX/idVendor 461Description: 462 Vendor ID, in hexadecimal. 463 464What: /sys/bus/usb/devices/usbX/devspec 465Description: 466 Displays the Device Tree Open Firmware node of the interface. 467 468What: /sys/bus/usb/devices/usbX/avoid_reset_quirk 469Description: 470 Most devices have this set to zero. 471 472 If the value is 1, enable a USB quirk that prevents this 473 device to use reset. 474 475 (read/write) 476 477What: /sys/bus/usb/devices/usbX/devnum 478Description: 479 USB interface device number, in decimal. 480 481What: /sys/bus/usb/devices/usbX/devpath 482Description: 483 String containing the USB interface device path. 484 485What: /sys/bus/usb/devices/usbX/manufacturer 486Description: 487 Vendor specific string containing the name of the 488 manufacturer of the device. 489 490What: /sys/bus/usb/devices/usbX/maxchild 491Description: 492 Number of ports of an USB hub 493 494What: /sys/bus/usb/devices/usbX/persist 495Description: 496 Keeps the device even if it gets disconnected. 497 498What: /sys/bus/usb/devices/usbX/product 499Description: 500 Vendor specific string containing the name of the 501 device's product. 502 503What: /sys/bus/usb/devices/usbX/speed 504Description: 505 Shows the device's max speed, according to the USB version, 506 in Mbps. 507 Can be: 508 509 ======= ==================== 510 Unknown speed unknown 511 1.5 Low speed 512 15 Full speed 513 480 High Speed 514 5000 Super Speed 515 10000 Super Speed+ 516 20000 Super Speed+ Gen 2x2 517 ======= ==================== 518 519What: /sys/bus/usb/devices/usbX/supports_autosuspend 520Description: 521 Returns 1 if the device doesn't support autosuspend. 522 Otherwise, returns 0. 523 524What: /sys/bus/usb/devices/usbX/urbnum 525Description: 526 Number of URBs submitted for the whole device. 527 528What: /sys/bus/usb/devices/usbX/version 529Description: 530 String containing the USB device version, as encoded 531 at the BCD descriptor. 532 533What: /sys/bus/usb/devices/usbX/power/autosuspend 534Description: 535 Time in milliseconds for the device to autosuspend. If the 536 value is negative, then autosuspend is prevented. 537 538 (read/write) 539 540What: /sys/bus/usb/devices/usbX/power/active_duration 541Description: 542 The total time the device has not been suspended. 543 544What: /sys/bus/usb/devices/usbX/power/connected_duration 545Description: 546 The total time (in msec) that the device has been connected. 547 548What: /sys/bus/usb/devices/usbX/power/level 549Description: 550 551What: /sys/bus/usb/devices/usbX/ep_<N>/bEndpointAddress 552Description: 553 The address of the endpoint described by this descriptor, 554 in hexadecimal. The endpoint direction on this bitmapped field 555 is also shown at: 556 557 /sys/bus/usb/devices/usbX/ep_<N>/direction 558 559 See USB specs for its meaning. 560 561What: /sys/bus/usb/devices/usbX/ep_<N>/bInterval 562Description: 563 The interval of the endpoint as described on its descriptor, 564 in hexadecimal. The actual interval depends on the version 565 of the USB. Also shown in time units at 566 /sys/bus/usb/devices/usbX/ep_<N>/interval. 567 568What: /sys/bus/usb/devices/usbX/ep_<N>/bLength 569Description: 570 Number of bytes of the endpoint descriptor, in hexadecimal. 571 572What: /sys/bus/usb/devices/usbX/ep_<N>/bmAttributes 573Description: 574 Attributes which apply to the endpoint as described on its 575 descriptor, in hexadecimal. The endpoint type on this 576 bitmapped field is also shown at: 577 578 /sys/bus/usb/devices/usbX/ep_<N>/type 579 580 See USB specs for its meaning. 581 582What: /sys/bus/usb/devices/usbX/ep_<N>/direction 583Description: 584 Direction of the endpoint. Can be: 585 586 - both (on control endpoints) 587 - in 588 - out 589 590What: /sys/bus/usb/devices/usbX/ep_<N>/interval 591Description: 592 Interval for polling endpoint for data transfers, in 593 milisseconds or microseconds. 594 595What: /sys/bus/usb/devices/usbX/ep_<N>/type 596Description: 597 Descriptor type. Can be: 598 599 - Control 600 - Isoc 601 - Bulk 602 - Interrupt 603 - unknown 604 605What: /sys/bus/usb/devices/usbX/ep_<N>/wMaxPacketSize 606Description: 607 Maximum packet size this endpoint is capable of 608 sending or receiving, in hexadecimal. 609