![Como posso ter certeza de que conectei um dispositivo a uma porta USB 3?](https://rvso.com/image/1415053/Como%20posso%20ter%20certeza%20de%20que%20conectei%20um%20dispositivo%20a%20uma%20porta%20USB%203%3F.png)
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/devices
conteúdo do idVendor
arquivo 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 idVendor
por speed
e 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, idProduct
também poderá verificar o conteúdo. Se você tem váriosidênticodispositivos, procure o conteúdo de serial
também.
Responder3
Minha experiência é que o lsusb -D
comando 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.00
que 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 idProduct
linha continha algum texto de aconselhamento/marketing sobre 6Gb/s
o 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.
- Desconecte o dispositivo
- Inicie o roteiro. Ele pedirá para conectar o dispositivo e pressione ENTER
- Conecte o dispositivo
- Pressione Enter
- 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.