![¿Cómo puedo estar seguro de que he conectado un dispositivo a un puerto USB 3?](https://rvso.com/image/1415053/%C2%BFC%C3%B3mo%20puedo%20estar%20seguro%20de%20que%20he%20conectado%20un%20dispositivo%20a%20un%20puerto%20USB%203%3F.png)
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/devices
directorio para ver el contenido del idVendor
archivo, 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 idVendor
con speed
y 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, idProduct
también puede consultar el contenido. Si tienes variosidénticodispositivos, busque el contenido de serial
también.
Respuesta3
Mi experiencia es que el lsusb -D
comando 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.00
que 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 idProduct
línea contenía algún texto de asesoramiento/marketing sobre 6Gb/s
el 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.
- Desconecta el dispositivo
- Inicie el guión. Le pedirá conectar el dispositivo y presione ENTER
- Conecte el dispositivo
- Presione ENTRAR
- 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.