답변:
나는 이것을 잠시 동안 고민해 왔으며, 여기 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
[ … -a … ]
권장하지 않습니다. 당신은 말해야 if [ "$prod" = "$product" ] && [ "$vend" = "$vendor" ]
합니다.
내가 아는 한 정보를 제공하는 단일 명령이나 유틸리티는 없습니다. 아래 정보를 찾아야합니다 /sys
. 자세한 내용은 https://stackoverflow.com/questions/3493858/linux-how-to-map-a-blockdevice-to-a-usb-device 를 참조하십시오.
이것은 내 시스템 의 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)는 위와 동일합니다.