lsusb 출력의 항목이 해당 장치 노드를 찾습니다


0

lsusbUSB가 dd최고 속도로 작동 하는지 알아야하는 USB 연결 유형을 결정하는 데 사용해야 합니다 . 이 작업을 수행하려면을 읽어야 lsusb -t하지만 출력에는 각 항목이 어떤 장치 노드에 해당하는지 알려주지 않습니다. 어떻게 알 수 있습니까?


이것이 "dd 더 빨라짐"에 연결된 경우 : 한계는 저장 매체의 쓰기 속도로, 대부분의 USB 속도보다 훨씬 느립니다. 따라서 USB 속도가 정상인지 확인하더라도 도움이되지 않습니다. 한계는 여전히 저장 매체의 쓰기 속도입니다.
dirkt

답변:


1

lsusb -t는 "Dev X"를 나열하는 트리를 제공하는 것으로 보입니다. 이는 표준 "lsusb"목록의 "00X"장치에 해당합니다.

또 다른 대안은 "장치의 현재 속도에 대한 구성 설명자를 포함"하는 lsusb -v를 사용하는 것입니다.


lsusb -t마지막에 특정 장치의 속도 를 포함 한다고 언급해야합니다 (480M / 12M / 5000M).
dirkt

1

나는 이것을 잠시 동안 고민해 왔으며, 여기 lsusb 출력을 / sys에 매핑하기 위해 작성한 스크립트가 있습니다. 그것은 나를 위해 작동하는 것 같지만 아직 광범위하게 테스트하지 않았습니다.

(참고 :이 형식을별로 운이 좋지 않으므로 줄 바꿈이나 다른 것을 추가해야 할 수도 있습니다)

#!/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

1
사용을 [ … -a … ]권장하지 않습니다. 당신은 말해야 if [ "$prod" = "$product" ] && [ "$vend" = "$vendor" ]합니다.
G-Man

한숨 .. 언어 경찰이 다시 파업.
Joe


0

이것은 내 시스템 의 lsusb -t 출력입니다 .

    # lsusb -t
    / : 버스 04. 포트 1 : Dev 1, 클래스 = root_hub, 드라이버 = ehci-pci / 2p, 480M
        | __ 포트 1 : 개발자 2, 0 인 경우 클래스 = 허브, 드라이버 = 허브 / 6p, 480M
    / : 버스 03. 포트 1 : Dev 1, 클래스 = root_hub, 드라이버 = ehci-pci / 2p, 480M
        | __ 포트 1 : 개발자 2, 0 인 경우 클래스 = 허브, 드라이버 = 허브 / 6p, 480M
            | __ 포트 3 : Dev 3, 0 인 경우 클래스 = 무선, 드라이버 = btusb, 12M
            | __ 포트 3 : Dev 3, 1 인 경우, 클래스 = 무선, 드라이버 = btusb, 12M
    / : 버스 02. 포트 1 : Dev 1, 클래스 = root_hub, 드라이버 = xhci_hcd / 4p, 5000M
        | __ 포트 3 : Dev 2, 0 인 경우 클래스 = 대용량 스토리지, 드라이버 = usb- 스토리지, 5000M
    / : 버스 01. 포트 1 : Dev 1, 클래스 = root_hub, 드라이버 = xhci_hcd / 4p, 480M
        | __ 포트 1 : Dev 2, 0 인 경우 Class = Human Interface Device, Driver = usbhid, 12M
        | __ 포트 1 : 개발자 2, 1 인 경우, 클래스 = 휴먼 인터페이스 장치, 드라이버 = usbhid, 12M
        | __ 포트 1 : Dev 2, If 2, Class = Human Interface Device, Driver = usbhid, 12M
        | __ 포트 2 : Dev 3, 0 인 경우 클래스 = 공급 업체 특정 클래스, 드라이버 = asix, 480M

유일한 대용량 저장 장치는 버스 02, 포트 03에 있으며 xhci_hcd 드라이버가 제공 합니다.이 드라이버는 USB3.0 장치에 적합한 Linux 드라이버입니다. 내가 아는 한,이 si는 속도를내는 유일한 참고 자료입니다.

위의 내용은 다음과 같이 다시 확인할 수 있습니다. 블록 장치를 검색하고 있으므로 / sys / class / block 으로 이동하십시오.

# 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

sdb 블록 장치에 관심이 있다고 가정하면 다음과 같이 버스 주소를 결정합니다.

# 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

이 (bus2, 포트 3)는 위와 동일합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.