Como posso ter certeza de que conectei um dispositivo a uma porta USB 3?

Como posso ter certeza de que conectei um dispositivo a uma porta USB 3?

Tenho várias portas USB no meu computador, algumas USB 2 e outras USB 3. Quero conectar um dispositivo a uma porta USB 3. Infelizmente, eles são todos pretos, então não posso usar a regra prática usual “as portas USB 3.0 são azuis”.

Esta é uma caixa Linux, então há alguma maneira de saber se conectei o dispositivo a uma porta USB 3, talvez usando algum utilitário de linha de comando ou inspecionando algumas mensagens do kernel?

Responder1

Você pode determinar a versão USB executandolsusb

  • 12M = 12MBit/s = USB1
  • 480M = 480MBit/s = USB2
  • 5000M = 5000MBit/s = USB3.0, também conhecido como USB3.1 geração. 1
  • 10000M = 10000MBit/s = geração USB3.1. 2

Tente usar algo como:

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

O USB 2.00/3.00 corresponde ao USB 2.0/3.0

Talvez até tente usarlsusb -t

A primeira tabela de conversão ajudará você a determinar a versão USB.

Dê uma olhadaESSElink para mais exemplos.

Responder2

Como observaram @MarkHu e @Matthew, a resposta atualmente aceita (lsusb -D) tem o potencial de ser enganosa, pois lista as velocidades suportadas pelo dispositivo, não a velocidade real. Ou pelo menos não consegui usar sua saída para encontrar a velocidade atual do dispositivo.

Faz diferença se é uma porta USB 3 se não negocia velocidades USB 3?

Observar a velocidade real em uma máquina Linux é um pouco complicado; lsusb não parece oferecer, no momento, uma solução pronta para uso. Foi isso que descobri que estava funcionando. Primeiro, liste todos os seus dispositivos e hubs conectados para identificar seu 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

No meu caso, estou analisando a velocidade do meu disco WD MyBook externo. Portanto, a linha interessante é:

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

Mas parece que a parte "Bus 001 Device 004" não é útil para encontrar a velocidade atual do dispositivo. Em vez disso, precisamos dos dois números separados por dois pontos 1058:25ee, o ID do fornecedor e o ID do produto para tal dispositivo.

Agora você deve verificar o /sys/devicesconteúdo do idVendorarquivo no diretório, procurando o ID do fornecedor acima (substitua 1058 pelo seu próprio ID do fornecedor)

> 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

Agora pegue o caminho de saída acima aqui e substitua idVendorpor speede observe seu conteúdo:

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

Desta forma você está descobrindo uma conexão USB 2.0 de 480 Mbps.

Se você tiver vários dispositivos conectados, idProducttambém poderá verificar o conteúdo. Se você tem váriosidênticodispositivos, procure o conteúdo de serialtambém.

Responder3

Minha experiência é que o lsusb -Dcomando pode ser enganoso se relatar "recursos" não habilitados no momento pelo tipo de tomada ao qual seu dispositivo está conectado. Veja abaixo o exemplo de saída filtrada (toda a saída sudo lsusb -D ${USB_DEVICE_PATH}tinha mais de 80 linhas). Neste exemplo, deduzo bcdUSB 3.00que deveria implicar Device can operate at SuperSpeed (5Gbps)- embora essa linha ainda estivesse presente quando conectei minha unidade a uma tomada USB 2 para comparação.

$ 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)

Observe também que a idProductlinha continha algum texto de aconselhamento/marketing sobre 6Gb/so qual não deve ser interpretado como uma velocidade alcançável.

Comando curto alternativo que pode ser mais ú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

Responder4

Se você quiser descobrir a velocidade real da conexão (em oposição às capacidades relatadas por lsusb), você pode ler os arquivos de "velocidade" em /sys/devices. Supondo que você possa conectar e desconectar o dispositivo livremente, você pode usar o script a seguir para tornar o processo semiautomático. Outro script para obter uma lista completa é descrito abaixo.

  1. Desconecte o dispositivo
  2. Inicie o roteiro. Ele pedirá para conectar o dispositivo e pressione ENTER
  3. Conecte o dispositivo
  4. Pressione Enter
  5. O script informa a velocidade de conexão correspondente:
/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2/speed    480

Ou:

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

Aqui estão as velocidades possíveis, em Mbit/s:

  • 1,5 = USB 1.0/baixa velocidade
  • 12 = USB 1.1/Velocidade Total
  • 480 = USB 2.0/alta velocidade
  • 5000 = USB 3.0/SuperSpeed
  • 10000 = USB 3.1/SuperSpeed

E aqui está o roteiro. Eu chamo isso 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"

Se preferir ter uma visão geral de todos os dispositivos e respectivas velocidades, você pode usar o seguinte script. Eu chamo isso 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"

Por padrão, os dispositivos serão exibidos na ordem em que são encontrados em/sys/devices. Se quiser classificá-los por velocidade, você pode combiná-lo com 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 

Aqui o teclado está conectado a uma velocidade muito baixa (1,5), o que é normal, e o dock de disco rígido USB (ATAPI-6 Bridge Controller) está conectado a 5000 MBit/s.

Outra forma de listar os dispositivos e suas velocidades é o script "usb-devices" fornecido porusbutilse instalado por padrão por algumas distribuições. É mais genérico, mas também muito detalhado. Ele informa a velocidade na primeira linha da descrição do 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

Certifique-se de usar uma versão recente. A versão fornecida com o Ubuntu 22.04 não lista todos os dispositivos.

informação relacionada