¿Cómo puedo estar seguro de que he conectado un dispositivo a un puerto USB 3?

¿Cómo puedo estar seguro de que he conectado un dispositivo a un puerto USB 3?

Tengo varios puertos USB en mi computadora, algunos USB 2 y otros USB 3. Quiero conectar un dispositivo a un puerto USB 3. Desafortunadamente, son todos negros, por lo que no puedo usar la regla general habitual de que "los puertos USB 3.0 son azules".

Esta es una máquina Linux, entonces, ¿hay alguna forma de saber si conecté el dispositivo a un puerto USB 3, tal vez usando alguna utilidad de línea de comando o inspeccionando algunos mensajes del kernel?

Respuesta1

Puede determinar la versión USB ejecutandolsusb

  • 12M = 12MBit/s = USB1
  • 480M = 480MBit/s = USB2
  • 5000M = 5000MBit/s = USB3.0 también conocido como USB3.1 gen. 1
  • 10000M = 10000MBit/s = USB3.1 gen. 2

Intente usar algo como:

lsusb -D /dev/bus/usb/002/005

El USB 2.00/3.00 corresponde al USB 2.0/3.0

Quizás incluso intente usarlsusb -t

La primera tabla de conversión le ayudará a determinar la versión USB.

Echa un vistazo aESTEenlace para más ejemplos.

Respuesta2

Como señalaron @MarkHu y @Matthew, la respuesta actualmente aceptada (lsusb -D) tiene el potencial de ser engañosa, ya que enumera las velocidades admitidas por el dispositivo, no la velocidad real. O al menos no pude usar su salida para encontrar la velocidad actual del dispositivo.

¿Importa si es un puerto USB 3 si no negocia velocidades de USB 3?

Mirar la velocidad real en una máquina Linux es un poco complicado; lsusb no parece ofrecer, en este momento, una solución lista para usar. Eso es lo que encontré que estaba funcionando. Primero, enumere todos sus dispositivos y concentradores conectados para identificar su dispositivo:

> lsusb
Bus 002 Device 003: ID 0424:2660 Microchip Technology, Inc. (formerly SMSC) Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 1058:25ee Western Digital Technologies, Inc.
Bus 001 Device 003: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

En mi caso, estoy mirando la velocidad de mi disco externo WD MyBook. De ahí la línea interesante es:

Bus 001 Device 004: ID 1058:25ee Western Digital Technologies, Inc.

Pero parece que la parte "Bus 001 Dispositivo 004" no nos es útil para encontrar la velocidad actual del dispositivo. En su lugar, necesitamos los dos números separados por dos puntos 1058:25ee, la identificación del proveedor y la identificación del producto para dicho dispositivo.

Ahora debe verificar el /sys/devicesdirectorio para ver el contenido del idVendorarchivo, buscando la identificación del proveedor arriba (reemplace 1058 con su propia identificación del proveedor)

> find /sys/devices/ -name idVendor -print -exec cat {} \; | grep -B 1 1058
./pci0000:00/0000:00:1a.0/usb1/1-1/1-1.6/idVendor
1058

Ahora tome la ruta de salida arriba aquí y reemplácela idVendorcon speedy observe su contenido:

> cat ./pci0000:00/0000:00:1a.0/usb1/1-1/1-1.6/speed
480

De esta manera descubrirás una conexión USB 2.0 de 480 Mbps.

Si tiene varios dispositivos conectados, idProducttambién puede consultar el contenido. Si tienes variosidénticodispositivos, busque el contenido de serialtambién.

Respuesta3

Mi experiencia es que el lsusb -Dcomando puede ser engañoso si informa "capacidades" no habilitadas actualmente por el tipo de conector al que está conectado su dispositivo. Vea a continuación el ejemplo de salida filtrada (la salida completa sudo lsusb -D ${USB_DEVICE_PATH}fue de más de 80 líneas). En este ejemplo, deduzco bcdUSB 3.00que debería implicar Device can operate at SuperSpeed (5Gbps), aunque esa línea todavía estaba presente cuando conecté mi unidad a un conector USB 2 para comparar.

$ lsusb -D /dev/bus/usb/007/003 | egrep -i 'usb|speed|version|Mbps|gbps|id|speed'

Device: ID 174c:1153 ASMedia Technology Inc. ASM2115 SATA 6Gb/s bridge
  bcdUSB               3.00
  idVendor           0x174c ASMedia Technology Inc.
  idProduct          0x1153 ASM2115 SATA 6Gb/s bridge

  SuperSpeed USB Device Capability:
    wSpeedsSupported   0x000e
      Device can operate at Full Speed (12Mbps)
      Device can operate at High Speed (480Mbps)
      Device can operate at SuperSpeed (5Gbps)
      Lowest fully-functional device speed is Full Speed (12Mbps)

Tenga en cuenta también que la idProductlínea contenía algún texto de asesoramiento/marketing sobre 6Gb/sel cual no debe interpretarse como una velocidad alcanzable.

Comando corto alternativo que podría resultar más útil:

$ sudo lsusb -t | egrep -i "storage" -B1

/:  Bus 07.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
    |__ Port 1: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage, 5000M

Respuesta4

Si desea conocer la velocidad real de la conexión (a diferencia de las capacidades informadas por lsusb), puede leer los archivos de "velocidad" desde /sys/devices. Suponiendo que puede conectar y desconectar el dispositivo libremente, puede utilizar el siguiente script para que el proceso sea semiautomático. A continuación se describe otro script para obtener una lista completa.

  1. Desconecta el dispositivo
  2. Inicie el guión. Le pedirá conectar el dispositivo y presione ENTER
  3. Conecte el dispositivo
  4. Presione ENTRAR
  5. El script informa la velocidad de conexión correspondiente:
