Descobre em qual nó do dispositivo uma entrada na saída lsusb corresponde

0

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?

    
por Melab 19.04.2017 / 03:13

4 respostas

1

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".

    
por 19.04.2017 / 07:25
0

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.

    
por 19.04.2017 / 06:55
0

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.

    
por 19.04.2017 / 13:09
0

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
    
por 23.09.2017 / 22:16

Tags