Ubuntu / Debian如何识别设备的USB端口

时间:2017-02-23 07:58:51

标签: ubuntu raspberry-pi debian usb

如何识别单个USB设备以解除绑定并绑定它们?具体而言,鼠标,键盘,加密狗等设备不存储。

例如,在Debian(本例中为Raspbian GNU / Linux v8.0)上,我在/ sys / bus / usb / drivers / usbhid /中列出了一些设备:

ls / sys / bus / usb / drivers / usbhid / 显示USB设备:

1-1.2:1.0  1-1.2:1.1  1-1.2:1.2  1-1.3:1.0  1-1.3:1.1  1-1.4:2.2

lsusb 显示:

Bus 001 Device 006: ID 1410:9020 Novatel Wireless
Bus 001 Device 009: ID 045e:00db Microsoft Corp. Natural Ergonomic Keyboard 4000 V1.0
Bus 001 Device 008: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

lsusb -t 显示:

/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
        |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
        |__ Port 2: Dev 8, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 2: Dev 8, If 1, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 2: Dev 8, If 2, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 3: Dev 9, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 3: Dev 9, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 4: Dev 6, If 0, Class=Communications, Driver=cdc_ether, 480M
        |__ Port 4: Dev 6, If 1, Class=CDC Data, Driver=cdc_ether, 480M
        |__ Port 4: Dev 6, If 2, Class=Human Interface Device, Driver=usbhid, 480M

我知道 Novatel Wireless 1-1.4:2.2 来自猜测。

然后我可以通过运行 echo -n'1-1.4:2.2'>来重置它。 / sys / bus / usb / drivers / usbhid / unbind echo -n'1-1.4:2.2'> / SYS /总线/ USB /驱动/ USBHID /结合

如果有一种明显的方法来识别它并在bash脚本中重置它会很棒。另外,如果不同端口上有多个相同的硬件,如何识别和重置设备?

1 个答案:

答案 0 :(得分:0)

这两种信息都在/dev/sys/class目录中。

您可以使用ls -l /sys/class/xxx xxx替换您要查询的设备类别

ls -l /sys/class/block

/sys/devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3:1.0/host251/target251:0:0/251:0:0:0/block/sdb/sdb1

问题是您必须知道您要查找的设备,即有名称或总线编号,但您可以通过lsusb获取此信息或用于特定设备类的命令,即{{1} (一个LTE调制解调器通常作为RNDIS主机实现,并在ip link中显示为ip link),usb0,...

任何 USB 设备lsblk --output NAME,KNAME,FSTYPE,MOUNTPOINT,RM,UUID都会输出USB端口和udev路径

您的Novatel Wireless(以太网overnet)将在ls - l /sys/class/xxx 您还可以使用sys/class/ǹetvendorid

来识别设备

如果您需要更多信息,可以使用productID

udevadm

sudo udevadm info --query=all --attribute-walk --path=/devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3:1.0/host251/target251:0:0/251:0:0:0/block/sdb/sdb1

另一种可能性是使用run looking at device '/devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3:1.0/host237/target237:0:0/237:0:0:0/block/sdb/sdb1': KERNEL=="sdb1" SUBSYSTEM=="block" DRIVER=="" ATTR{partition}=="1" ATTR{start}=="64" ATTR{size}=="62517184" ATTR{ro}=="0" ATTR{alignment_offset}=="0" ATTR{discard_alignment}=="0" ATTR{stat}==" 156 7 1304 132 0 0 0 0 0 128 128" ATTR{inflight}==" 0 0" 然后附加设备

https://unix.stackexchange.com/questions/116664/map-physical-usb-device-path-to-bus-device-number-returned-by-lsusbhttps://unix.stackexchange.com/questions/74513/udev-how-do-you-identify-the-physical-device-that-a-sys-device-belongs-to

鼠标(输入设备)试试

udevadm monitor