/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2/speed    480

O:

/sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.3/2-3.3.1/speed    5000

Estas son las velocidades posibles, en Mbit/s:

  • 1.5 = USB 1.0/baja velocidad
  • 12 = USB 1.1/velocidad completa
  • 480 = USB 2.0/alta velocidad
  • 5000 = USB 3.0/SuperVelocidad
  • 10000 = USB 3.1/SuperVelocidad

Y aquí está el guión. Yo lo llamo usbspeed-get:

#!/bin/bash
# https://superuser.com/a/1780101/
set -e

LIST1=`mktemp`
LIST2=`mktemp`
echo "Getting list of current devices..."
find /sys/devices -name speed | sort > "$LIST1"
echo -n "Now plug the relevant USB device and press ENTER..."
read dummy
find /sys/devices -name speed | sort > "$LIST2"

comm -3 "$LIST1" "$LIST2" | while read f ; do
echo -n "$f" " "
cat "$f"
done | column -t -s' '

rm  "$LIST1" "$LIST2"

Si prefiere tener una descripción general de todos los dispositivos y sus velocidades, puede utilizar el siguiente script. Yo lo llamo usbspeed-list.

#!/bin/bash
# https://superuser.com/a/1780101/

sep="|"
find /sys/devices -name speed | grep usb  | while read f ; do
  dir=`dirname "$f"`
  for name in speed manufacturer product ; do
     cat "$dir/$name" 2>/dev/null | tr '\n' ' ' 
     echo -n "$sep"
  done
  echo -n "$dir$sep"
  echo
done | column -t --separator "$sep"

De forma predeterminada, generará los dispositivos en el orden en que se encuentran en /sys/devices. Si quieres ordenarlos por velocidad, puedes combinarlo con sort -n:

usbspeed-list | sort -n
1.5                                        Keyboard                    /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.4/1-3.4.4/1-3.4.4.2              
1.5     Texas Instruments                  TPS65983B                   /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.3/1-3.3.2                        
12      Silicon Laboratories               EFM8 HID ISP                /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.3/1-3.3.3                        
12                                                                     /sys/devices/pci0000:00/0000:00:14.0/usb1/1-14                                     
480     GenesysLogic                       USB2.0 Hub                  /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.4/1-3.4.4                        
480     GenesysLogic                       USB2.0 Hub                  /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.4/1-3.4.4/1-3.4.4.4              
480     Linux 5.19.0-38-generic xhci-hcd   xHCI Host Controller        /sys/devices/pci0000:00/0000:00:14.0/usb1                                          
480     Sonix Technology Co., Ltd.         USB2.0 Camera               /sys/devices/pci0000:00/0000:00:14.0/usb1/1-8                                      
480                                        USB2.0 Hub                  /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.4/1-3.4.4/1-3.4.4.1              
480     VIA Labs, Inc.                     USB2.0 Hub                  /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3                                      
480     VIA Labs, Inc.                     USB2.0 Hub                  /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.3                                
480     VIA Labs, Inc.                     USB2.0 Hub                  /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.4                                
1000                                                                   /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1:1.5/net/enx806d9711f2b1  
5000    DisplayLink                        USB-C Triple-4K Dock        /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1                                
5000    Generic                            USB Storage                 /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.4/2-3.4.4/2-3.4.4.4/2-3.4.4.4.4  
5000    GenesysLogic                       USB3.0 Hub                  /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.4/2-3.4.4                        
5000    GenesysLogic                       USB3.0 Hub                  /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.4/2-3.4.4/2-3.4.4.4              
5000    Prolific Technology Inc.           ATAPI-6 Bridge Controller   /sys/devices/pci0000:00/0000:00:14.0/usb2/2-2                                      
5000    Seagate                            BUP Portable                /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.2                                
5000    Space keys                         USB3.1 Storage Device       /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.3/2-3.3.1                        
5000    VIA Labs, Inc.                     USB3.0 Hub                  /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3                                      
5000    VIA Labs, Inc.                     USB3.0 Hub                  /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.3                                
5000    VIA Labs, Inc.                     USB3.0 Hub                  /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.4                                
10000   Linux 5.19.0-38-generic xhci-hcd   xHCI Host Controller        /sys/devices/pci0000:00/0000:00:14.0/usb2 

Aquí el teclado está conectado a una velocidad muy baja (1,5), lo cual es normal, y la base del disco duro USB (controlador de puente ATAPI-6) está conectada a 5000 MBit/s.

Otra forma de enumerar los dispositivos y su velocidad es el script "dispositivos USB" proporcionado porusbutilse instalado por defecto en algunas distribuciones. Es más genérico pero también muy detallado. Informa la velocidad en la primera línea de la descripción del dispositivo:

T:  Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 44 Spd=5000 MxCh= 0
D:  Ver= 3.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
P:  Vendor=067b ProdID=2773 Rev=01.00
S:  Manufacturer=Prolific Technology Inc.
S:  Product=ATAPI-6 Bridge Controller
S:  SerialNumber=0123456789000000005
C:  #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=96mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=84(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms

Asegúrese de utilizar una versión reciente. La versión proporcionada con Ubuntu 22.04 no incluye todos los dispositivos.

información relacionada