O lsusb -t parece fornecer uma árvore que lista "Dev X" - isso corresponde ao dispositivo "00X" em uma listagem padrão "lsusb".
Outra alternativa seria usar o lsusb -v que "inclui descritores de configuração para a velocidade atual do dispositivo".
Eu preciso usar lsusb
para determinar o tipo de conexão USB que meu USB precisa saber se dd
está funcionando na velocidade máxima. Eu li que para fazer isso eu preciso usar lsusb -t
, mas a saída não me diz qual nó de dispositivo corresponde a cada entrada. Como eu entendo isso?
O lsusb -t parece fornecer uma árvore que lista "Dev X" - isso corresponde ao dispositivo "00X" em uma listagem padrão "lsusb".
Outra alternativa seria usar o lsusb -v que "inclui descritores de configuração para a velocidade atual do dispositivo".
Tanto quanto sei, não existe um único comando ou utilitário que forneça as informações. Você precisa vasculhar as informações em /sys
. Consulte link para obter mais informações.
Esta é a saída de lsusb -t para o meu sistema:
# lsusb -t /: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M |__ Port 3: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M |__ Port 3: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M |__ Port 3: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M |__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 12M |__ Port 1: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 12M |__ Port 1: Dev 2, If 2, Class=Human Interface Device, Driver=usbhid, 12M |__ Port 2: Dev 3, If 0, Class=Vendor Specific Class, Driver=asix, 480M
O único dispositivo de armazenamento em massa está localizado no Bus 02, Porta 03, e é servido pelo driver xhci_hcd , que é o driver Linux adequado para dispositivos USB3.0. Para o melhor do meu conhecimento, esta é a única referência que você encontrará para acelerar, aqui.
Os itens acima podem ser verificados duas vezes da seguinte maneira. Como você está procurando um dispositivo block , vá para / sys / class / block , onde você pode encontrar:
# cd /sys/class/block/
root@debS:/sys/class/block# ls
loop0 loop2 loop4 loop6 sda sda2 sda6 sdb
loop1 loop3 loop5 loop7 sda1 sda5 sda7 sdb1
Supondo que você esteja interessado no dispositivo de bloco sdb , agora você determina o endereço do barramento da seguinte forma:
# cd sdb; cd $(realpath $PWD); echo $PWD
/sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.0/host6/target6:0:0/6:0:0:0/block/sdb
Isso (bus2, porta 3) pula com o acima.
Eu tenho trabalhado com isso por um tempo, aqui está um script que eu criei para mapear a saída do lsusb para / sys. Parece funcionar para mim, mas ainda não testei extensivamente.
(Nota: Eu não estou tendo muita sorte de formatar isso, então você pode ter que adicionar algumas novas linhas ou qualquer outra coisa)
#!/bin/bash
#
# usb2sys - find lsusb device in /sys file system
#
die()
{
echo "$@"
exit 1
}
[[ $# -lt 1 ]] && die "need vendor and product ids (from lsusb) as dddd:dddd"
vendor=${1%:*}
product=${1##*:}
sys=/sys/bus/usb/devices/
cd $sys
for d in *; do
path=$sys/$d
if [ -f $path/idProduct ]; then
prod=$( cat $path/idProduct )
vend=$( cat $path/idVendor )
if [ $prod = $product -a $vend = $vendor ]; then
echo prod = $prod
echo vend = $vend
echo /sys device is $path
cat $path/power/wakeup
echo ""
fi
fi
done